Projeção ortográfica com origem na tela inferior esquerda
Eu estou usando as ligações de OpenGL de python e tentando usar apenas chamadas opengl modernas. Eu tenho um VBO com verticies e estou tentando renderizar com uma matriz de projeção ortográfica passada para o shader de vértice.
Atualmente, estou calculando minha matriz de projeção com os seguintes valores:
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)
Esse código eu tenho daqui:
Fórmula para uma matriz de projeção ortogonal?
Isso parece funcionar bem, mas eu gostaria que minha origem estivesse no canto inferior esquerdo da tela. Esta é uma função que posso aplicar sobre a minha matriz para que tudo "simplesmente funcione", ou eu devo traduzir cada objeto manualmente por w / 2 h / 2?
Nota lateral: As coordenadas correspondem às posições dos pixels com isto funcionando corretamente?
Como estou usando técnicas modernas de OpenGL, não acho que deva usar chamadas gluOrtho2d ou GL_PROJECTION.