HRESULT MeshEntity::CreateMeshFromFile_Serial(RenderDevicePtr pDev, const char* sFileName) { // Load Texture sequentially asset_ptr<MeshEntity> my_asset(this); CMeshLoader loader_( my_asset, sFileName ); CMeshLoader* pLoader = &loader_; CMeshProcessor processor_( my_asset ); CMeshProcessor* pProcessor = &processor_; pProcessor->m_pDevice = pDev; void* pLocalData; int Bytes; if( SUCCEEDED(pLoader->Load()) && SUCCEEDED(pLoader->Decompress( &pLocalData, &Bytes )) && SUCCEEDED(pProcessor->Process( pLocalData, Bytes )) && SUCCEEDED(pProcessor->LockDeviceObject()) && SUCCEEDED(pProcessor->CopyToResource()) && SUCCEEDED(pProcessor->UnLockDeviceObject()) ) { m_bIsValid = true; } else { pProcessor->SetResourceError(); } pProcessor->Destroy(); pLoader->Destroy(); return S_OK; }
//-------------------------------------------------------------------------------------- // This callback function will be called immediately after the Direct3D device has // been destroyed, which generally happens as a result of application termination or // windowed/full screen toggles. Resources created in the OnCreateDevice callback // should be released here, which generally includes all D3DPOOL_MANAGED resources. //-------------------------------------------------------------------------------------- void CALLBACK OnDestroyDevice( void* pUserContext ) { g_DialogResourceManager.OnD3D9DestroyDevice(); g_SettingsDlg.OnD3D9DestroyDevice(); SAFE_RELEASE( g_pEffect ); SAFE_RELEASE( g_pFont ); g_MeshLoader.Destroy(); }