像素着色器总是返回白色

Pixel shader always returning white

我有一个像素着色器试图return静态颜色

float4 PPBright(PS_POSTPROCESS_INPUT ppIn) : SV_Target
{
    return (1.00f, 0.00f, 0.00f, 1.0f);
}

无论颜色值如何 return 都是白色,我可以更改 alpha 值,它会影响颜色(白色、灰色、黑色)。

这是我的 cpp 代码:

g_pd3dDevice->OMSetRenderTargets(1, &BackBufferRenderTarget, DepthStencilView);
BloomTextureVar->SetResource(SceneShaderResource);
g_pd3dDevice->IASetInputLayout(nullptr);
g_pd3dDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
tech->GetPassByIndex(index)->Apply(0);
g_pd3dDevice->Draw(4, 0);

我不知道应该保留还是删除我的问题,错误是return语句:

return (1.00f, 0.00f, 0.00f, 1.0f);

应该是

return float4(1.00f, 0.00f, 0.00f, 1.0f);

像素着色器 return 未达到您预期的 float4。它 return 在这种情况下是 float4(1.0f, 1.0f, 1.0f, 1.0f)。为什么?因为 逗号运算符 。表达式的左侧被忽略,1.0f 隐式转换为 float4。你想调用 float4 的构造器,像这样 float4(1.0f, 0.0f, 0.0f, 1.0f).