2017-06-07 69 views
1

我想檢查vec3值是否具有相同的組件。用於比較vec3值的正確關係運算符/函數?

int same = 0; 

vec3 v1 = vec3(1.0f, 0.0f, 0.0f); 
vec3 v2 = vec3(0.0f, 0.0f, 0.0f); 

if (v1 == v2) // <- this part 
{ 
    same = 1; 
} 

是== vec3類型的正確關係運算符嗎?

如果不是,我可以使用什麼(操作符和函數也可以)比較vec3的值?

+0

也許['equal()'*(來自我剛剛嘗試閱讀的書)*](https://thebookofshaders.com/glossary/?search=equal) – derM

+1

'equal'將執行組件明智的比較,返回一個布爾向量。 – BDL

回答

1

GLSL 4.5 Specification,第5.9節規定:

等式運算符等於(==)和不等於(!=)對所有類型的操作[...]。它們導致一個標量布爾值。 [...]對於向量,矩陣,結構和陣列,一個操作數的所有組件,成員或元素必須等於對應的組件, 成員或其他操作數中的元素,以使操作數被視爲相等。

要回答你的問題:是的,==運算符比較天氣兩個向量在所有組件中具有相同的值。

+1

不要忘記關於數值不精確的浮點運算問題。數字如'1.0'或'0.0'會很好運作,'0.1'不會。 – Ripi2

+0

謝謝,我有點困惑,因爲我的頭文件無法識別布爾函數equal()。剛剛發現==或!=會很完美。 – migodaet