mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-22 20:25:28 +08:00
Merge pull request #290 from SuperAoao/Branch_new-theme_fix#286
fix issue 坐标系统小节 翻译改进 #286 , DOOM翻译为毁灭战士并增加小括号解释
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
---|---
|
---|---
|
||||||
作者 | JoeyDeVries
|
作者 | JoeyDeVries
|
||||||
翻译 | linkoln, Geequlim, Krasjet, [BLumia](https://github.com/blumia/)
|
翻译 | linkoln, Geequlim, Krasjet, [BLumia](https://github.com/blumia/)
|
||||||
校对 | 暂未校对
|
校对 | AoZhang
|
||||||
|
|
||||||
在上一个教程中,我们学习了如何有效地利用矩阵的变换来对所有顶点进行变换。OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的**x**,**y**,**z**坐标都应该在**-1.0**到**1.0**之间,超出这个坐标范围的顶点都将不可见。我们通常会自己设定一个坐标的范围,之后再在顶点着色器中将这些坐标变换为标准化设备坐标。然后将这些标准化设备坐标传入光栅器(Rasterizer),将它们变换为屏幕上的二维坐标或像素。
|
在上一个教程中,我们学习了如何有效地利用矩阵的变换来对所有顶点进行变换。OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的**x**,**y**,**z**坐标都应该在**-1.0**到**1.0**之间,超出这个坐标范围的顶点都将不可见。我们通常会自己设定一个坐标的范围,之后再在顶点着色器中将这些坐标变换为标准化设备坐标。然后将这些标准化设备坐标传入光栅器(Rasterizer),将它们变换为屏幕上的二维坐标或像素。
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ glm::mat4 proj = glm::perspective(glm::radians(45.0f), (float)width/(float)heigh
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
它的第一个参数定义了<def>fov</def>的值,它表示的是<def>视野</def>(Field of View),并且设置了观察空间的大小。如果想要一个真实的观察效果,它的值通常设置为45.0f,但想要一个末日风格的结果你可以将其设置一个更大的值。第二个参数设置了宽高比,由视口的宽除以高所得。第三和第四个参数设置了平截头体的**近**和**远**平面。我们通常设置近距离为0.1f,而远距离设为100.0f。所有在近平面和远平面内且处于平截头体内的顶点都会被渲染。
|
它的第一个参数定义了<def>fov</def>的值,它表示的是<def>视野</def>(Field of View),并且设置了观察空间的大小。如果想要一个真实的观察效果,它的值通常设置为45.0f,但想要一个毁灭战士(DOOM,经典的系列第一人称射击游戏)风格的结果你可以将其设置一个更大的值。第二个参数设置了宽高比,由视口的宽除以高所得。第三和第四个参数设置了平截头体的**近**和**远**平面。我们通常设置近距离为0.1f,而远距离设为100.0f。所有在近平面和远平面内且处于平截头体内的顶点都会被渲染。
|
||||||
|
|
||||||
!!! important
|
!!! important
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ void main()
|
|||||||
我们还应该将矩阵传入着色器(这通常在每次的渲染迭代中进行,因为变换矩阵会经常变动):
|
我们还应该将矩阵传入着色器(这通常在每次的渲染迭代中进行,因为变换矩阵会经常变动):
|
||||||
|
|
||||||
```c++
|
```c++
|
||||||
int modelLoc = glGetUniformLocation(ourShader.ID, "model"));
|
int modelLoc = glGetUniformLocation(ourShader.ID, "model");
|
||||||
glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));
|
glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));
|
||||||
... // 观察矩阵和投影矩阵与之类似
|
... // 观察矩阵和投影矩阵与之类似
|
||||||
```
|
```
|
||||||
|
Reference in New Issue
Block a user