Ортогональная проекция с началом координат внизу слева на экране
Я использую привязки Python OpenGL и пытаюсь использовать только современные вызовы OpenGL. У меня есть VBO с вершинами, и я пытаюсь выполнить рендеринг с помощью матрицы ортографической проекции, переданной вершинному шейдеру.
В настоящее время я рассчитываю свою матрицу проекции со следующими значениями:
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)
Этот код я получил отсюда:
Формула для матрицы ортогональной проекции?
Кажется, это работает нормально, но я бы хотел, чтобы мой Origin находился в левом нижнем углу экрана. Это функция, которую я могу применить к моей матрице, чтобы все "просто работает, или я должен перевести каждый объект с помощью w / 2 ч / 2 вручную?
примечание стороны: будут ли координаты совпадать с позициями в пикселях, если это будет работать правильно?
Потому что я'Я использую современные методы OpenGL, я нея думаю, что я должен использовать gluOrtho2d или вызовы GL_PROJECTION.