搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小丑西瓜9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
pandas使用汇总--转载可以希望注明来源谢谢_pandas 一列的set flatten
2
win10系统可禁用的服务器,win10系统中哪些服务是可以禁用的
3
每日学习总结_学习各科每日总结
4
上手华为鸿蒙手表gt系列从准备到发布
5
4. mtklog分析_mtklog 生成properties
6
构建多种样式的弹窗_选择器弹框
7
C++基础知识之extern “C“的用法。_c++ extern "c
8
Assertion `t >= 0 && t < n_classes` failed.报错解决办法_assertion `t >= 0 && t < n_classes` failed.
9
华为鸿蒙系统荣耀X10,可以升级到鸿蒙OS的四款华为手机,相信都没有后悔入手!...
10
HW2021攻防演练经历碎碎念-见解_2021 hw
当前位置:
article
> 正文
OpenCL与OpenGL协作方法_opencl image2d 共享给opengl
作者:小丑西瓜9 | 2024-03-12 06:53:59
赞
踩
opencl image2d 共享给opengl
OpenCL和OpenGL都能用于操作GPU,但是前者主要用于通用计算,而后者主要用于图像渲染。在某些情况下,我们希望能用OpenCL计得到算图像,然后展示在显示器上。如果直接调用OpenGL的现有API,则需要把计算得到的结果通过pci-e总线传回host端内存,再由OpenGL再次通过pci-e总线传回gpu端显存。这样就造成了额外的拷贝,传输开销。事实上,可以使用OpenCL的OpenGL扩展功能,使得OpenCL和OpenGL能共享buffer,从而避免额外的传输。这种共享可以通俗的理解为是让OpenCL和OpenGL共享同一块内存的指针。
要实现这种共享需要三步:
1.OpenCL在OpenGL的上下文基础上创建上下文
//创建上下文的属性
cl_context_properties properties[] = {
CL_GL_CONTEXT_KHR, (cl_context_properties) wglGetCurrentContext(), //获得OpenGL上下文
CL_WGL_HDC_KHR, (cl_context_properties) wglGetCurrentDC(), //获得OpenGl设备信息
CL_CONTEXT_PLATFORM, (cl_context_properties) platform, //获得平台信息
0};
//利用刚刚创建的属性创建上下文
ctx = clCreateContext(properties, 1, &device, NULL, NULL, &err);
2.OpenCL在OpenGL内存对象的基础上创建内存对象
//以buffer为例,需要一个OpenGL的vbo才能创建共用的内存对象
cl_mem clCreateFromGLBuffer(cl_context context, cl_mem_flags flags,
GLuint vbo_desc, cl_int *err)
注意:OpenGL的内存对象必须先行创建,使用OpenCL中的image则需要OpenGL中的texture
3.共享内存对象的同步及访问
很显然OpenCL和OpenGL不能同时去访问同一个数据对象,需要加锁,解锁进行同步
//加锁
int clEnqueueAcquireGLObjects(cl_command_queue queue, cl_uint num_objects,
const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
const cl_event *event_wait_list, cl_event *event)
//加锁后在该处运行openCL代码
//解锁
int clEnqueueReleaseGLObjects(cl_command_queue queue, cl_uint num_objects,
const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
const cl_event *event_wait_list, cl_event *event)
做完这三步后,OpenGL即可直接使用共享的内存对象进行渲染及其他操作。
更加详细的信息请参考:
Understanding OpenCL-OpenGL Interoperability
OpenCL / OpenGL Interoperation 教程及实例
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小丑西瓜9/article/detail/222840
推荐阅读
article
OpenGL
ES 渲染
NV21
、
NV12
、
I420
、
YV12
、YUYV、UYVY、I444(建议...
本文主要讲解常见的 YUV 格式图像渲染方式,如果对 YUV 格式不是很熟悉的同学可以翻看旧文,YUV 格式的介绍这里不...
赞
踩
article
OpenGL
、
OpenCL
、
OpenCV
的区别与联系_
opencl
和
opengl
...
区别
OpenGL
(Open Graphics Library,开放图像库)是个定义了一个跨编程语言、跨平台的应用程序接口...
赞
踩
article
Qt,
OpenCV
与
OpenGL
协同作战:
图像处理
与三维
图形界面
的完美结合_qt
opengl
...
Qt,
OpenCV
与
OpenGL
协同作战:
图像处理
与三维
图形界面
的完美结合_qt
opengl
qt
opengl
...
赞
踩
article
OpenGL
、
WebGL
和
OpenCV
的介绍
和
区别对比_
opencv
与
opengl
区别...
和
opencv
类似,下载相应的库,就可以调用里面的接口来实现渲染功能。
OpenGL
规范描述了绘制2D
和
3D图形的抽象AP...
赞
踩
article
opencv,
opengl
,osg,
vulkan
,webgL,opencL,cuda,osg,
vtk
...
OpenCVOpenGLOpenSceneGraphVulkanWebGLOpenCLCUDADirectXDirect...
赞
踩
article
OpenCV
、
OpenGL
、
OpenCL
和
DirectX
的区别、联系、前景_
opencl
和open...
致敬:https://blog.csdn.net/zhongguoren666/article/details/6697...
赞
踩
article
opencv
:同时装多版本
opencv
的选用/
OPENGL
_
opencv
(
4.5
.2)
error
:...
参考:
opencv
CmakeLists.txt 小示例用这个the book "Mastering OpenCV wi...
赞
踩
article
OpenCV
、
OpenCL
、
OpenGL
区别_
opencl
和opengl区别...
今天在看
OpenCV
相关书籍的时候,突然发现对于
OpenCV
/
OpenCL
/
OpenGL
区别自己都不是很清楚,想必有很多...
赞
踩
article
OpenCV
与
OpenGL
的
区别
与关系
是
什么?_
cv
与cg
的
区别
...
OpenCV
与
OpenGL
的
区别
与关系
是
什么?_
cv
与cg
的
区别
cv
与cg
的
区别
老婆和...
赞
踩
article
OpenCV
,
OpenGL
,
OpenCL
,
OpenAL
,
OpenMP
…………还有多少OpenXX_o...
在过去利用GPU对图像渲染进行加速的技术非常成熟,因为GPU是典型的单指令多数据(SIMD)的体系结构,擅长大规模的并行...
赞
踩
article
OpenCV
/
OpenCL
/
OpenGL
区别_
opencl
opengl...
OpenCV
/
OpenCL
/
OpenGL
区别:
OpenGL
(全写Open Graphics Library)是个定义了一...
赞
踩
article
OpenCL
,
OpenGL
编译_
opengl
与
opencl
...
OpenCL
,
OpenGL
编译TVM已经支持多个硬件后端:CPU,GPU,移动设备等…添加了另一个后端:
OpenGL
/...
赞
踩
article
OpenCL
、
OpenGL
同时工作。_
mali
opengl
opencl
...
视频处理如果能使用
OpenCL
、
OpenGL
、omap将大量提高运算速度,简单介绍
OpenCL
、
OpenGL
同时工作。...
赞
踩
article
OpenCV
、
OpenCL
、
OpenGL
、OpenPCL_opencl
opengl
...
对于几个开源库的总结,作为标记,以前看过,现在开始重视起来!涉及:
OpenCV
,
OpenCL
,
OpenGL
,OpenPC...
赞
踩
article
通过
Autostereograms
案例学习
OpenGL
和
OpenCL
的
互操作性
...
2014-06-29 09:09728人阅读评论(0)收藏举报目录(?)[-]引言案例分析Autostereogram3...
赞
踩
article
OpenCL
、
OpenGL
和
DirectX
三者的区别_
opengl
direct
opencl
...
什么是
OpenCL
?
OpenCL
全称Open Computing Language,是第一个面向异构系统通用目的并行...
赞
踩
article
OpenCL
、
OpenGL
同时工作...
视频处理如果能使用
OpenCL
、
OpenGL
、omap将大量提高运算速度,简单介绍
OpenCL
、
OpenGL
同时工作。...
赞
踩
article
移动
端
GPU
推理
性能
提升 2 倍!
TensorFlow
推出新
OpenCL
后
端
...
本文转载自
TensorFlow
。文 / 软件工程师 Juhyun Lee 和 Raman SarokinTensorFl...
赞
踩
article
OpenGL
与
OpenCL
是
何关系?_
opencl
opengl
...
版权声明:belongs to tony2278 https://blog.csdn.net/tony2278/arti...
赞
踩
article
使用
OpenCL
在
OpenGL
中将
图像
渲染
为纹理_
opencl
+
opengl
...
而
OpenGL
是一种强大的图形
渲染
库,它提供了丰富的
渲染
功能和接口。同时,确保在使用
OpenCL
和
OpenGL
时正确处理...
赞
踩
相关标签
OpenGLES
图形渲染
着色器
opencv
图像处理
人工智能
openCL
qt
开发语言
linux
c++
qt5
webgl
计算机图形学
opengl
opencl
directx
OpenCV
OpenGL
计算机视觉
python