2

目標

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;

上記の代わりに恒等行列を使用すると、すべてが正しく描画されます。おそらく、行列の計算に問題がありますか?

4

2 に答える 2

2

問題は、頂点の定義と への呼び出しにありupdateCameraます。

三角形は非常に小さいため、これらのパラメーターでは描画されません。

次の描画呼び出しを使用します。

updateCamera(&gCamera, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f);

すべてが機能します。

于 2013-10-29T15:29:52.393 に答える