Вершинный массив OpenGL не отображается должным образом - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть задание OpenGL Graphics, и по какой-то причине я пытаюсь создать плоский квадрат на плоскости X, Z (Y - просто 1,0 для каждой вершины). Я попытался уменьшить проблему, просто пытаясь создать 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();

В массив вершин, чтобы я мог добавлять новые элементы / изменять элементы для каждой вершины. Потому что на данный момент код прямо над мной показывает то, что мне нужно увидеть (2-мерное построение квадрата на плоскости XZ).

...