2

我写了一个简单的 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,它在 Taps 之间发生变化。我遇到的问题是,当使用 GL_TRIANGLES 绘制时,未绘制立方体。它在切换到使用 GL_POINTS 绘图时起作用。

谁能帮帮我,我觉得我的代码存在根本缺陷。提前致谢。

编辑:

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_STATIC_DRAW 更改为 GL_DYANMIC_DRAW,但我得到了相同的结果。此外,如果我在 iphone 模拟器中运行当前代码,一切正常,只有在实际设备(iphone 4S)上运行时,我才会看到这个问题。谢谢!

4

0 回答 0