目標
OpenGL で 2D レンダリング用の正投影カメラを実装しようとしています。
問題
画面には何も描画されません。
セットアップ
この呼び出しを使用してカメラを更新している各フレーム:
updateCamera(&gCamera, -10.0f, 10.0f, 0.0f, 10.0f, 1.0f, -1.0f);
updateCamera メソッドには次の宣言があります。
void updateCamera(Camera* cam, float top, float bottom, float left, float right, float zFar, float zNear);
カメラ構造体にはfloat opm[4][4]
、行列を表すメンバーが含まれているだけです。
updateCamera メソッドには次の実装があります。
cam->opm[0][0] = 2.0f / (right - left);
cam->opm[1][1] = 2.0f / (top - bottom);
cam->opm[2][2] = -2.0f / (zFar - zNear);
cam->opm[3][0] = -(right + left) / (right - left);
cam->opm[3][1] = -(top + bottom) / (top - bottom);
cam->opm[3][2] = -(zFar + zNear) / (zFar - zNear);
cam->opm[3][3] = 1.0f;
上記の代わりに恒等行列を使用すると、すべてが正しく描画されます。おそらく、行列の計算に問題がありますか?