Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
使用每像素openCL修改openGL纹理的最快方法_Opengl_Textures_Opencl_Share - Fatal编程技术网

使用每像素openCL修改openGL纹理的最快方法

使用每像素openCL修改openGL纹理的最快方法,opengl,textures,opencl,share,Opengl,Textures,Opencl,Share,使用OpenGL4.4和OpenCL2.0,假设我只想修改每帧纹理的特定像素 实现这一目标的最佳方式是什么? 我应该共享哪个对象? 我只能修改有限数量的像素吗? 我只想要GPU操作 首先,目前还没有OpenCL2.0驱动程序;该规范直到最近才最终确定,而且可能要到2014年才能实现 同样,许多OpenGL实现还没有达到4.4 但是,您仍然可以使用OpenCL1.2(或1.1,因为NVIDIA在OpenCL支持方面落后于业界)和当前的OpenGL实现来做您想做的事情 寻找OpenCL/OpenGL

使用OpenGL4.4和OpenCL2.0,假设我只想修改每帧纹理的特定像素

实现这一目标的最佳方式是什么? 我应该共享哪个对象? 我只能修改有限数量的像素吗?
我只想要GPU操作

首先,目前还没有OpenCL2.0驱动程序;该规范直到最近才最终确定,而且可能要到2014年才能实现

同样,许多OpenGL实现还没有达到4.4

但是,您仍然可以使用OpenCL1.2(或1.1,因为NVIDIA在OpenCL支持方面落后于业界)和当前的OpenGL实现来做您想做的事情

寻找OpenCL/OpenGL互操作示例,但基本上:

  • 从OpenGL上下文创建OpenCL上下文
  • 从OpenGL纹理创建OpenCL图像
  • 将OpenGL渲染到纹理中后,获取OpenCL的图像,运行OpenCL内核,只更新要更新的特定像素,然后将其释放回OpenGL
  • 将纹理绘制到屏幕上
  • OpenCL内核通常是2D的,并且处理每个像素,但是您可以运行一个1D内核,其中每个工作项根据某种算法更新一个像素。只需确保不要从多个工作项中写入相同的像素,否则将出现竞争条件