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

平时我们习惯于说 “在这里加上一个灯,照亮这个角落”

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

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


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


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


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

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


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

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



示例工程下载:

http://pan.baidu.com/s/1skjV59b


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值