HLSL内部错误:乘以int / dword时会出现L值(奇怪)

时间:2013-11-15 16:34:47

标签: c# bit-manipulation direct3d hlsl xor

好的开始,我正在使用Managed DirectX和shader model 3.0,我正在尝试创建按位运算符的软件实现。因此,对于XOR,它看起来像这样:

dword Xor(dword x, dword y)
{
  dword result=0, mult=1;
  while (x > 0 || y > 0)
  {
    result += (x%2 != y%2) * mult;
    x /= 2;
    y /= 2;
    mult *= 2; //internal error: l-value expected
  }
}

经过大量的实验并尝试欺骗编译器后,我得出以下结论:编译器不允许任何导致本地声明的整数乘以整数的东西。哪个真的很奇怪。我可以将x或y(参数)乘以2但不是多。我无法将其添加到自身,或除以0.5或其他类似的东西。

有人可以为此提出解释吗?另外,有人知道更好的Xor实现(在Google上找不到)。没有比特移位。

感谢。

0 个答案:

没有答案