I have this problem with my depth buffer and all the solutions from the countless other threads with this problem do not seem to work for me.
I use the same code as shown here: http://www.rastertek.../dx11tut03.html
Global Variables:
extern ID3D11Device* pDevice;
extern ID3D11DeviceContext* pDevCon;
extern ID3D11RenderTargetView* pRenderTargetView;
extern ID3D11DepthStencilState* pDepthStencilState;
extern ID3D11DepthStencilView* pDepthStencilView;
extern ID3D11Texture2D* pDepthStencilBuffer;
extern ID3D11RasterizerState* pRasterState;
Direct3D initialisation:
HRESULT result;
D3D11_TEXTURE2D_DESC depthBufferDesc;
depthBufferDesc.Width = Width;
depthBufferDesc.Height = Height;
depthBufferDesc.MipLevels = 1;
depthBufferDesc.ArraySize = 1;
depthBufferDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
depthBufferDesc.SampleDesc.Count = 1;
depthBufferDesc.SampleDesc.Quality = 0;
depthBufferDesc.Usage = D3D11_USAGE_DEFAULT;
depthBufferDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
depthBufferDesc.CPUAccessFlags = 0;
depthBufferDesc.MiscFlags = 0;
result = pDevice->CreateTexture2D(&depthBufferDesc, NULL, &pDepthStencilBuffer);
if(FAILED(result))
{
MessageBox(NULL, L"Error1", L"Error", MB_OK | MB_ICONERROR);
}
D3D11_DEPTH_STENCIL_DESC depthStencilDesc;
ZeroMemory(&depthStencilDesc, sizeof(D3D11_DEPTH_STENCIL_DESC));
// Depth test parameters
depthStencilDesc.DepthEnable = true;
depthStencilDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
depthStencilDesc.DepthFunc = D3D11_COMPARISON_LESS;
// Stencil test parameters
depthStencilDesc.StencilEnable = true;
depthStencilDesc.StencilReadMask = 0xFF;
depthStencilDesc.StencilWriteMask = 0xFF;
// Stencil operations if pixel is front-facing
depthStencilDesc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
depthStencilDesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
depthStencilDesc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
depthStencilDesc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
// Stencil operations if pixel is back-facing.
depthStencilDesc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
depthStencilDesc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
depthStencilDesc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
depthStencilDesc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
result = pDevice->CreateDepthStencilState(&depthStencilDesc, &pDepthStencilState);
pDevCon->OMSetDepthStencilState(pDepthStencilState, 1);
if(FAILED(result))
{
MessageBox(NULL, L"Error2", L"Error", MB_OK | MB_ICONERROR);
}
D3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc;
ZeroMemory(&depthStencilViewDesc, sizeof(D3D11_DEPTH_STENCIL_VIEW_DESC));
depthStencilViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
depthStencilViewDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
depthStencilViewDesc.Texture2D.MipSlice = 0;
result = pDevice->CreateDepthStencilView(pDepthStencilBuffer, &depthStencilViewDesc, &pDepthStencilView);
pDevCon->OMSetRenderTargets(1, &pRenderTargetView, pDepthStencilView);
if(FAILED(result))
{
MessageBox(NULL, L"Error3", L"Error", MB_OK | MB_ICONERROR);
}
D3D11_RASTERIZER_DESC rasterDesc;
rasterDesc.AntialiasedLineEnable = false;
rasterDesc.CullMode = D3D11_CULL_BACK;
rasterDesc.DepthBias = 0;
rasterDesc.DepthBiasClamp = 0.0f;
rasterDesc.DepthClipEnable = true;
rasterDesc.FillMode = D3D11_FILL_SOLID;
rasterDesc.FrontCounterClockwise = false;
rasterDesc.MultisampleEnable = false;
rasterDesc.ScissorEnable = false;
rasterDesc.SlopeScaledDepthBias = 0.0f;
result = pDevice->CreateRasterizerState(&rasterDesc, &pRasterState);
pDevCon->RSSetState(pRasterState);
if(FAILED(result))
{
MessageBox(NULL, L"Error4", L"Error", MB_OK | MB_ICONERROR);
}
D3D11_VIEWPORT viewport;
ZeroMemory(&viewport, sizeof(D3D11_VIEWPORT));
viewport.TopLeftX = 0;
viewport.TopLeftY = 0;
viewport.Width = Width;
viewport.Height = Height;
viewport.MinDepth = 0.0f;
viewport.MaxDepth = 1.0f;
pDevCon->RSSetViewports(1, &viewport);
Camera Code:
m_pV3Pos = &Position;
m_pV3LookAt = &LookAt;
m_pV3View = (D3DXVECTOR3*)malloc(sizeof(D3DXVECTOR3));
m_pV3Up = (D3DXVECTOR3*)malloc(sizeof(D3DXVECTOR3));
*m_pV3View = *m_pV3Pos - *m_pV3LookAt;
D3DXVec3Normalize(m_pV3View, m_pV3View);
D3DXVec3Cross(m_pV3Up, &D3DXVECTOR3(0,1,0), m_pV3View);
D3DXVec3Cross(m_pV3Up, m_pV3View, m_pV3Up);
m_pMatView = (D3DXMATRIX*)malloc(sizeof(D3DXMATRIX));
m_pMatProj = (D3DXMATRIX*)malloc(sizeof(D3DXMATRIX));
D3DXVec3Normalize(m_pV3Up, m_pV3Up);
D3DXMatrixLookAtLH(m_pMatView, m_pV3Pos, m_pV3LookAt, m_pV3Up);
D3DXMatrixPerspectiveFovLH(m_pMatProj, FOV, (float)Width/Height, 1.0f, 1000.0f);
Draw Code:
D3DXCOLOR bgColor( 0, 0.2f, 0.4f, 1.0f );
pDevCon->ClearRenderTargetView(pRenderTargetView, bgColor);
pDevCon->ClearDepthStencilView(pDepthStencilView, D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL, 1.0f, 0);
model->Draw();
pSwapChain->Present(0, 0);
I realy have no ideas left so if anyone could help me with this issue I would be most grateful