【发布时间】:2011-03-22 02:25:10
【问题描述】:
我正在用 WebGL 编写我的第一个着色器。我想知道 GLSL 语言是否有任何方法来评估属性或制服是否为空。根据规范,它不支持做类似的事情
if (attributeX) {
dothis();
}
else{
dothat():
}
而且我认为为每种情况编写一个 bool 属性是一种浪费。
另一个问题:如果不将制服或属性传递给着色器,在渲染过程中会发生什么?
谢谢!
【问题讨论】:
我正在用 WebGL 编写我的第一个着色器。我想知道 GLSL 语言是否有任何方法来评估属性或制服是否为空。根据规范,它不支持做类似的事情
if (attributeX) {
dothis();
}
else{
dothat():
}
而且我认为为每种情况编写一个 bool 属性是一种浪费。
另一个问题:如果不将制服或属性传递给着色器,在渲染过程中会发生什么?
谢谢!
【问题讨论】:
GLSL 没有 null 的概念,在这种情况下使用 bool 统一就可以了。
如果你不通过制服,它们会被零初始化,对于属性,我认为你会从中得到垃圾。
【讨论】:
另一种选择是拥有多个着色器并根据情况使用它们。这里的目标是消除着色器中的 if 语句,从而提高它们的效率。
【讨论】: