我正在进行3D模拟(目前为2D),正在使用CUDA进行计算,并使用OpenGL进行渲染。我的问题与CUDA和OpenGL之间的互操作性有关。据我所知,有两种通用的方法可以做到这一点:
第一个是使用像素缓冲区对象(或顶点缓冲区对象),该对象将映射到CUDA全局内存,然后复制到OpenGL纹理。据说这是一种非常快速的方法。
第二个是将纹理对象直接复制到CUDA纹理存储器。从那时起我也可以使用所有的纹理记忆功能,例如纹理缓存等,这也将非常不错。
现在,有人可以向我解释这两种方法之间的一般区别是什么吗?每种情况下通常都在哪种情况下使用?