私は周りを見回しましたが、各マトリックスが何をするのか、どのような操作がそれらを形成するのかを正確に見たことがありません(つまり、実際の固有関数が呼び出します)。これは私が探しているものです。または、少なくともプロセスの説明と固有関数を使用したいくつかの例で、一般的な方法を確認してください。とにかく、役に立つ場合に備えて、いくつかの詳細を以下に示します。
トップダウンのパースペクティブ ゲームをセットアップしています (そのため、カメラは下向きに固定されていますが、回転して XY 平面に沿って移動できます)。透視投影がうまく機能します。しかし、正投影を形成するにはどのようなコマンドが必要なのだろうか...
カメラの座標を原点に変換し、カメラの回転によって回転させ、それらを元の場所に変換し、ズーム用にスケーリングすることによって行われるビューを理解していますか? しかし、正確にはどの関数とオブジェクトが関与するのかはわかりません。
また、特定のオブジェクトの回転を保存するには、クォータニオンが最適な選択のようです。それで、それはモデルの投影を決定しますか? 回転を 1 つの角度の 2D ケースに単純化できた場合、クォータニオンは無駄になりますか?
そして、これらの行列はすべてフレームごとにアイデンティティから再生成する必要がありますか? または、新しいデータに合わせて何らかの方法で変更できますか?
私は手持ちのライブラリの代わりにこれに固有値を使用することを本当に好みますが、何が起こっているのかを正確に把握するために何かを使用する必要があります...すべてのGLSLセットアップと均一なマトリックスがレンダリングに供給されています私のVAOでは、理解して作成するだけです。
編集:
私の頂点シェーダーは、位置 vec3 で乗算される 3 つの均一な mat4 でこの標準セットアップを使用します。
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(in_Position, 1.0);
mat3s と vec2 を位置に使用して、純粋に 2D の場合にパフォーマンスを向上させることはできますか?