4

私はWebGLで最初のシェーダーを書いています。GLSL言語に、属性またはユニフォームがnullであるかどうかを評価する方法があるかどうか疑問に思いました。仕様によると、次のようなことはサポートされていません

if (attributeX) {
dothis();
}  
else{ 
dothat():
}

そして、これらのケースのそれぞれにブール属性を書くのは無駄だと思います。

別の質問:ユニフォームまたは属性をシェーダーに渡さないと、レンダリング中に何が起こりますか?

ありがとう!

4

2 に答える 2

5

GLSL には null の概念がありません。その場合は bool ユニフォームを使用しても問題ありません。

ユニフォームを渡さないと、それらはゼロで初期化されます。属性については、それらからゴミが出ると思います。

于 2010-06-17T20:28:10.493 に答える
2

もう1つの方法は、複数のシェーダーを用意し、状況に応じてそれらを使用することです。ここでの目標は、シェーダーからのifステートメントを排除してそれらをより効率的にすることです。

于 2011-03-21T18:25:10.483 に答える