Orthographische Projektion mit Ursprung unten links auf dem Bildschirm

Ich verwende die Python-OpenGL-Bindungen und versuche, nur moderne OpenGL-Aufrufe zu verwenden. Ich habe ein VBO mit Verticies und versuche, mit einer orthografischen Projektionsmatrix zu rendern, die an den Vertex-Shader übergeben wird.

Zur Zeit berechne ich meine Projektionsmatrix mit folgenden Werten:

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)

Diesen Code habe ich von hier bekommen:

Formel für eine orthogonale Projektionsmatrix?

Dies scheint in Ordnung zu sein, aber ich möchte, dass sich mein Ursprung in der unteren linken Ecke des Bildschirms befindet. Ist dies eine Funktion, die ich auf meine Matrix anwenden kann, damit alles "einfach funktioniert", oder muss ich jedes Objekt manuell mit w / 2 h / 2 übersetzen?

Randnotiz: Werden die Koordinaten mit den Pixelpositionen übereinstimmen, wenn dies korrekt funktioniert?

Da ich moderne OpenGL-Techniken verwende, sollte ich keine gluOrtho2d- oder GL_PROJECTION-Aufrufe verwenden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage