ios – OpenGL – 为什么GL_ELEMENT_ARRAY_BUFFER的索引?

前端之家收集整理的这篇文章主要介绍了ios – OpenGL – 为什么GL_ELEMENT_ARRAY_BUFFER的索引?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前是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为第二个(即:基本上是一个正方形).

当你有更多的复杂的模型,有很多顶点和面孔 – 尽可能多的面共享相同的顶点(因此您不需要“重新发送”相同的数据).

注意:上面的例子只显示了顶点 – 你可以插入尽可能多的数据(顶点颜色,法线,纹理坐标等).

猜你在找的iOS相关文章