现在我正在进行大量的CPU密集型计算,以便在我非常复杂的数据结构中找到某些顶点集。一旦我“找到”这些,我就继续用WebGL渲染它们...... 我想在这里使用GPU作为“并行化”的手段。
我想知道是否有好的方法直接在着色器上处理这些数据并使用其结果来渲染东西。我需要它为着色器(制服!?)输入大量数组,并且可能保持着色器处理的每个顶点的计算结果不变。
将表示我的所有数据作为纹理输入到着色器中可能是个好主意。可以在纹理上“查找”吗?
我希望您理解我的问题并期待您对此的看法!
答案 0 :(得分:3)
您可以将纹理看作数据数组,并从该纹理中读取着色器,处理信息并将结果写入另一个纹理(挂钩到帧缓冲区)。如果你想在下一帧中使用结果,你可以简单地交换纹理。
这是一个很长很复杂的例子,它展示了如何使用着色器完全计算粒子:
http://i-am-glow.com/?page_id=183
您还可以在此处阅读代码,这些代码已完整记录:
http://empaempa.github.com/GLOW/examples/complicated/Complicated.js
希望有所帮助!