为什么我的PixelShader会忽略颜色,但是会响应alpha变化?

我不久前开始自学了一些DirectX,发现了一些令我困惑的东西。 出于某种原因,我只能根据我在着色器中设置的alpha值来获取我正在绘制的模型的颜色,以便在黑色和白色之间变化。

这是我的PixelShader (在运行时成功编译):

 float4 PS( VS_OUTPUT psInput ) : SV_Target { return (1.0f, 0.0f, 0.0f, 1.0f); } 

鉴于组件是r,g,b,a和我给他们1,0,0,1 ,这应该返回鲜红的! 相反,它会产生这个白色区域:

神秘的白色区域,而不是红色

我还没有设置混合状态。

我错过了什么?

你需要写:

 return float4(1.0f, 0.0f, 0.0f, 1.0f); 

float4是构造向量所必需的。 当前编写它的方式,编译器将其解释为逗号运算符 。 结果是你只返回最后一个元素(alpha分量),然后被复制到结果的所有四个组件。