openGL光照系统
来源:互联网 发布:网络语言的好处 编辑:程序博客网 时间:2024/04/27 21:59
openGL把光照系统分成了三部分:光源,材质和光照环境。(openGL没有考虑光的折射)
1. 控制光源:
第一个参数表示设置哪一个光源的属性,第二个参数表示设置这个光源的哪个属性,第三个参数则表示把该属性值设置为多少;
glLightfv(GL_LIGHT0, GL_POSITION, sun_light_position);
GL_POSITION表示光源所处的位置,其值用(X,Y,Z,W)来表示,如果W为0的话表示光源在无
限远处,前三个值则表示了它的方向,这种光源叫做方向性光源。
如果w不为0,则X/W, Y/W, Z/W表示光源的位置;这种光源叫做位置性光源;
glLightfv(GL_LIGHT0, GL_AMBIENT, sun_light_ambient);
GL_AMBIENT表示光源发出的光经过很多次的反射后留在光照环境中的强度;
glLightfv(GL_LIGHT0, GL_DIFFUSE, sun_light_diffuse);
GL_DIFFUSE表示光源发出的光照射到粗糙表面时经过漫反射后得到的光的强度;
glLightfv(GL_LIGHT0, GL_SPECULAR, sun_light_specular);
GL_SPECULAR表示光源发出的光照射到光滑表面时经过镜面反射后得到的光的强度;
GL_SPOT_DIRECTION、GL_SPOT_EXPONENT、GL_SPOT_CUTOFF属性。表示将光源作为聚光灯使用
(这些属性只对位置性光源有效)。
GL_CONSTANT_ATTENUATION,GL_LINEAR_ATTENUATION、 GL_QUADRATIC_ATTENUATION属
性。这三个属性表示了光源所发出的光线的直线传播特性(这些属性只对位置性光源有效)。
2. 控制材料:
第一个参数表示指定哪一面的属性(FRONT and BACK);
glMaterialfv(GL_FRONT, GL_AMBIENT, earth_mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, earth_mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, earth_mat_specular);
glMaterialfv(GL_FRONT, GL_EMISSION, earth_mat_emission);
GL_EMISSION属性由四个值组成,表示一种颜色。OpenGL认为该材质本身就微微的向外发射光线,
以至于眼睛感觉到它有这样的颜色,但这光线又比较微弱,以至于不会影响到其它物体的颜色。
glMaterialf (GL_FRONT, GL_SHININESS, earth_mat_shininess);
GL_SHININESS属性只有一个字,叫做“镜面指数”,取值为0到128;值越小表示材质越粗糙,光线
照在上面能形成较大的亮点。反之类似于镜面。
3. 选择光照模型:
“光照模型”即相当于“光照环境”;
- openGL光照系统
- OpenGL——光照系统
- OpenGL系统设计-光照与材质(1)
- OpenGL系统设计-光照与材质(2)
- OpenGL系统设计-光照与材质(3)
- OpenGL系统设计-光照与材质(4)
- OpenGL系统设计-光照与材质(5)
- OpenGL光照
- opengl光照
- OpenGL光照
- OpenGL光照
- opengl 光照
- OpenGL--光照
- OpenGL光照
- OpenGL光照
- opengl光照
- OpenGL光照
- OpenGL光照
- 周报-struts2 中chain、redirect、redirectaction的区别
- interceptor
- JdbcTemplate 查询
- The Google File System中文版
- sharepoint 列表的基本操作
- openGL光照系统
- 单模式匹配的KMP算法详解
- (转载)ASP.net(C#)批量上传图片代码
- 10.11.4-----Google的网络apache加速
- jQuery AJAX 函数
- heartbeat 3的安装问题及其解决方法
- heartbeat 3的安装问题及其解决方法
- linux 下的unsigned char 和char
- 现在,我的时间已经到来