OpenGL 2D Shape Issue
我试图在LWJGL中使用OpenGL制作形状,但每次执行此操作时,都会使其中的三角形凹入。
代码:
1 2 3 4 5 6 7 | //The Window Is 800 Wide And 600 Tall GL11.glBegin(GL11.GL_QUADS); GL11.glVertex2i(0, 0); GL11.glVertex2i(800, 0); GL11.glVertex2i(0, 600); GL11.glVertex2i(800, 600); GL11.glEnd(); |
结果:
而且,代码要大得多。 我只是放置了绘制形状的代码。
操作顺序在OpenGL中很重要。该代码如下:
放下"铅笔"(我建议您在读纸时,用一支真正的铅笔在实际的纸上进行操作,即,按照说明进行操作,放下铅笔并进行以下动作而不抬起它)–画一个四边形
1 | GL11.glBegin(GL11.GL_QUADS); |
第一角左下角
1 | GL11.glVertex2i(0, 0); |
第二个角落右下角
1 | GL11.glVertex2i(800, 0); |
锡迪角左上
1 | GL11.glVertex2i(0, 600); |
右上角第四个角
1 | GL11.glVertex2i(800, 600); |
用铅笔返回到第一点完成四边形。
1 | GL11.glEnd(); |
OpenGL希望您以一致的缠绕方式为其提供凸几何形状,即以顺时针或逆时针方向绘制顶点。您将在它们之间切换方向,这将使您定义的形状不凸。
我强烈建议您保持逆时针缠绕:
这也是用铅笔绘制四边形的方式。
尝试交换这两个:
1 2 | GL11.glVertex2i(0, 600); GL11.glVertex2i(800, 600); |
所以你有这个:
1 2 3 4 5 6 | GL11.glBegin(GL11.GL_QUADS); GL11.glVertex2i(0, 0); GL11.glVertex2i(800, 0); GL11.glVertex2i(800, 600); GL11.glVertex2i(0, 600); GL11.glEnd(); |
因此,在您的代码中,四边形的顶点顺序为:左上,右上,左下,右下。
正确的顺序是:
左上,右上,右下,左下。
固定它。我画左上,右上,右下,左下。不是左上,右上,左下,右下。