0
如何通過OpenTK將bool
值傳遞給着色器? 我還沒有看到Uniform1的這種過載。如何我的目的我使用浮動變量和檢查像OpenTK中的布爾統一
if (floatValue > 0.5) {}
但它看起來不是很好的方式來做事情。任何想法與bool
統一?
如何通過OpenTK將bool
值傳遞給着色器? 我還沒有看到Uniform1的這種過載。如何我的目的我使用浮動變量和檢查像OpenTK中的布爾統一
if (floatValue > 0.5) {}
但它看起來不是很好的方式來做事情。任何想法與bool
統一?
您可以使用glUniform1i()
或glUniform1f()
設置bool
制服。對於這兩種情況,如果您傳遞零,統一值將設置爲FALSE
,否則將設置爲TRUE
。因此,要統一設置爲FALSE
,使用這兩個中的任何一個:
glUniform1i(0);
gUniform1f(0.0f);
要將其設爲TRUE
,使用其中任何一個:
glUniform1i(1);
gUniform1f(1.0f);
任何其他非零值,而不是1
或1.0f
也是合法的。我個人更喜歡整數版本的值爲0
和1
,因爲int
類型與bool
更密切相關。
定義該行爲該規範語言(來自3.3的OpenGL規範的部分2.11.4複製):
當裝載聲明爲布爾值,一個布爾矢量,布爾值的陣列的均勻值,或布爾向量數組,可以使用Uniform * i {v},Uniform * ui {v}和Uniform * f {v}命令集來加載布爾值。類型轉換由GL完成。如果輸入值爲0或0.0f,則統一設置爲FALSE,否則設置爲TRUE。