2

プログラム可能なパイプラインを使用すると、モデルとビューを分離して結果を簡単に計算でき、作成中のエンジンでカメラ オブジェクトを簡単に操作できます。しかし、そもそもなぜそれらが分離されていないのか疑問に思いました。別のスタックオーバーフローの質問で、行列が少ないほど乗算が少ないことを読みましたが、GL.Translate()を呼び出すとすぐに最初に乗算されているため、保持されていないようです。これに時間を費やす前に、数日後にそれが問題を引き起こし、コードの半分を書き直さなければならないことに気付きました。固定関数パイプラインでそれらが分離されていないのはなぜですか?

4

3 に答える 3

2

これらは基本的にパイプライン内で同じ場所を占めるため、早い段階でそれらを結合することは理にかなっています。それらを組み合わせずに計算を実行したくないことはめったにありません。パフォーマンス上の利点は、頂点シェーダーの頂点ごとではなく、描画呼び出しごとに行列を乗算できることです。最後に、最後の利点は、ドローコールを送信する際の帯域幅 + ユニフォームが少ないことです。

本当に 2 つを分離する必要がある場合は、独自のシェーダー内でそれを行うことができます。

于 2013-05-26T23:03:51.243 に答える