OpenGL在处理光照时采用这样的近似:把光照系统分为三个部分,分别是光源、材质和光照环境。
指定一个环境亮度参数,可以使最后形成的画面更接近于真实情况。
一、光源:开启多个光源会导致程序运行速度的严重下降。
( 就目前的计算机而言,要准确模拟各种光线的传播,这是无法做到的事情。比如一个四
面都是粗糙墙壁的房间,一盏电灯所发出的光线在很短的时间内就会经过非常多次的反
射,最终几乎布满了房间的每一个角落,这一过程即使使用目前运算速度最快的计算机,
也无法精确模拟。不过,我们并不需要精确的模拟各种光线,只需要找到一种近似的计
算方式,使它的最终结果让我们的眼睛认为它是真实的,这就可以了)
二、材质
属性:正面和背面;镜面指数;材质本身微微向外发射光线。
比如某个画面中,使用了数千个多边形来表现一个比较真实的人物,OpenGL 为了产生这
数千个多边形,就需要不停的调用glVertex*函数,每一个多边形将至少调用三次(因为多边形至少有三个
顶点),于是绘制一个比较真实的人物就需要调用上万次的glVertex*函数。更糟糕的是,如果我们需要每
秒钟绘制60 幅画面,则每秒调用的glVertex*函数次数就会超过数十万次,乃至接近百万次。