OpenGL通过光源、材料和光照模型,渲染光照物体,模拟现实世界

1.光源

1.创建光源
OpenGL至少支持8个光源,即GL_LIGHT0到GL_LIGHT7,可以使用glEnable开启光源
2.设置光源属性

  • 设置光源方向:glLightfv(GL_LIGHT0, GL_POSITION,position)
  • 设置环境光:glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);环境光是那些在环境中进行了充分的散射,无法分辨器方向的光,它似乎是来自所有方向。环境光的特点是:照射在物体上的光来自周围各个方向,又均匀地向各个方向反射。
  • 设置漫反射光:glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);漫放射光是一组来自特定方向,具有方向性的光。漫反射的特点是:光源来自一个方向,反射光均匀地射向各个方向。
  • 设置镜面光:glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);镜面光与漫反射光一样是具有方向性的。高强度的镜面光会在被照射的物体的表面上形成亮点。对于这种理想的反射面,镜面反射的光强要比环境光和漫反射的光强高出很多倍。

2.材质

OpenGL 用材料对光的红、绿、蓝三原色的反射率来近似定义材料的颜色。像光源一样,材料颜色也分成环境、漫反射和镜面反射成分,它们决定了材料对环境光、漫反射光和镜面反射光的反射程度。
1.指定材质
glMaterialfv(GLenum face,GLenum pname,TYPE param);

1 GL_FRONT(正面),GL_BACK(反面),GL_FRONT_AND_BACK(正反两面)。

2 GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR属性。这三个属性与光源的三个对应属性类似,每一属性都由四个值组成。

GL_AMBIENT表示各种光线照射到该材质上,经过很多次反射后最终遗留在环境中的光线强度(颜色)。

GL_DIFFUSE 表示光线照射到该材质上,经过漫反射后形成的光线强度(颜色)。

GL_SPECULAR表示光线照射到该材质上,经过镜面反射后形成的光线强度(颜色)。

通常,GL_AMBIENT和GL_DIFFUSE都取相同的值,可以达到比较真实的效果。使用GL_AMBIENT_AND_DIFFUSE可以同时设置GL_AMBIENT和GL_DIFFUSE属性。

3 GL_SHININESS属性。该属性只有一个值,称为“镜面指数”,取值范围是0到128。该值越小,表示材质越粗糙,点光源发射的光线照射到上面,也可以产生较大的亮点。该值越大,表示材质越类似于镜面,光源照射到上面后,产生较小的亮点。

4 GL_EMISSION属性。该属性由四个值组成,表示一种颜色。OpenGL认为该材质本身就微微的向外发射光线,以至于眼睛感觉到它有这样的颜色,但这光线又比较微弱,以至于不会影响到其它物体的颜色。

5 GL_COLOR_INDEXES属性。该属性仅在颜色索引模式下使用,由于颜色索引模式下的光照比RGBA模式要复杂,并且使用范围较小,这里不做讨论。

3.光照模型

1.全局环境光强度
GLfloat ambient[]={0.2,0.2,0.2,1.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);
2.局部的观察点或无限远的观察点
glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);
这个观察点放在视觉坐标系(0,0,0)的位置。如果想把观察点切换到无限远处,可以通过传递参数GL_FALSE。
3.双面光照
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE)。
4.辅助镜面颜色
典型的光照计算中,分别计算环境光,散射光,镜面反射光和发射光的贡献,然后进行叠加,而在这之后进行纹理映射的话,镜面反射区可能被覆盖,为了解决这个问题,
glLightModelfv(GL_LIGHT_MODEL_COLOR_CONTROL,
GL_SEPARATE_SPECULAR_COLOR);
这样,每个顶点光照计算将产生两种颜色,主颜色和辅助颜色,前者包含所有非镜面反射光照的贡献,后者是所有镜面反射光照的总贡献。纹理映射的时候只将主颜色和纹理颜色混合起来,执行完纹理映射后,再将主颜色和纹理颜色的混合结果与辅助颜色混合起来。

OpenGL编程指南-光照相关推荐

  1. 《OpenGL编程指南》一第2章 着色器基础

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...

  2. OpenGL编程指南7:视图-

    1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...

  3. OpenGL编程指南5:学习绘制不同风格的曲线

    1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...

  4. OpenGL编程指南4:双缓冲实现运行

    1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...

  5. OpenGL编程指南3:GLUT:OpenGL使用工具库

    1.前言 我们知道的,OpenGL包含了很多的渲染函数,这些函数的设计目的就是独立与任何窗口系统或操作系统.因此,他并没有包含打开窗口或者从键盘或鼠标读取事件的函数.遗憾的是,如果连最基本的打开窗口的 ...

  6. opengl编程指南第8版源码编译详细说明

    1. 到:https://github.com/openglredbook/examples 下载完全版的源码examples-master.zip,大小有131MB左右,不要下载缩略版的,否则\bi ...

  7. 《OpenGL编程指南(原书第8版)》——计算着色器

    原文  http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...

  8. 《OpenGL编程指南》一第3章 OpenGL绘制方式

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第3章 Op ...

  9. 《OpenGL编程指南》一3.2 OpenGL缓存数据

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  10. OpenGL编程指南(第八版)第一个渲染三角形案例代码在win8双显卡电脑VS2015中运行方法总结

    弄了好几天才把第一个程序运行出来,用该博客记录一下参考的博客资料及问题: 写得很好的博客参考资料为: http://blog.csdn.net/IceTeaSet/article/details/50 ...

最新文章

  1. udacity模型优缺点
  2. 云计算技术 — 容灾备份技术
  3. PMP考试的过与只是
  4. MySQL INSERT INTO...ON DUPLICATE KEY UPDATE的使用
  5. easyui-window 关闭事件,只要关闭窗口就会触发
  6. 阿里员工 1 天有 26 个小时,怎么回事?
  7. Oracle 10g学习笔记(一)
  8. vc++源码免杀特殊技巧
  9. 保险未起保是投保成功了吗?
  10. Java基础问题总结
  11. win10连接共享打印机_win7共享出来的打印机部分电脑无法连接的问题
  12. Spring boot 2.x+oauth2实现单点登录:基础准备之Spring Security
  13. 用CSS+HTML代码制作的3D动态旋转相册
  14. 怎样用关系代数表达式表示查询要求?求过程
  15. jQuery 倒计时插件
  16. 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
  17. 何水无鱼?何山无石?何人无父?何女无夫?何树无枝?何城无市?
  18. 隐藏CAD图层内容,2种方法搞定
  19. 京东区块链技术实践白皮书(附下载地址)
  20. 2021年春招总结 from:劳烦叫我小小泽

热门文章

  1. 常用遥感数据下载地址
  2. 遥感数据下载网站汇总
  3. 显卡跑分软件怎么测试,硬件跑分 测试方法说明
  4. IE浏览器降级详细教程
  5. NCBI数据上传(二):转录组测序(RNA-Seq)数据
  6. Vue TodoList案例
  7. Aliplayer视频点播加密播放
  8. 拯救者Y7000在CentOS7上面无法打开网卡 Ath10k (QCA9377)
  9. 计算机机房需求调查表,机房建设需求调查表机房建设需求调查表.doc
  10. 资源---2020考研---考研经验(总结:踏踏实实跟着汤家凤老师)