绘制背面时,它们的法线是否会自动反转?

Jay*_*esh 4 opengl-es webgl

我通过调用仅绘制几何的背面gl.cullFace(gl.FRONT).我注意到这些表面上的光线与我的预期相反.为了正确渲染,我是否必须明确反转背面上的曲面法线方向,或者OpenGL子系统是否自动执行此操作?

编辑:想到它,如果我手动反转他们的法线他们将成为正面并将被剔除.

Tim*_*Tim 8

OpenGL前/后检测基于缠绕,而不是正常.法线向量对多边形是面向前还是面向后没有任何影响.

我想你想要做的是设置glLightModelGL_LIGHT_MODEL_TWO_SIDE选项.

GL_LIGHT_MODEL_TWO_SIDE

params是单个整数或浮点值,指定是否对多边形进行单面或双面照明计算.它对点,线或位图的光照计算没有影响.如果参数为0(或0.0),则指定单侧照明,并且仅在照明方程中使用前面材料参数.否则,指定双面照明.在这种情况下,使用背面材料参数点亮背面多边形的顶点, 并在评估光照方程之前使其法线反转.前面多边形的顶点始终使用前面的材质参数点亮,而不会更改它们的法线.初始值为0.

请注意,这仅适用于固定管道.

===编辑===

使用自定义着色器(GLES2.0或OpenGL3 +),然后在片段着色器中,您可以访问特殊布尔值gl_FrontFacing.要在着色器中模拟双面照明,只需测试gl_FrontFacing并将正常乘以负数false.