1

私は最近あなたができることを読みました

「OpenGL シェーダーのインスタンスが複数あります」

しかし、これに関する他の詳細は提供されていません。

これが正確に何を意味するのかについて、いくつかの明確化を望みます。

1 つには、複数の glProgram を実行でき、それらを切り替えることができることを知っています。言及しているのはそれだけですか?フレームごとに作成されたいくつかのシェーダープログラムを切り替えることは、本質的に、複数のプログラムを「同時に」使用していることを意味すると思います。

それとも、同じシェーダー プログラムの複数の「インスタンス」を持つことをどういうわけか指していますか? それは私には意味がありません。

ここでいくつかの基本的な説明をお楽しみください。

4

1 に答える 1

6

プログラム オブジェクトを作成すると、複数のシェーダーがリンクされます。通常、少なくとも頂点とフラグメント シェーダー。ここで、レンダリングしたいとしましょう。あるオブジェクトの周りにグローがあるとします。そのグローは別のフラグメント シェーダーによって作成されますが、頂点シェーダーは通常の外観と同じです。リソースを節約するために、複数のプログラムで同じ頂点シェーダーを使用できますが、異なるフラグメント シェーダーがリンクされています。もちろん、同じフラグメント シェーダーと異なる頂点シェーダーを使用することもできます。

つまり、単一のシェーダーを任意の数のプログラムにリンクできます。リンクされたシェーダー ステージが互いに互換性がある限り、これはモジュール化に役立ちます。

于 2013-04-16T10:57:36.873 に答える