OpenGL图形编程8颜色光照材质陈永强.ppt
《OpenGL图形编程8颜色光照材质陈永强.ppt》由会员分享,可在线阅读,更多相关《OpenGL图形编程8颜色光照材质陈永强.ppt(44页珍藏版)》请在三一办公上搜索。
1、1,OpenGL图形编程,武汉纺织大学数学与计算机学院,授课教师:陈永强 教授,2,9.颜色/光照/材质,9.1颜色9.2光照9.3材质9.4透明处理(混合)9.5纹理映射,9.1颜色,OpenGL 颜色模式RGB(RGBA)模 式在 RGB 模式下,所有的颜色定义全用R、G、B 三个值来表示,有时也加上Alpha值(与透明度有关),即RGBA 模式。颜色表模式 在颜色表模式下,每一个象素的颜色是用颜色表中的某个颜色索引值表示,而这个索引值指向了相应的R、G、B 值。,9.1颜色,OpenGL 颜色模式RGB(RGBA)模 式用 glColor*()来定义当前颜色,其函数形式为:void gl
2、Color(red,green,blue,alpha);函数名中的x表示参数的数目,当它等于 3 的时候,三个参数分别代表R、G、B值,alpha值缺省为1.0;当它等于4的时候,还包括了Alpha 值,其范围从 0.0 到 1.0。函数名中的t指定参数数据的类型,可以取b、d、f、i、s、ub、ui或us,它们分别代表字节型、双精度型、浮点型、整型、短整型、无符号字节型和无符号短整型。,9.1颜色,OpenGL 颜色模式RGB(RGBA)模 式常用的指定颜色的函数是 glColor3f,其中每个颜色分量的值在0.0,1.0范围内。还有一个函数 glColor3ub,这个版本使用的颜色分量的取
3、值范围是 0 到 255 之间的无符号数。,9.1颜色,OpenGL 颜色模式颜色表模式 在颜色表模式(Color_Index Mode)下,可以调用 glIndex*()函数从颜色表中选取当前 颜色,其函数形式为:void glIndexsifd(TYPE c);void glIndexsifdv(TYPE*c);参数值 c 用于设置当前颜色索引值,即调色板号,若值大于颜色位面数时则取模。,9.1颜色,着色模型绘制线框或填充多边形时,可用纯色(恒定着色)和平滑(Gouraud着色)两种着色模型。void glShadeModel(GLenum mode)参数mode取:纯色 GL_SMOOT
4、H(默认)平滑 GL_FLAT,9.1颜色,例子红皮书smooth.c,9.2光照,场景中的光类型点光源全局光照添加光照步骤,9.2光照,场景中的光类型环境光(Ambient Light)散射光(Diffuse Light)镜面光(Specular Light)辐射光(Emitted Light),9.2光照,场景中的光类型环境光环境光有光源,但是由于被周围的环境,如地面、天空、墙壁等多次反射,变得无法确定其方向。环境光均匀地从周围环境入射至景物表面并等量地向各个方向反射出去。一般说来,房间里的环境光成分要多些,户外的相反要少得多,因为大部分光按相同的方向照射,而在户外很少有其他物体反射的光。
5、,9.2光照,场景中的光类型散射光漫射光来自某个方向,它垂直于物体时比倾斜时更明亮。一旦它照射到物体上,则在各个方向上均匀地发散出去。于是,无论视点在哪里它都一样亮。来自特定位置和特定方向的任何光,都可能有散射成分。,9.2光照,场景中的光类型镜面光镜面光也具有方向性,但被物体强烈地反射到另一个特定的方向。如一个点光源照射一个金属球时会在球面上形成一块特别亮的区域,呈现所谓“高光(Highlight)”,它是光源在金属球面上产生的镜面反射光。对于较光滑物体,其镜面反射光的高光区域小而亮;相反,粗糙表面的镜面反射光呈发散状态,其高光区域大而不亮。,9.2光照,场景中的光类型辐射光辐射光是最简单的
6、一种光,它直接从物体发出并且不受任何光源影响。,9.2光照,场景中的光类型在 OpenGL 中,任何一种光源都由三种光照成分组成:环境光、散射光和镜面光,当然光源本身还有可能发出辐射光。光是一种波,而颜色仅仅是我们可以看见的一 种光波,每种光照成分都是由 RGBA 值定义的。,16,9.2光照,点光源在OpenGL场景描述中可以包含多个点光源,光源的各种属性设置使用下面的函数指定。void glLightif(GLenum light,GLenum pname,TYPE param);void glLightifv(GLenum light,GLenum pname,TYPE*param);第
7、一个参数是一个符号常数,指定设置的是哪个光源的参数。第二个参数指定了设置的是哪一个参数。第三个参数是一个类型数组,用于指定相应的参数。,17,9.2光照,18,9.2光照,点光源点光源的颜色点光源的位置和类型聚光灯光强度衰减,19,9.2光照,点光源聚光灯1.定义聚光源位置;2.定义聚光截止角;使用参数 GL_SPOT_CUTOFF 定义聚光光锥的轴与中心线的夹角,是光锥顶角的一半。3.定义聚光方向;聚光方向决定聚光光锥的轴,使用齐次坐标定义,缺省值为(0.0,0.0,-1.0),即指向 Z 负轴。聚光方向是通过使用参数GL_SPOT_DIRECTION定义。4.定义聚光指数。参数GL_SPO
8、T_EXPONENT控制光的集中程度,光锥中心的光强最大,越靠边的光强越小,缺省时为 0。,20,9.2光照,点光源镜面光斑 在定义了光源中的镜面光成分之后,物体上并不会产生镜面光斑的效果,还需要定义材质的镜面反射率和镜面指数。,21,9.2光照,点光源在OpenGL中,必须明确启用或禁用光照。默认情况下,不启用光照,此时使用当前颜色绘制图形,不进行法线矢量、光源、光照模型、材质属性的相关计算。要启用光照,可以使用函数:glEnable(GL_LIGHTING);指定了光源的参数后,需要使用函数启用light指定的光源:glEnable(light);,22,9.2光照,全局光照在OpenGL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 图形 编程 颜色 光照 材质 陈永强
链接地址:https://www.31ppt.com/p-5441896.html