gpt4 book ai didi

ios - 在 opengl-es iOS 中建立索引

转载 作者:行者123 更新时间:2023-11-29 12:52:21 24 4
gpt4 key购买 nike

我打算尝试优化我的 VBO 以使用索引,而不是仅仅将所有顶点聚集在一起,但不知何故我无法使用 GL_INDEX_ARRAY。它只是说“使用未声明的标识符 GL_INDEX_ARRAY”,它甚至没有在 gl.h 中定义(我看过)。还有其他方法可以索引我的 VBO 吗?我使用此代码创建我的 VBO:

glGenVertexArraysOES(1, &vertexArray);
glBindVertexArrayOES(vertexArray);

glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*vertexDataSize, vertexData, GL_STATIC_DRAW);

glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 40, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 40, BUFFER_OFFSET(12));
glEnableVertexAttribArray(GLKVertexAttribColor);
glVertexAttribPointer(GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, 40, BUFFER_OFFSET(24));

起初我以为有一些 GLKVertexAttribIndex 但因为没有我猜我应该使用 glEnableClientState(GL_INDEX_ARRAY);但这显然不存在。那么我应该如何在我的 VBO 中使用索引数组呢?

最佳答案

使用 GL_ELEMENT_ARRAY_BUFFER 指示索引缓冲区。索引通常被定义为一个简短的,所以像这样:

glGenBuffers(1, &indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLshort)*indexDataSize, indexData, GL_STATIC_DRAW);

关于ios - 在 opengl-es iOS 中建立索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22116021/

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