そんな状況を考えてみましょう。シーンには指定されたオブジェクトが含まれています: ABCDE
カメラからの順序 (最も近いものから最も遠いものへ) AEBDC
オブジェクト AC は、shader1、ED シェーダー 2、B シェーダー3 を使用します
オブジェクト AC はシェーダーを使用しますが、テクスチャは異なります。
では、このような状況に対処するにはどうすればよいでしょうか。
- すべてを前から後ろにレンダリングします (5 回のスワップ)
- ソートされたシェーダー グループごとにレンダリングします (3 つのシェーダー スワップ)。
- すべてのシェーダー プログラムを 1 つにマージします (1 スワップ)。
glUniform
などの命令glBindTexture
で、既に使用中のプログラムの値を変更すると、オーバーヘッドが発生しますか?