opengl绘制带投影和视图投影的三角形

opengl draw tringle with projection and view projection

我正在尝试使用投影视图和模型矩阵使用 OpenGL 绘制三角形。

这是我的着色器

gl_Position = view * projection * model * vec4(pos, 1.0);       

这是我的代码

glm::mat4 view = glm::translate(view, glm::vec3(0.0f, -0.5f, -2.0f));
glm::mat4 proj = glm::perspective(glm::radians(45.0f), (float)width / height, 0.1f, 100.0f);

    float tringleVertices2[] = {
       0.0f,  0.5f, 0.0f, // Vertex 1 (X, Y)
      0.5f, -0.5f, 0.0f, // Vertex 2 (X, Y)
       -0.5f, -0.5f, 0.0f, // Vertex 3 (X, Y)
    };

但奇怪的是,当我移除视图和投影矩阵时,我的着色器看起来像这样

model * vec4(pos, 1.0);   

代码有效

我想知道是我的矩阵有问题还是代码的其他部分有问题

正确的 MVP 矩阵乘法顺序应该是:

gl_Position = projection * view * model * vec4(pos, 1.0);

考虑 matrix-vector 相关联的乘法 right-to-left:首先从模型转换到世界 space,然后从世界转换到视图 space(通过逆相机矩阵) 最后你从视图 space 投影到剪辑 space.