OpenGL-光照模型
来源:互联网 发布:淘宝零食店加盟 编辑:程序博客网 时间:2024/03/29 20:58
1. 光的成分
(1)环境光:经过了充分散射,无法分辨其方向
(2)散射光:来自于某个方向,撞击表面时,均匀的向所有方向发散
(3)镜面光:来自于一个特定的方向,从特定方向反射,具有光泽的金属或塑料具有非常高的镜面成分
(4)发射光:模拟那些源自某个物体的光
2. 创建光源
(1)颜色
GLfloat light_ambient[] = { 0.0, 0.0, 1.0, 1.0 };
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);
glLgihtfv(GL_LIGHT0,GL_DIFFUSE,lgiht_diffuse);
...
(2)位置
光源根据其位置分为两类,第一类是方向性光源,光线到达表面时,所有的光线都是平行的;第二类是位置性光源,在场景中的位置决定了它对于场景的效果
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
glLgihtfv(GL_LIGHT0, GL_POSITION, light_position);
light_position的4个值(x,y,z,w),若w为0.0, 则为方向性光源;若w为非0,则为位置性光源
对于位置性光源来说,存在着衰减因子。
(3)聚光灯
我们可以对位置性光源的形状加以限制,使它的发射范围限于一个锥体之内,就像聚光灯一样。
需要设置光锥的角度,聚光灯的方向,光锥的轴
光的强度在光锥的中心达到最高,靠近光锥的边缘,光的强度越弱
(4)多光源
我们至少可以指定8个光源
3. 材料属性
(1)散射和环境反射
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_amb_diff);
环境颜色影响物体的整体颜色,物体被直接照亮时,散射颜色占据主要地位
(2)镜面反射
GLfloat mat_specular[] = {};
GLfloat low_shininess[] = { 50.0 };
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
GL_SHINESS的值越大,亮点越小,更亮。
(3)发射光颜色
glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission);
(4)颜色材料模式
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_DIFFUSE);
glColor3f(0.2, 0.5, 0.8 );
glDisable(GL_COLOR_MATERIAL);
4. 光照模型
(1)全局环境光
GLfloat lmodel_ambient[] = { 0.2, 0.2, 0.2, 1.0 };
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
(2)局部观察点或无限远的观察点
(3)双面光照
glLightModeli(GL_LIGHT_MODEL_TWO_SIZE, GL_TRUE);
会反转背面的法线方向。
(4)镜面辅助颜色
完整的光照计算公式:
顶点颜色 = emission(material) + ambient(light model) * ambient(material) +
- OpenGL光照模型
- OpenGL-光照模型
- OpenGL-光照模型
- opengl光照模型
- OpenGL.光照模型
- opengl光照模型
- OpenGL光照模型--四种光照效果
- OpenGL光照模型--四种光照效果
- OpenGL光照的计算模型
- OpenGL光照的计算模型
- Android OpenGL ES 光照模型
- Opengl 4种光照模型
- OpenGL:光照、模型视图投影变换
- Opengl 4种光照模型
- OpenGL中ADS光照模型没有镜面光照效果
- OpenGL学习: 光照系列1-光照基础(phong模型)
- OpenGL 4.0 GLSL 用多个光照模型
- OpenGL 4.0 GLSL 采用平行光照模型
- Head First 之策略模式笔记
- TC SRM 554
- opencv 图像阴影检测
- 托盘程序导致无法注销或关机
- (七)数据的向导:指针
- OpenGL-光照模型
- head first 设计模式总结(一)策略模式
- CUDA程序开发
- OpenGL-绘制管线
- OpenGL-鼠标交互
- 错误 1 error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 M
- OpenGL-显示列表
- 1484 Blowing Fuses
- MVC思想精髓