示例#1
0
// 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;
}
示例#2
0
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());
    }
}