1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00
This commit is contained in:
Krasjet
2019-02-03 15:19:50 -05:00
parent 9fef24af66
commit 8013890ec6
5 changed files with 6 additions and 9 deletions

View File

@@ -32,7 +32,7 @@ int main()
}
```
首先我们在main函数中调用<fun>glfwInit</fun>函数来初始化GLFW然后我们可以使用<fun>glfwWindowHint</fun>函数来配置GLFW。<fun>glfwWindowHint</fun>函数的第一个参数代表选项的名称,我们可以从很多以`GLFW_`开头的枚举值中选择;第二个参数接受一个整,用来设置这个选项的值。该函数的所有的选项以及对应的值都可以在 [GLFW's window handling](http://www.glfw.org/docs/latest/window.html#window_hints) 这篇文档中找到。如果你现在编译你的cpp文件会得到大量的 *undefined reference* (未定义的引用)错误也就是说你并未顺利地链接GLFW库。
首先我们在main函数中调用<fun>glfwInit</fun>函数来初始化GLFW然后我们可以使用<fun>glfwWindowHint</fun>函数来配置GLFW。<fun>glfwWindowHint</fun>函数的第一个参数代表选项的名称,我们可以从很多以`GLFW_`开头的枚举值中选择;第二个参数接受一个整,用来设置这个选项的值。该函数的所有的选项以及对应的值都可以在 [GLFW's window handling](http://www.glfw.org/docs/latest/window.html#window_hints) 这篇文档中找到。如果你现在编译你的cpp文件会得到大量的 *undefined reference* (未定义的引用)错误也就是说你并未顺利地链接GLFW库。
由于本站的教程都是基于OpenGL 3.3版本展开讨论的所以我们需要告诉GLFW我们要使用的OpenGL版本是3.3这样GLFW会在创建OpenGL上下文时做出适当的调整。这也可以确保用户在没有适当的OpenGL版本支持的情况下无法运行。我们将主版本号(Major)和次版本号(Minor)都设为3。我们同样明确告诉GLFW我们使用的是核心模式(Core-profile)。明确告诉GLFW我们需要使用核心模式意味着我们只能使用OpenGL功能的一个子集没有我们已不再需要的向后兼容特性。如果使用的是Mac OS X系统你还需要加下面这行代码到你的初始化代码中这些配置才能起作用将上面的代码解除注释

View File

@@ -449,7 +449,7 @@ glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
当一个点比光的远平面还要远时它的投影坐标的z坐标大于1.0。这种情况下GL_CLAMP_TO_BORDER环绕方式不起作用因为我们把坐标的z元素和深度贴图的值进行了对比它总是为大于1.0的z返回true。
解决这个问题也很简单,我们简单的强制把shadow的值设为0.0不管投影向量的z坐标是否大于1.0
解决这个问题也很简单,只要投影向量的z坐标大于1.0,我们就把shadow的值强制设为0.0
```c++
float ShadowCalculation(vec4 fragPosLightSpace)

View File

@@ -205,7 +205,7 @@ void main()
// map to [0;1] range by dividing by far_plane
lightDistance = lightDistance / far_plane;
// Write this as modified depth
// write this as modified depth
gl_FragDepth = lightDistance;
}
```

View File

@@ -301,7 +301,7 @@ float GeometrySmith(vec3 N, vec3 V, vec3 L, float k)
菲涅尔方程是一个相当复杂的方程式,不过幸运的是菲涅尔方程可以用<def>Fresnel-Schlick</def>近似法求得近似解:
$$
F_{Schlick}(n, v, F_0) = F_0 + (1 - F_0) ( 1 - (n \cdot v))^5
F_{Schlick}(h, v, F_0) = F_0 + (1 - F_0) ( 1 - (h \cdot v))^5
$$
\(F_0\)表示平面的基础反射率,它是利用所谓**折射指数**(Indices of Refraction)或者说IOR计算得出的。然后正如你可以从球体表面看到的那样我们越是朝球面掠角的方向上看此时视线和表面法线的夹角接近90度菲涅尔现象就越明显反光就越强

View File

@@ -50,9 +50,6 @@ pages:
- 泛光: '05 Advanced Lighting/07 Bloom.md'
- 延迟着色法: '05 Advanced Lighting/08 Deferred Shading.md'
- SSAO: '05 Advanced Lighting/09 SSAO.md'
- 特效:
- : '08 Effects/01 Fog.md'
- 卡通着色: '08 Effects/02 Toon shading.md'
- PBR:
- 理论: '07 PBR/01 Theory.md'
- 光照: '07 PBR/02 Lighting.md'