gpt4 book ai didi

c - 在 VertexShader 中使用 mat4

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:56 25 4
gpt4 key购买 nike

为什么第一个代码有效,但第二个代码无效?代码在顶点着色器中。

第一个代码:

gl_Position = ProjectionMatrix * ViewMatrix * ModelMatrix * vec4(Position, 1.0);

第二个代码:

mat4 View = mat4(
ViewMatrix[0][0], ViewMatrix[1][0], ViewMatrix[2][0], ViewMatrix[3][0],
ViewMatrix[0][1], ViewMatrix[1][1], ViewMatrix[2][1], ViewMatrix[3][1],
ViewMatrix[0][2], ViewMatrix[1][2], ViewMatrix[2][2], ViewMatrix[3][2],
ViewMatrix[0][3], ViewMatrix[1][3], ViewMatrix[2][3], ViewMatrix[3][3]
);

gl_Position = ProjectionMatrix * View * ModelMatrix * vec4(Position, 1.0);

最佳答案

来自关于矩阵构造函数的 GLSL 规范:

Matrix components will be constructed and consumed in column major order.

前 4 个 float 定义了新矩阵的第一列,但您指定了它的第一行。您正在将 View 设置为 transposed ViewMatrix

请注意,这完全反射(reflect)了 C 语法和数组约定。

关于c - 在 VertexShader 中使用 mat4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com