在DirectX11中创建深度模板失败

Failed to create depth stencil in DirectX11

本文关键字:失败 深度 创建 DirectX11      更新时间:2023-10-16

我有以下代码:

D3D11_TEXTURE2D_DESC descDepth;
memset(&descDepth, 0, sizeof(descDepth));
descDepth.Width = width;
descDepth.Height = height;
descDepth.MipLevels = 1;
descDepth.ArraySize = 1;
descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
descDepth.SampleDesc.Count = 1;
descDepth.SampleDesc.Quality = 0;
descDepth.Usage = D3D11_USAGE_DEFAULT;
descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL;
descDepth.CPUAccessFlags = 0;
descDepth.MiscFlags = 0;
hr = g_d3dDevice->CreateTexture2D(&descDepth, nullptr, &g_depthStencil);

invalid argument错误。我真不知道出了什么问题。我以前用过这个代码,一切都很好。

如果你在设备创建时打开调试层,你应该在日志中发现DXGI_FORMAT_D24_UNORM_S8_UINT不是纹理格式,你需要使用DXGI_FORMAT_R24_UNORM_X8_TYPELESS作为纹理,另一个用于深度模板视图