我正在学习
linmath.h
库,但在我的主程序中,我无法将使用它创建的矩阵传递给我的顶点着色器:#include "linmath.h"
…
GLint mat_uniform_handle = glGetUniformLocation(shade_program_handle, "matrix");
…
mat4x4 M;
mat4x4_identity(M);
glUniformMatrix4fv(mat_uniform_handle, 1, GL_FALSE, M);
当然,这会让我出现类型错误,因为linmath
矩阵的类型是float (*)[4]
,而glUniformMatrix4fv
需要的类型是const GLfloat *
。
我尝试编写自己的转换器,将矩阵的列连接成一个单独的数组,然后返回第一个元素的指针,但那行不通。
我是否错过了一些linmath.h
库中能够为我执行此转换的函数?如果没有,我该如何正确地将linmath.h
矩阵转换为OpenGL矩阵?
M[0]
或*M
- 但你的写法也很好。 - datenwolf