在opengl中指定三角形顶点的顺序
specifying order of vertices of a triangle in opengl
菜鸟图形/openGL 问题w.r.t。在 XY 平面上绘制第一个三角形。据我了解,顶点需要按逆时针顺序指定,以便法线沿 Z 方向,因此默认情况下会渲染。我的问题是是否有一种方法可以按任何顺序指定 3 个顶点,但单独指定法线属性来完成此操作?
glFrontFace 的默认设置是逆时针的,如果你想将它设置为顺时针,你可以使用
glEnable(GL_CULL_FACE); //so you can see the diffirence
glFrontFace(GL_CW); //clockwise
glFrontFace(GL_CCW); //counter-clockwise
glFrontFace 的设置决定三角形是否面向相机,因此相机不会看到三角形(它不会有纹理或颜色)。
只要不启用“面部剔除”,缠绕顺序是无关紧要的。参见 OpenGL wiki - Face Culling。法向量只对光照模型重要。
Face Culling 与法向量无关。根据投影在视口上的顶点的缠绕顺序剔除面。
如果你有一个三角形(A
、B
、C
)和这个三角形的法向量N
,你可以测试点是有序的dot(cross(B-A, C-A), N) > 0
相对于法向量逆时针旋转。这并不意味着面部在视口上的投影中也是逆时针方向的。视口中面部的缠绕顺序取决于您如何看待面部。
如果一个封闭体积的所有面都具有相同的缠绕顺序,这可以用于背面剔除。从前面看的三角形在投影中保持缠绕顺序,但从后面看三角形在投影时具有相反的缠绕顺序。
菜鸟图形/openGL 问题w.r.t。在 XY 平面上绘制第一个三角形。据我了解,顶点需要按逆时针顺序指定,以便法线沿 Z 方向,因此默认情况下会渲染。我的问题是是否有一种方法可以按任何顺序指定 3 个顶点,但单独指定法线属性来完成此操作?
glFrontFace 的默认设置是逆时针的,如果你想将它设置为顺时针,你可以使用
glEnable(GL_CULL_FACE); //so you can see the diffirence
glFrontFace(GL_CW); //clockwise
glFrontFace(GL_CCW); //counter-clockwise
glFrontFace 的设置决定三角形是否面向相机,因此相机不会看到三角形(它不会有纹理或颜色)。
只要不启用“面部剔除”,缠绕顺序是无关紧要的。参见 OpenGL wiki - Face Culling。法向量只对光照模型重要。
Face Culling 与法向量无关。根据投影在视口上的顶点的缠绕顺序剔除面。
如果你有一个三角形(A
、B
、C
)和这个三角形的法向量N
,你可以测试点是有序的dot(cross(B-A, C-A), N) > 0
相对于法向量逆时针旋转。这并不意味着面部在视口上的投影中也是逆时针方向的。视口中面部的缠绕顺序取决于您如何看待面部。
如果一个封闭体积的所有面都具有相同的缠绕顺序,这可以用于背面剔除。从前面看的三角形在投影中保持缠绕顺序,但从后面看三角形在投影时具有相反的缠绕顺序。