我正在WebGL中編寫我的第一個着色器。我想知道GLSL語言是否有任何方法來評估屬性或制服是否爲空。根據該規範,不支持像做我在WebGL中的第一個着色器
if (attributeX) {
dothis();
}
else{
dothat():
}
而且我認爲這將是寫爲每個這些情況下,布爾屬性將是一種浪費的浪費。
另一個問題:渲染過程中發生了什麼,當你沒有將制服或屬性傳遞給着色器時?
謝謝!
我正在WebGL中編寫我的第一個着色器。我想知道GLSL語言是否有任何方法來評估屬性或制服是否爲空。根據該規範,不支持像做我在WebGL中的第一個着色器
if (attributeX) {
dothis();
}
else{
dothat():
}
而且我認爲這將是寫爲每個這些情況下,布爾屬性將是一種浪費的浪費。
另一個問題:渲染過程中發生了什麼,當你沒有將制服或屬性傳遞給着色器時?
謝謝!
GLSL沒有null的概念,在這種情況下使用bool uniform是很好的。
如果你不通過制服,他們得到零初始化,對於attribs,我認爲你會得到垃圾。
另一種選擇是擁有多個着色器並根據情況使用它們。這裏的目標是消除如果來自着色器的聲明使它們更有效。
不,你不會得到垃圾。你可以得到這個屬性的常量值(你可以用glVertexAttrib來設置它http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttrib.xml) – Bahbar 2010-06-18 08:08:11
對,如果你沒有設置它,你會得到默認的初始化爲零,但仍然看到實現崩潰或給垃圾。 – 2010-06-18 19:47:18