您的位置:首页 > 运维架构

OpenGL ES 学习教程(七) 事实上并没有所谓的灯光,只是大家都装作发亮

2015-12-11 02:16 288 查看
平时我们习惯于说 “在这里加上一个灯,照亮这个角落”



例如在上面游戏中,可以看到一个路灯,发出柔和的光,照亮了地面和人物。

我们总是误以为,这个灯在发光,但是其实这个灯并不是发光体。



在Unity等游戏引擎中,我们在编辑器里面创建一个灯光,然后在编辑器中能看到一个真实的灯光存在,可以调整位置,调整光的颜色等等。这很容易使用,但是却误导了我。



真实情况是,没有任何物体在发光,所谓的灯光,其实也只是一个普通的物体,只是这个物体(白色立方体)的Color ,会传入到其它的物体(下方棕色立方体)的Fragment Shader中进行颜色混合计算,然后我们就看到:其它物体(下方棕色立方体)的颜色受到了物体(白色立方体) 的颜色的影响,即我们说的 白色立方体 照亮了 下面的棕色立方体 。

后续我们就来模拟一个灯。

这一节首先创建一个场景,场景中包含一个白色的立方体作为灯泡 , 一个黄色的立方体作为灯下的物体。



这里使用了两种Shader,一种是用来模拟灯泡的 GLProgram_Light.h  ,另一个模拟灯下面的物体 GLProgram_Cube.h 。

然后在 MyApp.h (Line 29) 中,分别使用两种Shader 绘制了物体和 灯泡,并且给物体设置了 黄色,给灯泡设置了白色。

示例工程下载:

http://pan.baidu.com/s/1skjV59b
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: