矩阵 4 到 GLSL 的统一值

Matrix4 to GLSL uniform value

本文关键字:GLSL 矩阵      更新时间:2023-10-16

所以我正在使用OpenGL API(使用SDL2和GLEW)在C++中创建一个简单的游戏。

我创建了简单的着色器程序,并开始创建均匀变量加载器(如 Vector3,浮点),但我真的不知道如何使用 glUniformMatrix4fv 将 4x4 矩阵加载到统一变量。

如何将我的 Matrix4 中的这些值放入此函数?

glUniformMatrix4fv 需要一个指向具有 16 个浮点数的缓冲区的指针。

float[16] m1;
struct mat4{
    float m00, m01, m02, m03;
    float m10, m11, m12, m13;
    float m20, m21, m22, m23;
    float m30, m31, m32, m33;
};
mat4 m2

以下都是有效的:

glUniformMatrix4fv(MatUniformLoc, 1, GL_FALSE, &m2);
glUniformMatrix4fv(MatUniformLoc, 1, GL_FALSE, m1);

从文档中:

计数

对于矩阵 (glUniformMatrix*) 命令,指定 要修改的矩阵。如果目标 一致变量不是矩阵数组,如果是,则为 1 或更多 矩阵数组。

[...]

价值

对于矢量和矩阵命令,指定指向计数值数组的指针,该数组将用于更新指定的 均匀变量。