Я хочу масштабировать треугольник с помощью матрицы модели. У меня есть этот код:
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(треугольник должен быть в центре)
Я понятия не имею, с чем это связано, возможно, это как-то связано с заказами. Буду очень признателен за помощь.
Мой вершинный шейдер:
#version 410 core
layout(location = 0) in vec4 position;
uniform mat4 u_MVP;
void main()
{
gl_Position = u_MVP * position;
};
mModel
, а затем перезаписываете его? В первом случае масштаб перезаписывается, а во втором случае перезаписывается перевод. Скорее всего, перевод уберет модель из поля зрения. - person Rabbid76   schedule 07.05.2021