2014-07-25 25 views
0

如何通過OpenTK將bool值傳遞給着色器? 我還沒有看到Uniform1的這種過載。如何我的目的我使用浮動變量和檢查像OpenTK中的布爾統一

if (floatValue > 0.5) {} 

但它看起來不是很好的方式來做事情。任何想法與bool統一?

回答

1

您可以使用glUniform1i()glUniform1f()設置bool制服。對於這兩種情況,如果您傳遞零,統一值將設置爲FALSE,否則將設置爲TRUE。因此,要統一設置爲FALSE,使用這兩個中的任何一個:

glUniform1i(0); 
gUniform1f(0.0f); 

要將其設爲TRUE,使用其中任何一個:

glUniform1i(1); 
gUniform1f(1.0f); 

任何其他非零值,而不是11.0f也是合法的。我個人更喜歡整數版本的值爲01,因爲int類型與bool更密切相關。

定義該行爲該規範語言(來自3.3的OpenGL規範的部分2.11.4複製):

當裝載聲明爲布爾值,一個布爾矢量,布爾值的陣列的均勻值,或布爾向量數組,可以使用Uniform * i {v},Uniform * ui {v}和Uniform * f {v}命令集來加載布爾值。類型轉換由GL完成。如果輸入值爲0或0.0f,則統一設置爲FALSE,否則設置爲TRUE。