OpenGL渲染来自单个VBO的多个条带

时间:2014-03-03 17:47:45

标签: opengl

我有一个计算着色器为我生成数十万个路径(例如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'顶点”的功能。

1 个答案:

答案 0 :(得分:0)

由于您从SSBO而不是VBO中提取顶点数据,并且每个路径具有相同数量的顶点,因此您可能需要无属性实例渲染吗?

绑定一个空的VAO并调用glDrawArraysInstanced(GL_LINE_STRIP, 0, 128, n)(其中n是路径数)。在顶点着色器中,计算gl_InstanceID * 128 + gl_VertexID以获取SSBO中当前顶点的索引。

相关问题