gpt4 book ai didi

OpenGL - 为什么 GL_ELEMENT_ARRAY_BUFFER 用于索引?

转载 作者:行者123 更新时间:2023-12-03 14:35:48 24 4
gpt4 key购买 nike

我目前是 OpenGL ES 2.0 领域的新手,想尽可能多地了解绑定(bind)、缓冲区、着色器等。

到目前为止,我只是想了解 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, 0}, {1, 0, 0}, {1, 1, 0}, {0, 1, 0}}
然后,当您调用 glDrawElements 时,它知道为第一个三角形挑选顶点 0、1 和 2,然后为第二个三角形挑选顶点 0、2、3(即:基本上是一个正方形)。

当您拥有具有大量顶点和面的更复杂的模型时,这将变得更加有用 - 因为许多面将共享相同的顶点(因此您不需要“重新发送”相同的数据)。

注:上面的例子只显示了顶点——你可以在那里交错尽可能多的数据(顶点颜色、法线、纹理坐标等)。

关于OpenGL - 为什么 GL_ELEMENT_ARRAY_BUFFER 用于索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com