2017-06-07 36 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