I'm adding support for dx11 and I ran into some issues. It renders fine without a depth buffer view, but when I attach it, my triangle gets hidden and I see only a blank screen. In the debugger, the triangle is rendered at a depth of 0.5. It should not be culled. But it is visible in the pipeline. Viewport min/max depth are 0/1, depth is attached, and cleared. I don't know why I just have a blank cleared screen.
device_->CreateRenderTargetView(pBackBuffer, NULL, &backbuffer_);
pBackBuffer->Release();
unsigned int width, height;
window_->getWindowSize(width, height);
D3D11_TEXTURE2D_DESC depth_stencil_desc;
depth_stencil_desc.Width = width;
depth_stencil_desc.Height = height;
depth_stencil_desc.MipLevels = 1;
depth_stencil_desc.ArraySize = 1;
depth_stencil_desc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
depth_stencil_desc.SampleDesc.Count = 1;
depth_stencil_desc.SampleDesc.Quality = 0;
depth_stencil_desc.Usage = D3D11_USAGE_DEFAULT;
depth_stencil_desc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
depth_stencil_desc.CPUAccessFlags = 0;
depth_stencil_desc.MiscFlags = 0;
//Create the Depth/Stencil View
if (device_->CreateTexture2D(&depth_stencil_desc, NULL, &depth_stencil_buffer_) < 0)
throw std::runtime_error("DirectX: Could not CreateTexture2D!");
if (device_->CreateDepthStencilView(depth_stencil_buffer_, NULL, &depth_stencil_view_) < 0)
throw std::runtime_error("DirectX: Could not CreateDepthStencilView!");
// set the render target as the back buffer
device_context_->OMSetRenderTargets(1, &backbuffer_, depth_stencil_view_);
D3D11_VIEWPORT viewport;
ZeroMemory(&viewport, sizeof(D3D11_VIEWPORT));
viewport.TopLeftX = 0;
viewport.TopLeftY = 0;
viewport.Width = 800;
viewport.Height = 600;
viewport.MinDepth = 0.0f;
viewport.MaxDepth = 1.0f;
device_context_->RSSetViewports(1, &viewport);
// Loop {
// Bind shader
float col[4] = { 0.0f, 0.2f, 0.4f, 1.0f };
device_context_->ClearRenderTargetView(backbuffer_, col);
device_context_->ClearDepthStencilView(depth_stencil_view_, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
// Bind vertex buffer, constant buffer, texture
device_context_->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
device_context_->Draw(count, base);
swap_chain_->Present(0, 0);
// End Loop