我遇到了一个奇怪的渲染问题。
这是一个视频示例http://youtu.be/PI7QUDN6AHI
AFAIK我正确地将位置,法线,uv纹理坐标发送到我的着色器:
VertexShaderOutput VS(VertexShaderInput pInput)
{
VertexShaderOutput lOutput;
lOutput.position = mul(pInput.position, WorldViewProjectionMatrix);
lOutput.uv = pInput.uv;
lOutput.normal = mul(pInput.normal, WorldViewProjectionMatrix);
return lOutput;
}
PixelShaderOutput PS(VertexShaderOutput pInput)
{
PixelShaderOutput lOutput;
lOutput.color = ObjTexture.Sample(ObjSamplerState, pInput.uv);
return lOutput;
}
我测试了不同的模型,当正面三角形后面有几何图形时,似乎会出现这个问题。当我只是从像素着色器返回一个颜色时,我也没有遇到这个问题。绕组和剔除似乎是正确的:
FillMode = D3D11_FILL_SOLID;
CullMode = D3D11_CULL_FRONT;
FrontCounterClockwise = false;
我不确定这是否与深度缓冲区有关? 什么可能导致这个问题?我该如何解决?