OpenGL中的光照模型.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

OpenGL中的光照模型

一、OpenGL的光照模型

在OpenGL的简单光照模型中反射光可以分成三个分量,环境反射光(Ambient

Light)、漫反射光(DiffuseLight)和镜面反射光(SpecularLight):

a、环境光Ambient,是由光源发出经环境多次散射而无法确定其入射方向的光,

即似乎来自所有方向。当环境光照到曲面上时,它在各个方向上均等地发散(类似于无

影灯光)。特征:入射方向和出射方向均为任意方向。

b、漫射光Diffuse,来自特定方向,它垂直于物体时比倾斜时更明亮。一旦它照射

到物体上,则在各个方向上均匀地发散出去,效果为无论视点在哪里它都一样亮。特征:

入射方向唯一、出射方向为任意方向。

c、镜面光Specular,来自特定方向并沿另一方向反射出去,一个平行激光束在高

质量的镜面上产生100%的镜面反射。特征:入射方向和出射方向均唯一。

二、创建光源

定义光源特性的函数:glLight*(light,pname,param)

其中第一个参数light指定所创建的光源号,如GL_LIGHT0、GL_LIGHT1、...、

GL_LIGHT7;第二个参数pname指定光源特性,这个参数的辅助信息见表1所示;最

后一个参数设置相应的光源特性值。

pname参数名缺省值说明

GL_AMBIENT(0.0,0.0,0.0,1.0)RGBA模式下环境光

GL_DIFFUSE(1.0,1.0,1.0,1.0)RGBA模式下漫反射光

GL_SPECULAR(1.0,1.0,1.0,1.0)RGBA模式下镜面光

GL_POSITION(0.0,0.0,1.0,0.0)光源位置齐次坐标(x,y,z,w)

GL_SPOT_DIRECTION(0.0,0.0,-1.0)点光源聚光方向矢量(x,y,z)

GL_SPOT_EXPONENT0.0点光源聚光指数

GL_SPOT_CUTOFF180.0点光源聚光截止角

GL_CONSTANT_ATTENUATION1.0常数衰减因子

GL_LINER_ATTENUATION0.0线性衰减因子

GL_QUADRATIC_ATTENUATION0.0平方衰减因子

表1函数glLight*()参数pname说明

注意:以上列出的GL_DIFFUSE和GL_SPECULAR的缺省值只能用于

GL_LIGHT0,其他几个光源的GL_DIFFUSE和GL_SPECULAR缺省值为

(0.0,0.0,0.0,1.0)。

三、启用光源和明暗处理

如果光照无效,则只是简单地将当前颜色映射到当前顶点上去,不进行法向、光源、

材质等复杂计算。要启用光照或关闭光照,调用函数:glEnable(GL_LIGHTING)或

glDisable(GL_LIGHTING)。

启用光照后必须调用函数glEnable(GL_LIGHT0),使所定义的光源有效。其它光

源类似,只是光源号不同而已。

在OpenGL中,用单一颜色处理的称为平面明暗处理(FlatShading),用许多不同

颜色处理的称为光滑明暗处理(SmoothShading),也称为Gourand明暗处理(Gourand

Shading)。

设置明暗处理模式的函数为:glShadeModel(mode)

函数参数mode为GL_FLAT或GL_SMOOTH,分别表示平面明暗处理和光滑明暗

处理。

四、光源的颜色、位置与衰减

光源的颜色由AMBIENT、DIFFUSE、SPECULAR决

文档评论(0)

199****2173 + 关注
实名认证
内容提供者

小学毕业生

1亿VIP精品文档

相关文档