OpenGL 对象未正确缩放
OpenGL object not scaling properly
我想用模型矩阵缩放三角形。我有这个代码:
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;
};
glm::scale
and glm::translate
的第一个参数是输入矩阵。这些函数定义一个矩阵并将输入矩阵乘以新指定的矩阵。
在这两种情况下,您都为输入矩阵指定 Identity matrix (glm::mat4(1.0f)
)。您必须将 mModel
作为输入矩阵传递。例如:
mModel = glm::translate(glm::mat4(1.0f), mLocation);
mModel = glm::scale(mModel, glm::vec3(2.f)); // <-- mModel instead of glm::mat4(1.0f)
我想用模型矩阵缩放三角形。我有这个代码:
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;
};
glm::scale
and glm::translate
的第一个参数是输入矩阵。这些函数定义一个矩阵并将输入矩阵乘以新指定的矩阵。
在这两种情况下,您都为输入矩阵指定 Identity matrix (glm::mat4(1.0f)
)。您必须将 mModel
作为输入矩阵传递。例如:
mModel = glm::translate(glm::mat4(1.0f), mLocation);
mModel = glm::scale(mModel, glm::vec3(2.f)); // <-- mModel instead of glm::mat4(1.0f)