C++ CUDA和x2B;没有弃用功能的OpenGL互操作
我以前能够通过以下方式在CUDA中填充纹理以用于OpenGL:C++ CUDA和x2B;没有弃用功能的OpenGL互操作,c++,opengl,cuda,interop,C++,Opengl,Cuda,Interop,我以前能够通过以下方式在CUDA中填充纹理以用于OpenGL: 创建并初始化GL纹理(GL::GenTextures()等) 创建GL像素缓冲区对象 向CUDA注册PBO 在更新/渲染循环中: cudaGraphicsMapResource()与PBO 启动内核以更新PBO cudaGraphicsUnmapResource()来自CUDA的PBO 加载GL程序,绑定纹理,渲染为法线 清洗,冲洗,重复 但是,我想知道PBO是否仍然是从内核编写纹理的最佳方式。我看过类似()的文章,它们似乎根本没有
GL::GenTextures()
等)cudaGraphicsMapResource()
与PBOcudaGraphicsUnmapResource()
来自CUDA的PBOcudaTextureObject
和cudaSurfaceObject
的引用,但我不清楚它们在OpenGL互操作中的作用
PBO仍然是推荐的方法吗?如果没有,我应该调查哪些备选方案
(我专门针对开普勒和更新的体系结构。)您可以在CUDA 6 SDK的官方示例中看到,它在“3_Imaging”目录中被称为“simpleCUDA2GL”。 它有两种不同的方法来访问CUDA内核内部的纹理。
其中一个(我认为是旧的)使用PBO,在我的机器上速度慢了3倍。您可能想看看NVIDIA最近的CUDA GL互操作示例:
似乎此代码示例使用的是曲面参照,而不是曲面对象,就像原始海报所要求的那样。