Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
m_d3dContext->OMSetRenderTargets(0, nullptr, nullptr);
m_renderTargetView = nullptr;
m_depthStencilView = nullptr;Это действительно странность, что в таком порядке освобождения происходит утечка. Надо копать, может быть даже бага в GC.m_d3dContext = nullptr; должен чистить ресурсы в обоих случаях. Вы пробовали это делать?ComPtr<IDXGIDevice3> dxgiDevice;
m_d3dDevice.As(&dxgiDevice);
dxgiDevice->Trim();
m_dxgiOutput = nullptr;
m_d3dContext = nullptr;
m_d3dDevice = nullptr;
void BaseSwapChainPanel::CreateRenderTargetView()
{
// Create a render target view of the swap chain back buffer.
ComPtr<ID3D11Texture2D> backBuffer;
DX::ThrowIfFailed(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backBuffer)));
// Once the swap chain is created, create a render target view. This will
// allow Direct3D to render graphics to the window.
DX::ThrowIfFailed(m_d3dDevice->CreateRenderTargetView(backBuffer.Get(), nullptr, &m_renderTargetView));
}
void BaseSwapChainPanel::CreateDepthStencilView()
{
// Create a depth stencil view for use with 3D rendering if needed.
ComPtr<ID3D11Texture2D> depthStencil;
CD3D11_TEXTURE2D_DESC depthStencilDesc(
DXGI_FORMAT_D24_UNORM_S8_UINT,
static_cast<UINT>(m_renderTargetWidth),
static_cast<UINT>(m_renderTargetHeight),
1, // This depth stencil view has only one texture.
1, // Use a single mipmap level.
D3D11_BIND_DEPTH_STENCIL
);
DX::ThrowIfFailed(m_d3dDevice->CreateTexture2D(&depthStencilDesc, nullptr, &depthStencil));
auto viewDesc = CD3D11_DEPTH_STENCIL_VIEW_DESC(D3D11_DSV_DIMENSION_TEXTURE2D);
DX::ThrowIfFailed(m_d3dDevice->CreateDepthStencilView(depthStencil.Get(), &viewDesc, &m_depthStencilView));
}
О том, как память текла, а я не мог понять, почему