DirectX 11:Z-Fighting

时间:2014-11-09 14:51:07

标签: c++ 3d directx-11 hlsl

我遇到了一个奇怪的渲染问题。 Rendering error example Head

这是一个视频示例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;

我不确定这是否与深度缓冲区有关? 什么可能导致这个问题?我该如何解决?

0 个答案:

没有答案