文档介绍:*第5章OpenGL光照和材质贾垢燃畜喷吓张诈圆铆察搪粪碳狰妄淑尉纽咯惨少驹呛灼塌彰行音缠切众OpenGL5光照和材质OpenGL5光照和材质当光照射到一个物体表面上时,会出现三种情形。首先,光可以通过物体表面向空间反射,产生反射光。其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光。最后,部分光将被物体表面吸收而转换成热。在上述三部分光中,仅仅是透射光和反射光能够进入人眼产生视觉效果。(1)环境光(AmbientLight)环境光不来自于任何特殊的方向,它有光源,但是被周围的房间或场景多次反射,以致于变得没有方向。被环境光照射的物体表面的各个方向都均等受光。(2)散射光(DiffuseLight)来自同一个方向的光,垂直照射表面比倾斜时更明亮。当它撞击表面时,它会均匀的向所有方向发散,因此,不管眼睛在哪个位置,它看上去总是一样亮。任何来自某个特定位置或方向的光很可能具有散射成分。(3)镜面光(SpecularLight)镜面光来自特定方向,但被强烈地反射到另一特定的方向。高亮度的镜面光能够在被照射的物体表面上产生称之为亮斑的亮点。(4)发射光(emittedlight)用于模拟源自某个物体的光。任何一个光源都是由环境光、散射光和镜面光三种光照成分组成,各成分的定义是由RGBA值定义的。、绿、蓝三原色的反射率来近似定义材料的颜色。像光源一样,材料颜色也分成环境、漫反射和镜面反射成分,它们决定了材料对环境光、漫反射光和镜面反射光的反射程度。在进行光照计算时,材料对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结合,对镜面光的反射率与每个进入光源的镜面反射光结合。:若OpenGL的光源颜色为(LR、LG、LB),材质颜色属性为(MR、MG、MB)。那么,最终到达眼睛的光的颜色为(LR*MR、LG*MG、LB*MB)三种光照成分的RGBA值叠加就形成了物体最终的颜色。,。:为物体的所有顶点定义法线向量。决定物体相对于光源的朝向。创建光源、设置位置。创建和选择光照模型,它定义了全局环境光的等级和观察点的位置。并启用光照和对应光源。设置物体的材料属性。:垂直于表面的向量。法线决定了物体相对于光线的方向。在OpenGL中,可以给一个多边形指定法线,也可以给每个顶点指定法线,但不能在顶点以外的其他地方指定法线。对于每个顶点,OpenGL根据指定的法线来确定有多少来自光源的光将照射到该顶点上。完聚瞳衣戊番游贺羡琴盾墙毖晤柏卷籽库凳削鹏磊澜卡栽阅钎摘抚堑茎颈OpenGL5光照和材质OpenGL5光照和材质设置法线函数:voidglNormal3*[v](TYPEnx,TYPEny,TYPEnz) 该函数指定一个向量(nx,ny,nz),并被作为法线,接下来在调用glVertex*()函数时,当前法线被赋值给指定的顶点法线向量仅表示方向,长度无关紧要,在计算光照之前,必须将法线向量的长度转换为1,称为法线的规范化,可调用以下函数进行法线向量的自动规范化: glEnable(GL_NORMALIZE);:voidglLight{if}(GLenumlight, GLenumpname,TYPEparam); 创建light所指定的光源,可以是GL_LIGHT0,GL_LIGHT1,….,GL_LIGHT7,pname定义被设置的光源属性,它指定一个命名参数,param表示pname属性将要设置的值。吃