【发布时间】:2021-07-29 22:31:01
【问题描述】:
我想用模型矩阵缩放一个三角形。我有这个代码:
void Triangle::UpdateTransform()
{
mView = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f));
mModel = glm::scale(glm::mat4(1.0f), glm::vec3(2.f));
mModel = glm::translate(glm::mat4(1.0f), mLocation);
mMVP = mProj*mView*mModel;
}
使用此代码我没有得到任何结果。
但是如果我更改比例和翻译的顺序:
mView = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f));
mModel = glm::translate(glm::mat4(1.0f), mLocation);
mModel = glm::scale(glm::mat4(1.0f), glm::vec3(2.f));
mMVP = mProj*mView*mModel;
我得到一个非常奇怪的结果:result(triangle should be at the center)
我不知道是什么原因造成的,也许它与订单有关。
我真的很感激一些帮助。
我的顶点着色器:
#version 410 core
layout(location = 0) in vec4 position;
uniform mat4 u_MVP;
void main()
{
gl_Position = u_MVP * position;
};
【问题讨论】:
-
为什么设置
mModel然后覆盖呢?在第一种情况下,比例被覆盖,在第二种情况下,翻译被覆盖。最有可能的是,翻译会将模型移出视野。 -
如何在不覆盖的情况下设置 mModel 的比例和平移?
标签: c++ matrix opengl transform glm-math