Matrix4到GLSL的统一值

时间:2016-01-14 16:30:39

标签: c++ opengl glsl shader

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

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

如何将我的Matrix4中的值放到此函数中?

1 个答案:

答案 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);

来自documentation

  

计数

     

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

     

[...]

     

     

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