Skip to content

Latest commit

 

History

History
30 lines (20 loc) · 1.95 KB

1.颜色.md

File metadata and controls

30 lines (20 loc) · 1.95 KB

1.颜色

入门教程相信你已经看完了,那么接下来我们将进行另一个章节的学习,光照。之前的Demo中,我们定义了物体自己的颜色,他就可以完全展示出来。但是我们想要他随着环境光源的变化而改变我们看到的颜色。那么我们就要引入光照的概念。

颜色

首先我们先简单的介绍一下颜色的概念。我们知道我们眼睛看到的物体,是因为物体表面反射的光线在我们视网膜上的投影。而我们之所以能看到物体的颜色是红色,是因为物体表面将红色的光线反射回来,其余颜色的光线吸收掉,所以我们才能看到红色。

在OpenGL中,我们也是模仿这个过程。还记得我们的模型的颜色是在哪里确定的么?片段着色器中要输出对应点的颜色是吧。所以我们现在要在获取到的物体的颜色的基础上再乘以光源的颜色即可。

这里只给出片段着色器的代码:

#version 330 core
out vec4 FragColor;
in vec3 ourColor;
uniform vec3 lightColor;
void main()
{
    FragColor = vec4(ourColor * lightColor , 1.0);
}

光源

为了更加真实,一般情况下我们还要表明我们的光源的位置。这里我们就不做详尽介绍了,只着重说一点,一般我们的光源的颜色是固定的,所以上面的片段着色器可能并不是一个最适合的形式,他应该有一个更简单的形式,正如刚接触GL时我们所写的片段着色器一样。好在我们写了着色器类,这样我们就不用再重复那些复杂的过程了,只要重写一个片段着色器即可。

这一部分只是简单的介绍了一下在GL中光源对物体颜色的影响,在下面的教程中我们将详细的介绍如何去构建一个光源。

这部分的代码如果你有疑问,可以参考中Demos/1.颜色的代码。