-
在C/C++嵌入式系统编程中构建光照模型
资源介绍
一、 建立光照模型
在现实生活中,某些物体本身就会发光,例如太阳、电灯等,而其它物体虽然不会发光,
但可以反射来自其它物体的光。这些光通过各种方式传播,最后进入我们的眼睛——于
是一幅画面就在我们的眼中形成了。
就目前的计算机而言,要准确模拟各种光线的传播,这是无法做到的事情。比如一个四
面都是粗糙墙壁的房间,一盏电灯所发出的光线在很短的时间内就会经过非常多次的反
射,最终几乎布满了房间的每一个角落,这一过程即使使用目前运算速度最快的计算机,
也无法精确模拟。不过,我们并不需要精确的模拟各种光线,只需要找到一种近似的计
算方式,使它的最终结果让我们的眼睛认为它是真实的,这就可以了。
OpenGL 在处理光照时采用这样一种近似:把光照系统分为三部分,分别是光源、材质
和光照环境。光源就是光的来源,可以是前面所说的太阳或者电灯等。材质是指接受光
照的各种物体的表面,由于物体如何反射光线只由物体表面决定(OpenGL 中没有考虑
光的折射),材质特点就决定了物体反射光线的特点。光照环境是指一些额外的参数,它
们将影响最终的光照画面,比如一些光线经过多次反射后,已经无法分清它究竟是由哪
个光源发出,这时,指定一个“环境亮度”参数,可以使最后形成的画面更接近于真实情
况。
在物理学中,光线如果射入理想的光滑平面,则反射后的光线是很规则的(这样的反射
称为镜面反射)。光线如果射入粗糙的、不光滑的平面,则反射后的光线是杂乱的(这样
- 上一篇: 选择颜色-c/c++嵌入式系统编程
- 下一篇: linux-Shell基础视频教程