OpenGL ES 正反面的灯光照射初探
太阳火神的美丽人生 (http://blog.****.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
在 OpenGL ES 中如何实现在房间中查看屋内摆设的效果 中我们已经做到了,只查看一个几何体的内部,但内部是黑的。
这个问题涉及到灯光,那么我们可以思考一下,这一部分之所有能看到是顶点按反向做为正面,而且告诉了GPU只渲染正面,但我们提供的法线是决定灯光是如何在每个顶点上被反射的,那么就可以理解了,灯光还是按原来的方向反射,这时我们考虑让法线反过来,这样内面就可以被灯光照射到了。
做起来很简单,不用像1.1中那橛,需要设置glLightMode来改变灯光模式,估计固定渲染管线中内部封装的也是改变法线的做法吧。
我们在2.0中,因灯光相关的API都取消了,所有的灯光计算都在着色器中进行,并作用到最后的片元颜色上,那么法线这种决定灯光的东西,也得直接到着色器中去做了。直接给法线变量前加个负号,这样就可以将你提供的模型中的顶点属性的法线部分取反向了。