我正在开发一个应用程序,我将相机姿势传递给GPU,后者将生成包含关于对象的可见椎体的不同信息的纹理(法线深度......)基于这些信息,我想选择一些顶点然后去通过生成的纹理将这些顶点的所有信息检索到CPU中。
我做了一些阅读,最好的方法似乎是使用Trasform反馈。然而,许多人似乎不赞成像the last comment here或this blog并选择计算着色器。
Transform feedback机制不是你的解决方案。它有利于捕获GPU上的当前数据状态并更新它以进行GPU上的下一次绘制调用,而无需为了数据更新而执行GPU到CPU并返回乒乓。 Particles rendering是变换反馈的流行用例之一。您还没有说出您的目标平台是什么,因此很难理解您的硬件限制/功能,但是这里有几种方法可以下载主机(CPU)更新而不会拖延渲染管道:
我个人会选择2 +使用共享上下文和线程来持久映射指针以便读取数据。它有同步的复杂性,但如果做得对,可以提供非常快速的解决方案。