DirectX11 Vertices背后被拉到前面

时间:2015-11-12 16:04:58

标签: c++ directx direct3d

我一直在关注一些Rastertek教程,并且我遇到了一个问题,即顶点未正确绘制。后面的顶点被绘制在应该在前面的顶点的前面。我不确定为什么会这样,因为我相信一切都已正确设置。

enter image description here

enter image description here

这是我的深度模板:

    D3D11_DEPTH_STENCIL_DESC dsd;
    ZeroMemory(&dsd, sizeof(dsd));

    dsd.DepthEnable = true;
    dsd.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
    dsd.DepthFunc = D3D11_COMPARISON_LESS;

    dsd.StencilEnable = true;
    dsd.StencilReadMask = 0xFF;
    dsd.StencilWriteMask = 0xFF;

    dsd.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
    dsd.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
    dsd.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
    dsd.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;

    dsd.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
    dsd.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
    dsd.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
    dsd.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;

    DXHRes(mDevice->CreateDepthStencilState(&dsd, &mDepthStencilState));
    mContext->OMSetDepthStencilState(mDepthStencilState, 1);

这是什么原因以及我应该看哪一节?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。我没有错误地设置任何设备资源(据我所知)。

对于其他有同样问题的人,我每帧都错误地设置了我的视图矩阵。确保正确设置了摄像机视图矩阵(例如正确设置XMMatrixLookAtLH')