在我的应用程序中,我有一个红色正方形(实际上是两个三角形)被绘制到屏幕上。然而,如果用户轻敲屏幕或移动他们的手指,则绘图变得混乱并使正方形开始绘制似乎是随机图案。知道为什么会这样吗?代码:
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);
答案 0 :(得分:3)
Triangle Strip的vetcies应该像这张图一样排列。
其他形式。
答案 1 :(得分:2)
您似乎将triangles[1].v1
设置为3次而不是设置triangles[1].v1, v2, & v3
。