我有一个计算机着色器,为我生成数十万条路径(例如,GL_LINE_STRIPs),每个路径的大小为128个。我把它们都存储在一个很大的SSBO中,我想渲染它们。
[x1 y1 x2 y2 ... x127 y127] //path 0
[x1 y1 x2 y2 ... x127 y127] //path 1
...
[x1 y1 x2 y2 ... x127 y127] //path n有什么好的方法来渲染这个吗?最初我考虑的是原始重启,但multiDrawArrays可能也能工作吗?我不想在抽签的同时发送成千上万的指数。
似乎在GPU上存储另一个数组以进行间接渲染也能工作吗?我只是想知道是否有某种类似于“原始重启每一个m‘点”的函数。
发布于 2014-03-03 18:17:01
既然您是从SSBO而不是VBO中提取顶点数据,而且每条路径都有相同数量的顶点,那么您可能需要更少的实例呈现吗?
绑定空的VAO并调用glDrawArraysInstanced(GL_LINE_STRIP, 0, 128, n) (其中n是路径数)。在顶点着色器中,计算gl_InstanceID * 128 + gl_VertexID以获得SSBO中当前顶点的索引。
https://stackoverflow.com/questions/22153681
复制相似问题