OpenGL 3.0+: Орфографическая матрица не работает - PullRequest
0 голосов
/ 30 сентября 2018

В настоящее время я разрабатываю небольшой игровой движок.Я сделал преобразование, но в том числе ортогональная проекция нарушает программу, а затем спрайт вообще не рендерится.Класс преобразования - это просто перевод и масштабирование объекта, и один он отлично работает.

Создание ортогональной матрицы:

Matrix Matrix::orthographic(const float & left, const float & right, const float & top, const float & bottom, const float & near, const float & far)
{
    Matrix m(0.0f);
    m.value[0][0] = 2 / (right - left);
    m.value[1][1] = 2 / (top - bottom);
    m.value[2][2] = 2 / (far - near);

    m.value[3][0] = -(right + left) / (right - left);
    m.value[3][1] = -(top + bottom) / (top - bottom);
    m.value[3][2] = -(far + near) / (far - near);
    m.value[3][3] = 1;

    return m;
}

Создание преобразования:

transformable = new Transformable(Vector3(10.0f, 10.0f, 0.0f), Vector3(64.f, 64.f, 0.0f));

Использование этой матрицы:

shaderProgram->setMatrixUniform("projection", Matrix::orthographic(0.0f, 800.0f, 600.0f, 0.0f, -1.0f, 1.0f));

Использование преобразования:

shaderProgram->setMatrixUniform("transformation", transformable->getMatrix());

Может кто-нибудь помочь мне, пожалуйста?Я не знаю, где моя вина.

1 Ответ

0 голосов
/ 04 октября 2018

ОК, я исправил это, конструктор Matrix заполнял Матрицу странными числами вместо 0, поэтому я заменил

Matrix m(0.0f);

на

Matrix m;
...