私は OpenGL でいくつかのプログラミングを行っており、自分の計算目的を満たすためにモデル マトリックスを取得する必要があります。誰もが知っているように、OpenGL ライブラリ関数は、次を使用してのみモデル ビュー マトリックスを取得できます。
glGetDoublev(GL_MODELVIEW_MATRIX, m);
C を使用して行列を取得し、この関数を実装する方法を教えてください。
私は OpenGL でいくつかのプログラミングを行っており、自分の計算目的を満たすためにモデル マトリックスを取得する必要があります。誰もが知っているように、OpenGL ライブラリ関数は、次を使用してのみモデル ビュー マトリックスを取得できます。
glGetDoublev(GL_MODELVIEW_MATRIX, m);
C を使用して行列を取得し、この関数を実装する方法を教えてください。
OpenGL マトリックス スタック (利用可能であることが保証されています - 私の記憶が正しければバージョン 3.2 または OpenGL ES 2.0 であるため、この機能は GL コア プロファイルでは無効になっています) には、プロジェクションとモデルビューの 2 つのマトリックス タイプが含まれています。個別のモデリングとビュー マトリックスは 3D 描画の目的では実用的ではないため、GL はそれらを区別しません (逆に、D3D には個別のプロジェクション、ワールド (モデリングと同じ名前)、およびビュー マトリックスがありました)。
Modelview は単なるmodeling * view
ものであり、ここには魔法はありません。ただし、モデリングの抽出 (ビューを知っている場合) は、非常に数学的な作業が必要です。では、GL 呼び出しによってモデリング マトリックスを作成した場合、なぜそれを元に戻す必要があるのでしょうか。マトリックスを再作成するための初期データがまだありませんか? (新しい GL には行列関数がないため、これをお勧めします。そのため、ある時点で自分で行列を計算し、最終的な行列のみを GL に与える必要があります)。より低い GL プロファイルの場合でも、マトリックス計算を自分で実行してから、glLoadMatrix() 呼び出しで結果をロードする方がよい場合がよくあります。