写在前面
上一节坐标变换过程,总结了OpenGL中顶点的处理过程。有了前面的基础,从本节开始,我们可以开始学习OpenGL中包括光照、模型加载等主题。光照是一个复杂的主题,本节学习简单的Phong reflection model.本节示例程序均可以在我的github下载。
本节内容整理自:
1. learnopengl.com Basic Lighting
2.Modern OpenGL 06 – Diffuse Point Lighting
通过本节可以了解到
- 颜色与光照的关系
- 简单实现的Phong Reflection Model
- Gouraud shading和Phong Shading的对比
颜色与光照的关系
我们看到的物体的颜色,实际上是光照射物体后反射的光进入眼睛后感受到的颜色,而不是物体实际材料的颜色。太阳的白光包含了所有我们可以感知的颜色,可以将这个白光通过棱镜折射后分离为各种颜色的光。一束白光照射到红颜色的车身上,光经过车身,一部分被吸收,一部分被反射进入人的眼睛,我们感知到的颜色就是这个反射后进入眼睛的光的颜色,如下图所示(来自:Modern OpenGL 06 – Diffuse Point Lighting):
图中,红色的表面吸收了蓝色和绿色成分,将红色反射出来。颜色吸收和反射的过程可以表示为:
LightIntensity∗ObjectColor=Reflectcolor
计算为:
(R,G,B)∗(X,Y,Z)=(XR,YG,ZB)
则上面的过程表示为:
(1,