glDrawElements不会绘制所有几何体

时间:2014-11-30 19:27:07

标签: ios opengl-es-2.0 vuforia

我在Vuforia iOS示例中尝试绘制自定义模型时遇到了麻烦,但它只是OpengGLES 2.0代码。它有很多顶点(+ 100 K),但是对于测试我只是在我的片段着色器中分配一个自定义颜色,这个工作正常,用另一个模型测试。现在我不会使用VBO直到这个工作。

TESFPositions它是一个浮点数组:x,y,z,x,y,z ...... TESFIndices它是一个GLuint数组。

glUseProgram(shaderProgramID);
glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE, (const GLfloat*)&modelViewProjection.data[0]);
glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, TESFPositions);
glEnableVertexAttribArray(vertexHandle);
//glDrawArrays(GL_TRIANGLES, 0, TESFVertices); <-- Works fine
glDrawElements(GL_TRIANGLE_STRIP, sizeof(TESFIndices) / sizeof(GLuint), GL_UNSIGNED_INT, (GLvoid*)TESFIndices); <-- Some geometry is missing

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

由于索引缓冲区计数容量较小而导致溢出是一个常见问题。该索引很可能是一个16位无符号整数,导致最大索引可以超过65k(我相信65545)。

要解决此问题,请尝试将格式更改为更大的值,但要了解并非所有设备都支持大于16位的索引。如果不支持,您需要将模型分解为几个较小的模型。您可以在设计时或加载时执行此操作。

相关问题