hlsl语法条件表达式

时间:2016-05-21 10:59:14

标签: 3d hlsl

在书"编程顶点,几何和像素着色器"有一个小的hlsl脚本,带有以下指令:

return(x!= y!= z);

这真的允许吗?这在语法上是否正确?这是什么意思?

return(x!= y&& y!= z);?

1 个答案:

答案 0 :(得分:1)

(x != y != z)(x != y && y != z)不同。通常,遵循与相同的规则。在这种情况下,从左到右的规则适用于!=运算符。假设值是整数,表达式(x != y != z)等效于以下内容:

int temp = (x != y); // true = 1, false = 0
int r = (temp != z); // true = 1, false = 0

因此,当且仅当1x相等并且y不是z时,表达式才会评估为0,或者xy不相等,z不是1

如果值为bool s或可以保证为01,则表达式将减少为三个术语的逻辑异或 - (xor)。