2009-07-11 11 views
0

シェーダは、さまざまな統一名+属性を多数持つことができます。私はどのように一般的な場合に動作するシステムを作ることができるので、シェイダーユニフォームの名前を事前に知っていなくても、その場所を取得するためにコードをハードコードする必要はありません。私はOpenGLを使用しています。シェイダーユニフォームの一般的な使い方は?

答えて

2

残念ながら、ある時点で、シェイダー内の統一名が何であるか、そしてそれらが何を参照しているのかを知る必要があります。

ほとんどのグラフィックス/ゲームエンジンは、慣例によって動作します。特定のユニフォームはエンジンによって設定され、シェーダは必要に応じて使用します。いくつかは設定を追加するので、各シェーダは必要な制服を指定できますが、通常は名前は引き続き慣例によって行われます。

1

名前付け規則を使用するか、シェーダ文字列を自分で解析して、型、記号、およびオプションの記憶域指定子を取得します。前者のオプションはシェーダプログラマに責任を負わせ、後者のソリューションはアプリケーションプログラマに負担をかけます。 このようなコードは、OpenGL 3.1のコアに昇格されたGL _ ARB _ uniform _ buffer _ objectという拡張子を使用すると、よりエレガントで効率的にすることができます

関連する問題