我有与这个问题类似的代码: 一些opengl和glm解释
我有一个组合矩阵,我将其作为单个制服传递
//C++
mat4 combinedMatrix = projection * view * model;
//GLSL doesn't work
out_position = combinedMatrix * vec4(vertex, 1.0);
它不起作用。但是,如果我在着色器中进行所有乘法运算,那么我传入每个单独的矩阵并得到
//GLSL works
out_position = projection * view * model * vec4(vertex, 1.0);
有用。我在 C++ 代码中看不到我的矩阵有任何问题。
以下工作也
//C++
mat4 combinedMatrix = projection * view * model;
vec4 p = combinedMatrix * v;
//pass in vertex p as a vec4
//GLSL works
out_position = vertex