1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-22 20:25:28 +08:00

02-05 02-07

This commit is contained in:
Meow J
2016-11-12 12:28:08 +08:00
parent fda2590b67
commit 2cc06d2928
2 changed files with 17 additions and 17 deletions

View File

@@ -70,17 +70,17 @@ glUniform3f(lightDirPos, -0.2f, -1.0f, -0.3f);
方向向量被表示为vec4(0.2f, 1.0f, 0.3f, 0.0f)。这可以作为简单检查光的类型的方法你可以检查w元素是否等于1.0查看我们现在所拥有的光的位置向量w是否等于0.0,我们有一个光的方向向量,所以根据那个调整计算方法:
```c++
if(lightVector.w == 0.0) // 请留意浮点数错误
// 执行定向光照计算
if(lightVector.w == 0.0) // 请留意浮点数错误
// 执行定向光照计算
else if(lightVector.w == 1.0)
// 像上一个教程一样执行顶点光照计算
```
else if(lightVector.w == 1.0)
// 像上一个教程一样执行顶点光照计算
有趣的事实这就是旧OpenGL固定函数式决定一个光源是一个定向光还是位置光源根据这个修改它的光照。
如果你现在编译应用,飞跃场景,它看起来像有一个太阳一样的光源,把光抛到物体身上。你可以看到`diffuse`和`specular`元素都对该光源进行反射了,就像天空上有一个光源吗?看起来就像这样:
如果你现在编译应用,并在场景中自由移动,它看起来像有一个太阳一样的光源,把光抛到物体身上。你可以看到`diffuse`和`specular`元素都对该光源进行反射了,就像天空上有一个光源吗?看起来就像这样:
![](../img/02/05/light_casters_directional_light.png)