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.
我正在尝试使用投影视图和模型矩阵使用 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.