Я использую привязки OpenGL python и пытаюсь использовать только современные вызовы 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 h / 2?
примечание стороны: будут ли координаты совпадать с позициями пикселей, чтобы это работало правильно?
Поскольку я использую современные методы OpenGL, я не думаю, что мне следует использовать вызовы gluOrtho2d или GL_PROJECTION.