【问题标题】:OpenGL 2D Shape IssueOpenGL 2D 形状问题
【发布时间】:2012-12-24 10:15:39
【问题描述】:

我正在尝试在 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();

结果:

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

【问题讨论】:

  • 凹痕是问题所在。
  • 你想要一个矩形吗?因为我觉得你定义的坐标有问题。
  • 坐标有什么问题?
  • 不,坐标是四边形。可能是绕线问题?如果将三角形旋转到背面,你能看到第二个三角形吗?

标签: opengl java lwjgl


【解决方案1】:

操作顺序在 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. 左上角

这也是你用铅笔画四边形的方法。

【讨论】:

  • 为什么我没有得到 +1 ?我是第一个;)
  • @MichaelIV:因为是圣诞前夜我给了你+1礼物:)
【解决方案2】:

尝试交换这两个:

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

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

【讨论】:

  • 它只是改变了三角形的位置。
  • 它提出了完全相同的问题。
【解决方案3】:

修复它。我画左上、右上、右下、左下。不是左上、右上、左下、右下。

【讨论】:

  • 这就是我向你提出的建议:) 你的坐标是:左上、右上、左下、右下。
  • 仅供参考:大多数 OpenGL 投影设置假定原点位于左下角,因此正 Y 值上升!
猜你喜欢
  • 2014-04-13
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多