OpenGL的光照使用的是简化的模型,对现实的情况进行近似。
其中一个模型被称为冯氏光照模型,Phong Lighting Model。
冯氏光照模型的主要结构由3个分量组成:环境,Ambient;漫反射,Diffuse;镜面,Specular。

环境光照,Ambient Lighting,即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),为了模拟这个,使用一个环境光照常量,它永远会给物体一些颜色。
漫反射光照,Diffuse Lighting,模拟光源对物体的方向性影响,Directional Impact;它是冯氏光照模型中视觉上最显著的分量;物体的某一部分越是正对着光源,它就会越亮。
镜面光照,Specular Lighting,模拟有光泽物体上面出现的亮点;镜面光照的颜色相比于物体的颜色会更倾向于光的颜色。

把环境光照添加到场景:用光的颜色乘以一个很小的常量环境因子,再乘以物体的颜色,然后将最终结果作为片段的颜色。示例代码:
    float ambientStrength = 0.1;
    vec3 ambient = ambientStrength * lightColor;
    vec3 result = ambient * objectColor;
    FragColor = vec4(result, 1.0);

漫反射光照
    为了测量光线和片段的角度,使用一个叫做法向量(Normal Vector)的东西,它是垂直于片段表面的一个向量。两个向量之间的角度通过点乘计算出来。
    计算漫反射光照需要:
        法向量:一个垂直于顶点表面的向量;
        定向的光线:作为光源的位置与片段的位置之间向量差的方向向量。

镜面光照也是依据光的方向向量和物体的法向量来决定的,但是它也依赖于观察方向。

openGL光照要点总结相关推荐

  1. OpenGL 光照贴图Lighting maps

    OpenGL光照贴图Lighting maps 光照贴图Lighting maps简介 漫反射贴图 镜面光贴图 采样镜面光贴图 光照贴图Lighting maps简介 在上一节中,我们讨论了让每个物体 ...

  2. QT+OpenGL光照

    QT+OpenGL光照 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 颜色 现实生活中看到的物体的颜色并不是这个物体真正拥有 ...

  3. OpenGL光照教程之 光照贴图

    引言  前面的教程,我们讨论了让不同的物体拥有各自不同的材质并对光照做出不同的反应的方法.在一个光照场景中,让每个物体拥有和其他物体不同的外观很棒,但是这仍然不能对一个物体的图像输出提供足够多的灵活性 ...

  4. opengl光照之光照贴图

    漫反射贴图 我们希望通过某种方式对物体的每个片段单独设置漫反射颜色.有能够让我们根据片段在物体上的位置来获取颜色值得系统吗? 这可能听起来很熟悉,而且事实上这个系统我们已经使用很长时间了.这听起来很像 ...

  5. OpenGL光照设置

    光照模型 OpenGL光照模型分为三种光:Ambient Light 环境光, Diffuse Light漫反射光, Specular Light镜面反射光. 一.创建光源 void glLightf ...

  6. OpenGL 三角形要点总结

    OpenGL 三角形 三个单词: 顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffe ...

  7. OpenGL 光照方程的计算

    分析程序并计算,请看下面的一段程序,并计算三个顶点1.2和3处的光照的颜色值.必须写出过程,只有结果不得分. #include <GL/glut.h> void init(void) { ...

  8. OpenGL光照贴图

    光照贴图 1. 光照贴图的意义 2. 漫反射贴图 3. 镜面光贴图 1. 光照贴图的意义 现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成.只有光照颜色的材质系统是不够的,它只是一个最简 ...

  9. opengl光照之聚光灯

    聚光灯原理:(可想象成探照灯) 运行效果图 片元shader uniform vec4 U_LightPos;//光源位置 uniform vec3 U_EyePos;//眼睛的位置 uniform ...

最新文章

  1. 关于HTML5的十条霸气侧漏预测
  2. ACM_变形课(并查集)
  3. 深度学习在推荐领域的应用
  4. VMware里装XP 没有找到硬盘驱动器
  5. 下单送奖励金的实现思路
  6. 诺基亚在日本测试5G网络 网速可达256MB/s
  7. 【动态规划】区间dp:P1005矩阵取数
  8. 20191007每日一句
  9. 脸部识别算法_面部识别技术是种族主义者吗? 先进算法的解释
  10. 使用mpvue开发小程序需要注意和了解的知识点
  11. 你还为数学建模模型代码实现而烦恼吗?一文带你实践30多种常用模型python代码
  12. C语言编程圆周运动运行结果,湘潭大学《C语言程序设计Ⅱ》课程考试试卷.doc
  13. CSDN博客去广告-谷歌插件
  14. UG NX 12鼠标和键盘操作
  15. Html 用户反馈界面
  16. PSRAM 伪静态随机存取内存
  17. JQuery键盘控制图片
  18. 质数的判断(Python)找到100(1000)以内的所有质数
  19. onenet云平台使用_使用平台
  20. js replace将文字表情替换为图片

热门文章

  1. JAVA的知识点3——浮点数的相关处理
  2. 计算机组成原理——概述
  3. stm32之端口复用和重映射
  4. Sculpture ACM/ICPC NWERC 2008 离散化
  5. Java URL处理
  6. opencv copyto函数
  7. Pytorch自定义数据集
  8. 可简单图化算法(Havel算法)
  9. 某些列满足某些条件就被改是什么值,不满足就被改为另外的一些值(python pandas)
  10. 3.2.1 造成误差的原因分析