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.