C# 如何在HLSL中使用布尔变量实现逻辑?

C# 如何在HLSL中使用布尔变量实现逻辑?,c#,xna,hlsl,C#,Xna,Hlsl,此代码在HLSL ps_2_0中运行良好,但在ps_3_0中无法编译。 如果我将变量替换为true,它将编译。有人知道怎么做吗 float4 setBoolToFloat(bool input) { float4 output; output.xyzw = (input) ? 1.0f : 0.0f; return output; } 不知道为什么会这样,但当我将三行代码移到最初称为setBoolToFloat的位置时,错误消失了。我只在几个地方调用这个函数,所以我不打

此代码在HLSL ps_2_0中运行良好,但在ps_3_0中无法编译。 如果我将变量替换为true,它将编译。有人知道怎么做吗

float4 setBoolToFloat(bool input)
{
    float4 output;
    output.xyzw = (input) ? 1.0f : 0.0f;
    return output;
}

不知道为什么会这样,但当我将三行代码移到最初称为setBoolToFloat的位置时,错误消失了。我只在几个地方调用这个函数,所以我不打算尝试花更多的时间来让它工作。我想知道为什么没有,但我只能接受它。

编译器的错误消息是什么?