Я реализовал маленькую 2d камеру для моей сцены. Проблема в том, что если я попытаюсь немного увеличить масштаб камеры, как она движется влево и вниз вместо увеличения (каждый объект движется вверх и вправо). Я не уверен, что сделал неправильно.
Camera.cpp:
void Camera2D::zoom(float zoomFactor)
{
scale = glm::scale(scale, glm::vec3(zoomFactor, zoomFactor, 0));
updateMatrix();
}
void Camera2D::updateMatrix()
{
translate = glm::translate(glm::mat4(1.f) , glm::vec3(-400, -300, 0));//zoom from center of
screen
view = translate * scale;
translate = glm::translate(glm::mat4(1.f), glm::vec3(0, 0, 0));
view = translate * scale;
}
Я отправляю матрицу mvp в шейдер следующим образом: проекция * вид * модель. Коэффициент масштабирования всего 1.001.