OpenGL 2D形状问题

时间:2012-12-24 10:15:39

标签: opengl java lwjgl

我正在尝试使用LWJGL中的OpenGL制作形状,但每次我这样做都会使这个三角形凹陷。

守则:

//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();

结果:

The OpenGL Fail

此外,代码比那要大得多。我只是把绘制形状的代码。

3 个答案:

答案 0 :(得分:5)

操作顺序在OpenGL中很重要。此代码如下:

放下一支“铅笔”(我建议你用一支真正的铅笔在一张实际的纸上做这件事,同时阅读这篇文章,按照说明书,放下铅笔并做下面的动作而不抬起它) - 画画四边形

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. 左下角
  2. 右下角
  3. 右上角
  4. 左上角
  5. 这也是你用铅笔绘制四边形的方法。

答案 1 :(得分:4)

尝试交换这两个:

 GL11.glVertex2i(0, 600);
 GL11.glVertex2i(800, 600);

所以你有这个:

GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2i(0, 0);
GL11.glVertex2i(800, 0);
GL11.glVertex2i(800, 600);
GL11.glVertex2i(0, 600);
GL11.glEnd();

因此,在你的代码中,四边形中的顶点顺序是:左上角,右上角,左下角,右下角。这不是凸形。 正确的顺序是:  左上角,右上角,右下角,左下角。

答案 2 :(得分:0)

修正了它。我画了左上角,右上角,右下角,左下角。不是左上角,右上角,左下角,右下角。