DirectX 11 で Z バッファをセットアップしようとしていますが、期待どおりに動作しません。Z バッファがないと、予想どおり、近いオブジェクトの上にさらにオブジェクトが表示されます。このビデオに示すように、バッファを使用すると、空白の画面が表示され、移動するとビットがちらつきます。
これが私の Z バッファの初期化です。
// Create a Z buffer texture
D3D11_TEXTURE2D_DESC tex2dDesc;
ZeroMemory(&tex2dDesc, sizeof(tex2dDesc));
tex2dDesc.Width = width;
tex2dDesc.Height = height;
tex2dDesc.ArraySize = 1;
tex2dDesc.MipLevels = 1;
tex2dDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
tex2dDesc.SampleDesc.Count = sd.SampleDesc.Count;
tex2dDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
tex2dDesc.Usage = D3D11_USAGE_DEFAULT;
ID3D11Texture2D *pZBufferTexture;
hr = g_pD3DDevice->CreateTexture2D(&tex2dDesc, NULL, &pZBufferTexture);
if(FAILED(hr)) return hr;
// Create the Z buffer
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
ZeroMemory(&dsvDesc, sizeof(dsvDesc));
dsvDesc.Format = tex2dDesc.Format;
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
g_pD3DDevice->CreateDepthStencilView(pZBufferTexture, &dsvDesc, &g_pZBuffer);
pZBufferTexture->Release();
// Set the render target view
g_pImmediateContext->OMSetRenderTargets(1, &g_pBackBufferRTView, g_pZBuffer);
レンダリングで実行されるものは次のとおりです。
g_pImmediateContext->ClearRenderTargetView(g_pBackBufferRTView, g_clear_colour);
g_pImmediateContext->ClearDepthStencilView
(g_pZBuffer, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
DirectX 11に関しては、私はまだ初心者なので、助けていただければ幸いです。さらにコードが必要な場合は、提供できます。