C++/OpenGL glm 无法在着色器中将矩阵插入统一
C++/OpenGL glm Can't plug matrix into uniform in shader
我无法在我的 OpenGL 着色器中使用我的矩阵;这给我一个错误:
glUniform4f(matLocation, mat[0], mat[1], mat[2], mat[3]); // glm mat4
no suitable conversion function from "glm::tvec4<float, glm::highp>" to "GLfloat" exists
我不完全理解为什么它会给我这个错误信息,和往常一样,谷歌搜索没有给我任何好的结果。为什么它要我将矩阵转换为浮点数?
glUniform4f
仅更新具有四个浮点值的 vec4
,因此您需要 glUniformMatrix4fv
它采用指向 glm 可以提供的 16 个浮点值数组的指针 glm::value_ptr
.
mat[n]
只产生第 n
列,一个 vec4
;因此编译错误。
我无法在我的 OpenGL 着色器中使用我的矩阵;这给我一个错误:
glUniform4f(matLocation, mat[0], mat[1], mat[2], mat[3]); // glm mat4
no suitable conversion function from "glm::tvec4<float, glm::highp>" to "GLfloat" exists
我不完全理解为什么它会给我这个错误信息,和往常一样,谷歌搜索没有给我任何好的结果。为什么它要我将矩阵转换为浮点数?
glUniform4f
仅更新具有四个浮点值的 vec4
,因此您需要 glUniformMatrix4fv
它采用指向 glm 可以提供的 16 个浮点值数组的指针 glm::value_ptr
.
mat[n]
只产生第 n
列,一个 vec4
;因此编译错误。