4

我正在用 WebGL 编写我的第一个着色器。我想知道 GLSL 语言是否有任何方法来评估属性或制服是否为空。根据规格,它不支持做类似的事情

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

而且我认为为每种情况编写一个 bool 属性是一种浪费,这将是一种浪费。

另一个问题:当您不将制服或属性传递给着色器时,在渲染过程中会发生什么?

谢谢!

4

2 回答 2

5

GLSL 没有 null 的概念,在这种情况下使用 bool 统一就可以了。

如果你不通过制服,它们会被零初始化,对于属性,我认为你会从中得到垃圾。

于 2010-06-17T20:28:10.493 回答
2

另一种选择是拥有多个着色器并根据情况使用它们。这里的目标是消除着色器中的if语句,使它们更有效率。

于 2011-03-21T18:25:10.483 回答