我不久前开始自学了一些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分量),然后被复制到结果的所有四个组件。