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

Merge pull request #201 from JeremyYvv/patch-2

bugfix: 修改一处语句通顺
This commit is contained in:
Gary Wang
2021-12-14 22:12:52 +08:00
committed by GitHub

View File

@@ -460,7 +460,7 @@ unsigned int transformLoc = glGetUniformLocation(ourShader.ID, "transform");
glUniformMatrix4fv(transformLoc, 1, GL_FALSE, glm::value_ptr(trans)); glUniformMatrix4fv(transformLoc, 1, GL_FALSE, glm::value_ptr(trans));
``` ```
我们首先查询uniform变量的地址然后用有`Matrix4fv`后缀的<fun>glUniform</fun>函数把矩阵数据发送给着色器。第一个参数你现在应该很熟悉了它是uniform的位置值。第二个参数告诉OpenGL我们将要发送多少个矩阵这里是1。第三个参数询问我们我们是否希望对我们的矩阵进行转置(Transpose)也就是说交换我们矩阵的行和列。OpenGL开发者通常使用一种内部矩阵布局叫做<def>列主序</def>(Column-major Ordering)布局。GLM的默认布局就是列主序所以并不需要转置矩阵我们填`GL_FALSE`。最后一个参数是真正的矩阵数据但是GLM并不是把它们的矩阵储存为OpenGL所希望接受的那种因此我们要先用GLM的自带的函数<fun>value_ptr</fun>来变换这些数据。 我们首先查询uniform变量的地址然后用有`Matrix4fv`后缀的<fun>glUniform</fun>函数把矩阵数据发送给着色器。第一个参数你现在应该很熟悉了它是uniform的位置值。第二个参数告诉OpenGL我们将要发送多少个矩阵这里是1。第三个参数询问我们是否希望对我们的矩阵进行转置(Transpose)也就是说交换我们矩阵的行和列。OpenGL开发者通常使用一种内部矩阵布局叫做<def>列主序</def>(Column-major Ordering)布局。GLM的默认布局就是列主序所以并不需要转置矩阵我们填`GL_FALSE`。最后一个参数是真正的矩阵数据但是GLM并不是把它们的矩阵储存为OpenGL所希望接受的那种因此我们要先用GLM的自带的函数<fun>value_ptr</fun>来变换这些数据。
我们创建了一个变换矩阵在顶点着色器中声明了一个uniform并把矩阵发送给了着色器着色器会变换我们的顶点坐标。最后的结果应该看起来像这样 我们创建了一个变换矩阵在顶点着色器中声明了一个uniform并把矩阵发送给了着色器着色器会变换我们的顶点坐标。最后的结果应该看起来像这样