【问题标题】:OpenGL Rendering Many Strips from Single VBOOpenGL 从单个 VBO 渲染许多条带
【发布时间】:2014-03-04 02:17:01
【问题描述】:

我有一个计算着色器为我生成数十万条大小为 128 的路径(例如 GL_LINE_STRIP)。我将它们全部存储在一个大的 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' 顶点的原始重启”之类的功能。

【问题讨论】:

    标签: opengl


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多