// Actually destroy all 'global' resource handling objects, all asset handlers, // the DX context, and everything EXCEPT the window //----------------------------------------------------------------------------- void CPUT_DX11::ShutdownAndDestroy() { // make sure no more rendering can happen mbShutdown = true; // call the user's OnShutdown code Shutdown(); CPUTInputLayoutCacheDX11::DeleteInputLayoutCache(); CPUTAssetLibraryDX11::DeleteAssetLibrary(); CPUTGuiControllerDX11::DeleteController(); // #ifdef _DEBUG #if 0 ID3D11Debug *pDebug; mpD3dDevice->QueryInterface(IID_ID3D11Debug, (VOID**)(&pDebug)); if( pDebug ) { pDebug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL); pDebug->Release(); } #endif CPUTOSServices::DeleteOSServices(); // Tell the window layer to post a close-window message to OS // and stop the message pump mpWindow->Destroy(); HEAPCHECK; }
void DirectxData::Release() { selectedShader = NO_INDEX; fadeAmount = 0.0f; if (shadows) { shadows->Release(); } for(auto& texture : textures) { texture->Release(); } for(auto& mesh : meshes) { mesh->Release(); } for(auto& mesh : terrain) { mesh->Release(); } for(auto& water : waters) { water->Release(); } for(auto& shader : shaders) { shader->Release(); } for (auto& emitter : emitters) { emitter->Release(); } quad.Release(); sceneTarget.Release(); blurTarget.Release(); backBuffer.Release(); preEffectsTarget.Release(); for (unsigned int i = 0; i < drawStates.size(); ++i) { SafeRelease(&drawStates[i]); } for (unsigned int i = 0; i < samplers.size(); ++i) { SafeRelease(&samplers[i]); } SafeRelease(&noBlendState); SafeRelease(&alphaBlendState); SafeRelease(&alphaBlendMultiply); SafeRelease(&writeState); SafeRelease(&noWriteState); SafeRelease(&swapchain); SafeRelease(&context); SafeRelease(&device); if(debug) { debug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL); debug->Release(); debug = nullptr; std::string seperator(100, '='); OutputDebugString((seperator + "\n").c_str()); } }