像素着色器始终返回白色

Sal*_*aal 3 c++ directx hlsl

我有一个像素着色器,试图返回静态颜色

float4 PPBright(PS_POSTPROCESS_INPUT ppIn) : SV_Target
{
    return (1.00f, 0.00f, 0.00f, 1.0f);
}
Run Code Online (Sandbox Code Playgroud)

无论颜色值返回白色,我都可以更改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);
Run Code Online (Sandbox Code Playgroud)

Rak*_*111 5

像素着色器不会返回float4您期望的效果.在这种情况下它返回a float4(1.0f, 1.0f, 1.0f, 1.0f).为什么?因为逗号运算符.表达式的左侧被忽略,并被1.0f隐式转换为a float4.您要拨打的构造器float4,像这样float4(1.0f, 0.0f, 0.0f, 1.0f).