OpenGL顶点数组无法正确显示

时间:2018-11-04 16:00:41

标签: c opengl graphics vertex-array

我有一个OpenGL Graphics作业,由于某种原因,我试图在X,Z平面上创建一个平坦的正方形(每个顶点的Y仅为1.0)。我试图通过仅创建2个平顶点而不是4个来使问题变小,并且由于某些原因,其中2个顶点似乎总是向负y方向倾斜。

glMaterialfv(GL_FRONT, GL_DIFFUSE, drone_mat_diffuseBUILDING);
glEnableClientState(GL_VERTEX_ARRAY);
float buildingsize = 8 * floors + 4;
GLfloat quadV[300];

quadV[0] = -6.5;
printf("%.5f", quadV[0]);
quadV[1] = 1.0;
printf("%.5f", quadV[1]);
quadV[2] = 8.5;
printf("%.5f", quadV[2]);

quadV[3] = -6.5;
printf("%.5f", quadV[3]);
quadV[4] = 1.0;
printf("%.5f", quadV[4]);
quadV[5] = -7.5;
printf("%.5f", quadV[5]);


glVertexPointer(3, GL_FLOAT, 0, quadV);
glDrawArrays(GL_POLYGON, 0, buildingsize);
glDisableClientState(GL_VERTEX_ARRAY);here

这是运行时的样子:

Snapshot

红线应该是X Z平面上的一条平线。

为进一步简化,我尝试转换此代码:

    glBegin(GL_POLYGON);
glVertex3f(firstCubeXPOS - firstCubeXSCALE/2.0, 1.0, firstCubeZPOS + firstCubeZSCALE/2.0);
glVertex3f(firstCubeXPOS - firstCubeXSCALE / 2.0, 1.0, firstCubeZPOS - firstCubeZSCALE / 2.0);
glVertex3f(firstCubeXPOS + firstCubeXSCALE / 2.0, 1.0, firstCubeZPOS - firstCubeZSCALE / 2.0);
glVertex3f(firstCubeXPOS + firstCubeXSCALE / 2.0, 1.0, firstCubeZPOS + firstCubeZSCALE / 2.0);
glEnd();
glFlush();

到一个顶点数组中,这样我就可以在每个顶点上添加新元素/修改元素。因为到目前为止,我上方的代码显示了我需要查看的内容(在XZ平面上放置2d正方形)。

0 个答案:

没有答案
相关问题