[英]How to pass linmath.h matrices to glsl shader?
我正在学习linmath.h
库,但是我在主程序中将它制作的矩阵传递给我的vert着色器时遇到了麻烦:
#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矩阵?
可悲的是我在问这里之前没试过这个,但这里是解决方案,只是一个直接的演员:
glUniformMatrix4fv(mat_uniform_handle, 1, GL_FALSE, (GLfloat *)M);
希望这有助于某人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.