使用VBO在OpenGL中渲染人群

时间:2014-12-02 02:04:07

标签: opengl vbo

我试图在OpenGL中渲染大量相同网格的副本。我知道我可以使用带有索引缓冲区的小顶点缓冲区,但每个副本都有它自己的转换矩阵。我想将每个矩阵传递到我的着色器,但属于同一副本的顶点将使用相同的矩阵。因此,矩阵缓冲区将比顶点缓冲区短。

网格有4个顶点,所以我需要以某种方式每四个顶点发送一个新矩阵。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用实例渲染:https://www.opengl.org/sdk/docs/man/html/glDrawArraysInstanced.xhtml

https://www.opengl.org/sdk/docs/man3/xhtml/glDrawElementsInstanced.xml

您可以创建一个填充了每个索引的所有转换矩阵的VBO。

将除数设置为4,以便在发送了四个顶点后矩阵发生变化:

https://www.opengl.org/sdk/docs/man3/xhtml/glVertexAttribDivisor.xml

您可以在顶点着色器中使用gl_instanceId来确定要渲染的实例,并且可以生成转换矩阵,而不是将每个转换矩阵发送到着色器。