Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 我为什么要使用Apple';s用于OpenCL和OpenGL互操作性的CGLShareGroup_Macos_Opengl_Opencl_Gpgpu - Fatal编程技术网

Macos 我为什么要使用Apple';s用于OpenCL和OpenGL互操作性的CGLShareGroup

Macos 我为什么要使用Apple';s用于OpenCL和OpenGL互操作性的CGLShareGroup,macos,opengl,opencl,gpgpu,Macos,Opengl,Opencl,Gpgpu,由于OpenCL内置了与OpenGL共享数据的支持,我想知道我是否应该使用苹果的CGLShareGroup来创建我的OpenCL上下文(如上所述),或者我是否可以使用标准OpenCL API创建OpenCL上下文并与OpenGL共享数据,而不会丢失任何内容 请注意,我使用的是标准OpenCL API,而不是Applegcl.*API。尽管互操作API是相同的,无论平台如何(例如,clEnqueueAcquireOpenGL对象),但创建互操作OpenCL上下文的方法是特定于操作系统的。在Appl

由于OpenCL内置了与OpenGL共享数据的支持,我想知道我是否应该使用苹果的CGLShareGroup来创建我的OpenCL上下文(如上所述),或者我是否可以使用标准OpenCL API创建OpenCL上下文并与OpenGL共享数据,而不会丢失任何内容


请注意,我使用的是标准OpenCL API,而不是Apple
gcl.*
API。

尽管互操作API是相同的,无论平台如何(例如,clEnqueueAcquireOpenGL对象),但创建互操作OpenCL上下文的方法是特定于操作系统的。在Apple上使用CGLShareGroup。请参阅OpenCL 1.1规范中的“9.7从GL上下文或共享组创建CL上下文”一节。

但即使我在没有CGLShareGroup的情况下创建上下文,它也可以工作。那么使用CGLShareGroup有什么好处呢?很有趣。这似乎超出了规范和示例的范围,因此其优势在于规范遵从性和未来的稳定性。此外,您当前的技术可能无法适用于所有CL/GL驱动程序组合(例如,您是否尝试过AMD、NVIDIA和Intel GPU机器?)事实上,我是通过iSurface实现的:我从一个iSurface开始,我使用
clcreateImagefromiSurface2dapple
从它创建OpenCL图像,然后使用
CGLTexImageIOSurface2D
从IOSurface创建GLTexture。这是有据可查的。据我所知,这在10.9上非常有效,并且不涉及引擎盖下的记忆处理。我说的对吗?对不起,我没有使用IOSurface,只有OpenGL/OpenCL互操作,所以我帮不了你。你所做的听起来很合理。