阅读后this文章我想尝试做同样的事情,但为了加速我希望在 GPU 上执行的渲染部分,不用说为什么三角形或任何其他几何对象应该在 GPU 而不是 CPU 上渲染。
这是该过程的一张很好的图片:
任务:
渲染的“顶点集”和蒙娜丽莎图像之间的像素(蒙娜丽莎位于 GPU 上的纹理或 PBO 没有太大区别)
问题:
将 OpenCL 或 Cuda 与 OpenGL FBO(帧缓冲对象)扩展一起使用时。
在这种情况下,根据我们的任务
渲染的“顶点集”和蒙娜丽莎图像之间的像素( 由 OpenCL 或 Cuda 处理 )
所以在这种情况下,我被迫从 FBO 复制到 PBO(像素缓冲区对象)以获得可用于 OpenCL/Cuda 的渲染“顶点集”。我知道设备到设备内存复制的速度有多快,但根据我需要进行数千次这些复制的事实,不这样做是有道理的......
这个问题留下三个选择:
问题
任何人都可以帮助我为上述过程编写着色器,或者指出在没有 FBO 副本的情况下将蒙娜丽莎渲染到 PBO 的方法...
最佳答案
我的直觉是着色器方法也会有同样的 IO 问题,只要 GPU 支持 PS 4.0 或更高版本,你当然可以在着色器中比较纹理;但是你首先还是得把源纹理(蒙娜丽莎)放到设备上。
编辑:一直在挖掘,这个论坛帖子可能会提供一些见解:
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=221384&page=1 .
海报 Komat 提供了第 2 页上的着色器示例。
关于opengl - 将蒙娜丽莎渲染为 PBO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730980/