2

有人可以解释一下如何确定三角形是顺时针还是逆时针?

如果我用下面的代码渲染一个三角形

glBegin(GL_POLYGON);
   glVertex3f(-0.5f, -0.5f, 0.0f);
   glVertex3f(-0.5f, 0.5f, 0.0f);
   glVertex3f(0.5f, 0.5f, 0.0f);
glEnd();

如果它是顺时针或逆时针,我现在怎么办?我知道这也取决于您正在查看的三角形的面,但是我如何在代码中看到呢?我读过OpenGL默认使用逆时针。但是,如果我考虑 OpenGL 是如何绘制顶点的,我觉得它是顺时针方向的。我认为这只是我的推理错误。

4

2 回答 2

2

看看句话:
如果一个假想的对象沿着从它的第一个顶点、它的第二个顶点等,到它的最后一个顶点,最后回到它的第一个顶点在多边形内部沿顺时针方向移动。

考虑与所述多边形的投影到窗口坐标的关系是很重要的。

基本上,当您说 OpenGL 默认使用逆时针方向时,您的推理略有偏差。但为了什么?这是为了确定哪些多边形是正面的,以便剔除不可见的多边形(不渲染)。也就是说,绕线是有目的的,它们不只是碰巧是 ccw 或 cw 绕线的。

在侧节点上,停止使用 glBegin() 和 glEnd()。

于 2013-11-10T13:05:22.413 回答
1

默认情况下,glVertex3f 函数以逆时针顺序提供点。

您提供的点在视觉上形成一个顺时针三角形。

你看到的是三角形的背面。

于 2019-08-21T06:40:25.957 回答