我有以下代码:
glNormal3f(0, 0, 1);
glColor3f(1, 0, 0);
glBegin(GL_POINTS);
glVertex3f(-45, 75, -5);
glVertex3f(-45, 90, -5);
glVertex3f(-30, 90, -5);
glVertex3f(-30, 80, -5);
glVertex3f(-35, 80, -5);
glVertex3f(-35, 75, -5);
glVertex3f(-45, 75, -5);
glEnd();
glColor3f(1, 1, 0);
glBegin(GL_POLYGON);
glVertex3f(-45, 75, -5);
glVertex3f(-45, 90, -5);
glVertex3f(-30, 90, -5);
glVertex3f(-30, 80, -5);
glVertex3f(-35, 80, -5);
glVertex3f(-35, 75, -5);
glVertex3f(-45, 75, -5);
glEnd();
Run Code Online (Sandbox Code Playgroud)
注意每个实例中glBegin和glEnd之间的代码是如何相同的.
但GL_POLYGON(黄色)的顶点与GL_POINTS(红色)不匹配.这是一个截图:

我使用openGL越多,我就越讨厌它.但我想这可能是我做错了什么......怎么了?
那是因为你的多边形不凸 - 右上角是凹的.GL_POLYGON仅适用于凸多边形.
尝试使用GL_TRIANGLE_FAN而不是从左下角开始:你的多边形是星形的,所以GL_TRIANGLE_FAN如果你从它的内核中的一个点(你的顶点,左下角的那个是唯一的一个)开始,你就可以用它绘制它.满足这个条件).
如果你期望更复杂的多边形,你需要将它们分解成凸面(三角形最好)来渲染它们.