像素着色器总是返回白色
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)
.
我有一个像素着色器试图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)
.