我以前通过以下步骤,能够在CUDA中填充纹理以供OpenGL使用:
我看到一些关于
PBO仍然是推荐的方法吗?如果不是,我该研究哪些替代方案?
(我具体针对Kepler及以上架构。)
- 创建和初始化GL纹理 (
gl::GenTextures()
等) - 创建GL像素缓冲区对象(Pixel Buffer Object, PBO)
- 将PBO与CUDA注册
- 使用PBO调用
cudaGraphicsMapResource()
- 启动核函数以更新PBO
- 使用
cudaGraphicsUnmapResource()
将PBO从CUDA中解除映射 - 加载GL程序、绑定纹理并按照正常流程进行渲染
- 重复以上步骤。
我看到一些关于
cudaTextureObject
和cudaSurfaceObject
的引用,但它们在OpenGL互操作中的作用不清楚。PBO仍然是推荐的方法吗?如果不是,我该研究哪些替代方案?
(我具体针对Kepler及以上架构。)