Здравствуйте! Почему у мен при изменение матрицы трансформации (для поворота) на некоторых значениях изменяется масштаб обьекта?
с++
glm::mat4 ModelMatrix(1.0f);
ModelMatrix = glm::translate(ModelMatrix, glm::vec3(0.0f,0.0f,0.0f));
ModelMatrix = glm::rotate(ModelMatrix, 2.0f , glm::vec3( 1.0f, 0.0f, 0.0f));
ModelMatrix = glm::rotate(ModelMatrix, 0.0f, glm::vec3(0.0f, 0.0f, 1.0f));
ModelMatrix = glm::rotate(ModelMatrix, 0.0f, glm::vec3(0.0f, 1.0f, 0.0f));
while (!glfwWindowShouldClose(mWindow))
{
//first.setMatrix("ModelMatrix", ModelMatrix);
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glUniformMatrix4fv(glGetUniformLocation(first.mProgram, "ModelMatrix"), 1 , GL_FALSE, glm::value_ptr(ModelMatrix));
vao.draw(GL_TRIANGLES);
glfwSwapBuffers(mWindow);
glfwPollEvents();
}
вершинный шейдер
#version 330
// версия
// нулевой атрибут. Название атрибута должно совпадать с вызовом функции bindAttribute
layout (location = 0) in vec3 position;
in vec2 uv;
uniform mat4 ModelMatrix;
// выход на вход в фрагментный шейдер
// Приписка 'pass_' для моего удобства
out vec2 pass_uv;
// здесь не int!
void main() {
// стандартная, типа глобальная переменная. В неё нужно записывать координату вершины
gl_Position = ModelMatrix * vec4(position, 1);
pass_uv = uv;
}