Rzut ortograficzny o początku na lewym dolnym ekranie

Używam powiązań OpenGL Pythona i próbuję używać tylko nowoczesnych wywołań opengl. Mam VBO z pionami i próbuję renderować z ortograficzną macierzą rzutowania przekazaną do modułu cieniującego wierzchołków.

Obecnie obliczam macierz projekcji z następującymi wartościami:

from numpy import array

w = float(width)
h = float(height)
n = 0.5
f = 3.0

matrix = array([
                   [2/w,        0,        0,        0],
                   [  0,      2/h,        0,        0],
                   [  0,        0,  1/(f-n), -n/(f-n)],
                   [  0,        0,        0,        1],
               ], 'f')


#later
projectionUniform = glGetUniformLocation(shader, 'projectionMatrix')
glUniformMatrix4fv(projectionUniform, 1, GL_FALSE, matrix)

Ten kod, który dostałem stąd:

Wzór na macierz rzutowania ortogonalnego?

Wydaje się, że działa dobrze, ale chciałbym, aby mój Origin był w lewym dolnym rogu ekranu. Czy jest to funkcja, którą mogę zastosować do mojej macierzy, aby wszystko „po prostu działało”, czy też muszę tłumaczyć każdy obiekt ręcznie w w / 2 h / 2?

Uwaga dodatkowa: Czy współrzędne będą pasować do pozycji pikseli, które działają poprawnie?

Ponieważ używam nowoczesnych technik OpenGL, nie sądzę, że powinienem używać wywołań gluOrtho2d lub GL_PROJECTION.

questionAnswers(3)

yourAnswerToTheQuestion