glUseProgram()はどのくらい速いのですか?よりよいものはあります(速い)?:ここglUseProgram()と速度の後のユニフォームの振る舞い
が私の考えです:
- 使用1つのユニバーサルシェーダプログラムが、より
- 使用以上(各グラフィックスクラスの設定)多くの入力設定や属性を持ちます各グラフィックスクラスの1シェーダ
シェーダプログラムを変更した後のユニフォームはどのような状態ですか?値(行列の値など)を保存していますか?ここで
は、私は#1の利点があることを考えるものです:
- glUseProgram()
と#2の利点を使用しない:
- ありません行列の変更(例えば、クラス
Menu
およびクラスScene3D
が異なる投影行列を有する場合)
"2つのオプションは、シェーダの機能に大きく左右されます。" - タスクはシンプルです。テクスチャリングで、エフェクトなしでレンダリングします。 –
非常にシンプルで効果があるものがあれば、テクスチャリング(openg gl 2.x以上を前提とする)とエフェクトクラスごとのシンプルなシェーダがあります。しかし、実際にはそれ以上のことを知らずに判断するのは難しいです。それはおそらく大きな画像では大したことではないでしょう。パフォーマンスの問題があり、それが状態変化のためであることを知っていない限り、もっと便利なことをしてください。 – haffax
Uniform Buffer Objectを使用してプログラム間でユニフォームを共有することができます(例:[Shared Uniforms](http://arcsynthesis.org/gltut/Positioning/Tut07%20Shared%20Uniforms.html)を参照)。 – stativ