0

シェーダーは、さまざまな統一名と属性を多数持つことができます。各シェーダーユニフォームの名前を事前に知り、その場所を取得するためにコードにハードコードする必要がないように、一般的なケースで機能するシステムを作成するにはどうすればよいですか。OpenGLを使用しています。

4

2 に答える 2

2

残念ながら、ある時点で、シェーダーのユニフォーム名が何であり、それらが何を指しているのかを知る必要があります...それを回避する方法はありません。

ほとんどのグラフィックス/ゲームエンジンは慣例に従って動作します。特定のユニフォームはエンジンによって設定され、シェーダーは必要に応じてそれらを使用します。一部のシェーダーは構成を追加するため、各シェーダーは必要なユニフォームを指定できますが、通常、名前は慣例により作成されます。

于 2009-07-11T04:24:52.653 に答える
1

命名規則を使用するか、シェーダー文字列を自分で解析して、タイプ、シンボル、およびオプションのストレージ指定子を取得します。前者のオプションはシェーダープログラマーに責任を負わせ、後者のソリューションはアプリケーションプログラマーに負担をかけます。このようなコードは、OpenGL3.1でコアにプロモートされた拡張機能GL_ ARB _uniform _ buffer _ objectを使用することで、よりエレガントで効率的にすることができます。

于 2009-07-11T12:13:59.747 に答える