私は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 h/2 で手動で変換する必要がありますか?
補足:これが正しく機能すると、座標はピクセル位置と一致しますか?
私は最新の OpenGL 技術を使用しているため、gluOrtho2d または GL_PROJECTION 呼び出しを使用する必要はないと思います。