0

この問題の背景を説明するために、私は Box2D を使用しており、組み込みのデバッグ描画機能を使用してデバッグ オーバーレイを作成しようとしています。これにより、ゲームのグラフィック上で物理体の実際の形状を確認できるようになります。この問題は、シーンをレンダリングする前にモデルビュー マトリックスを移動および回転することによって実装される移動ビュー システムと、Box2D 座標が画面座標のより小さいスケール ファクターであるという事実の組み合わせで発生します (現在のプロジェクトの場合、画面座標を乗算しています)。 box2D 座標を取得するには .05 ずつ)。どちらの機能も独立して正しく動作します。

Box2D のデバッグ レンダリングを使用するときは、モデルビュー マトリックスをスケーリングすることで簡単にスケーリングを機能させることができますが、ビュー システムによってまだ変換されていない場合に限ります。その後、ビュー システムを使用してオリジナルに行ったのと同じ変換をスケーリングされたモデルビューに適用すると、正しい結果が得られます。かなりコストのかかる方法でそれを機能させる方法は知っていますが、OpenGL に変換を挿入する方法 (通常の後置の代わりに前置乗算を使用) があれば、はるかに簡単になります。

シェーダーなしで古い OpenGL 組み込みマトリックスを使用しているため、glTranslate や glRotate などの関数を使用してマトリックスを操作するだけです。マトリックスの値を直接読み書きする方法や、変換を適用するための何らかの OpenGL 設定の方法はありますか?

4

1 に答える 1

1

マトリックスの値を直接読み書きする方法はありますか

はいglGetDoublev、個々のスタックの現在の行列を照会できる (これには倍精度を使用することをお勧めします) があります。http://www.opengl.org/sdk/docs/man2/xhtml/glGet.xmlを参照してください。

次に、使用できます

glPushMatrix();
glLoadIdentity();
your_transformation();
glMultMatrix(queried_matrix);

スタックにあるものの前に独自の変換を適用する。glPopMatrix自分の後片付けに使用します。

于 2013-02-08T19:46:38.403 に答える