我以前能够在CUDA中填充纹理,以便在OpenGL中使用:
gl::GenTextures()
等)在更新/渲染循环中:
cudaGraphicsMapResource()
与PBO cudaGraphicsUnmapResource()
来自CUDA的PBO 但是,我想知道PBO是否仍然是从内核编写纹理的最佳方式。我发现this one(updated for v5 here)之类的文章似乎根本没有使用公益组织。
我已经看到了对cudaTextureObject
和cudaSurfaceObject
的一些引用,但我们不清楚它们在OpenGL互操作中的作用。
PBO仍然是推荐的方法吗?如果没有,我应该调查哪些替代方案?
(我专门针对开普勒和更新的架构。)
答案 0 :(得分:2)
您可以在CUDA 6 SDK的官方示例中看到,它被称为" simpleCUDA2GL" in" 3_Imaging"目录。 它有两种不同的方法来访问CUDA内核中的纹理。 其中一个(我认为旧的)使用PBO,它在我的机器上慢了3倍。
答案 1 :(得分:2)
您可能想看一下NVIDIA最近的CUDA GL Interop示例:
https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st