我目前是OpenGL ES 2.0领域的新手,希望尽可能地了解绑定,缓冲区,着色器等.
截至目前,我只是想了解GL_ELEMENT_ARRAY_BUFFER和GL_ARRAY_BUFFER之间的差异,以及何时使用每个注释的预设.
我目前的理解使我相信GL_ELEMENT_ARRAY_BUFFER是专门用于所述三角形的索引,而另一个则是其他的.
有人可以详细说明为什么,如果这是正确的? GL_ELEMENT_ARRAY_BUFFER的处理方式不同?
解决方法
GL_ELEMENT_ARRAY_BUFFER用于指示您呈现的缓冲区包含“其他”(GL_ARRAY_BUFFER)缓冲区中每个元素的索引.
所以,作为一个非常基本的例子,只有顶点(没有其他数据),如果你有一个索引缓冲区:
{0,1,2}
{0,2,3}
数据缓冲区包含:
{{0,0},{1,{0,0}}
然后,当您调用glDrawElements时,它知道选择顶点0,1和2为第一个三角形,那么0,3为第二个(即:基本上是一个正方形).
当你有更多的复杂的模型,有很多顶点和面孔 – 尽可能多的面共享相同的顶点(因此您不需要“重新发送”相同的数据).
注意:上面的例子只显示了顶点 – 你可以插入尽可能多的数据(顶点颜色,法线,纹理坐标等).