OpenGL ES中的绘图问题

时间:2010-12-29 05:13:55

标签: iphone objective-c opengl-es

在我的应用程序中,我有一个红色正方形(实际上是两个三角形)被绘制到屏幕上。然而,如果用户轻敲屏幕或移动他们的手指,则绘图变得混乱并使正方形开始绘制似乎是随机图案。知道为什么会这样吗?代码:

Triangle3D  *triangles = malloc(sizeof(Triangle3D) * 2);
triangles[0].v1 = Vertex3DMake(x, y, -3.0);
triangles[0].v2 = Vertex3DMake(x+1.0, y-1.0, -3.0);
triangles[0].v3 = Vertex3DMake(x-1.0, y-1.0, -3.0);
triangles[1].v1 = Vertex3DMake(x-1.0, y-1.0, -3.0);
triangles[1].v2 = Vertex3DMake(x+1.0, y-1.0, -3.0);
triangles[1].v3 = Vertex3DMake(x, y-2.0, -3.0);

    glLoadIdentity();

    glClearColor(0.7, 0.7, 0.7, 1.0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnableClientState(GL_VERTEX_ARRAY);
    glColor4f(1.0, 0.0, 0.0, 1.0);
    glVertexPointer(3, GL_FLOAT, 0, triangles);
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 18);
    glDisableClientState(GL_VERTEX_ARRAY);
    glClearColor(0.7, 0.7, 0.7, 1.0);

2 个答案:

答案 0 :(得分:3)

Triangle Strip的vetcies应该像这张图一样排列。 TRIANGLE_STRIP

其他形式。

Figure 1

答案 1 :(得分:2)

您似乎将triangles[1].v1设置为3次而不是设置triangles[1].v1, v2, & v3