所以我用OpenGL API在C ++中创建一个简单的游戏(使用SDL2和GLEW)。
我创建了简单的着色器程序,我开始创建统一的变量加载器(像Vector3,float),但我真的不知道如何使用glUniformMatrix4fv
将4x4矩阵加载到统一变量。
如何将我的Matrix4中的值放到此函数中?
答案 0 :(得分:2)
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 uniform变量不是矩阵数组,如果是,则为1或更多 一系列矩阵。
[...]
值
对于矢量和矩阵命令,指定指向将用于更新指定值的计数值数组的指针 统一变量。