Iphone 在图形GL_点和GL_三角形之间切换

Iphone 在图形GL_点和GL_三角形之间切换,iphone,objective-c,opengl-es,opengl-es-2.0,Iphone,Objective C,Opengl Es,Opengl Es 2.0,我编写了一个简单的iphone程序,它绘制一个立方体,在屏幕视图中,绘制模式在用户点击之间切换 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glUseProgram(_program); glBindVertexArrayOES(_vertexArray); glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJE

我编写了一个简单的iphone程序,它绘制一个立方体,在屏幕视图中,绘制模式在用户点击之间切换

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glUseProgram(_program);

glBindVertexArrayOES(_vertexArray);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);
glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);
if (_drawGLPointsMode)
    glDrawElements(GL_POINTS, sizeof(CubeIndices)/sizeof(CubeIndices[0]), GL_UNSIGNED_BYTE, 0);
else
    glDrawElements(GL_TRIANGLES, sizeof(CubeIndices)/sizeof(CubeIndices[0]), GL_UNSIGNED_BYTE, 0);
在上面的代码中,drawGLPointsMode是一个BOOL,在轻敲之间会发生更改。我遇到的问题是,当使用GL_三角形绘制立方体时,不会绘制立方体。当切换到使用GL_点绘制时,它会起作用

有谁能帮我一下吗?我觉得我的代码有一个基本缺陷。提前谢谢

编辑:

glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(CubeVertices), CubeVertices, GL_STATIC_DRAW);

glGenBuffers(1, &_vertexIndexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _vertexIndexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(CubeIndices), CubeIndices, GL_STATIC_DRAW);

我还尝试将GL_静态图更改为GL_动态图,但得到了相同的结果。此外,如果我在iphone模拟器中运行当前代码,那么一切正常,只有在实际设备(iphone 4S)上运行时,我才会看到这个问题。谢谢

你能看看这个电话是否返回一个GL_无效的东西吗?谢谢你的回复。glGetError()返回0。能否显示填充顶点数组和索引缓冲区的代码段?是否确定绘图元素中的GL_UNSIGNED_字节?可能是GL_UNSIGNED_SHORT吗?@MrPeru,这不是我的意思,如果我不清楚的话,很抱歉。我指的是你用顶点和索引缓冲区填充的实际数据。如果点起作用而三角形不起作用,这可能意味着索引缓冲区中的索引顺序错误,或者整个三角形设置被破坏。您能看到调用是否返回GL_INVALID_某物吗?谢谢您的回复。glGetError()返回0。能否显示填充顶点数组和索引缓冲区的代码段?是否确定绘图元素中的GL_UNSIGNED_字节?可能是GL_UNSIGNED_SHORT吗?@MrPeru,这不是我的意思,如果我不清楚的话,很抱歉。我指的是你用顶点和索引缓冲区填充的实际数据。如果点起作用而三角形不起作用,这可能意味着索引缓冲区中的索引顺序错误,或者整个三角形设置被破坏。