bool CGSH_Direct3D9::TestDevice() { HRESULT coopLevelResult = m_device->TestCooperativeLevel(); if(FAILED(coopLevelResult)) { if(coopLevelResult == D3DERR_DEVICELOST) { return false; } else if(coopLevelResult == D3DERR_DEVICENOTRESET) { OnDeviceResetting(); auto presentParams = CreatePresentParams(); HRESULT result = m_device->Reset(&presentParams); if(FAILED(result)) { assert(0); return false; } OnDeviceReset(); } else { assert(0); } } return true; }
void CGSH_Direct3D9::CreateDevice() { auto presentParams = CreatePresentParams(); HRESULT result = S_OK; result = m_d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_outputWnd->m_hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParams, &m_device); assert(SUCCEEDED(result)); OnDeviceReset(); m_sceneBegun = false; BeginScene(); }
void WindowResized() { if (d3dmgr == NULL) { return; } IDirect3DSwapChain9 *sc; d3dmgr->GetSwapChain(0, &sc); D3DPRESENT_PARAMETERS d3dpp; sc->GetPresentParameters(&d3dpp); int ww = window_get_width(), wh = window_get_height(); d3dpp.BackBufferWidth = ww <= 0 ? 1 : ww; d3dpp.BackBufferHeight = wh <= 0 ? 1 : wh; sc->Release(); OnDeviceLost(); d3dmgr->Reset(&d3dpp); OnDeviceReset(); // clear the window color, viewport does not need set because backbuffer was just recreated enigma_user::draw_clear(enigma_user::window_get_color()); }
ui_core::ui_core() { if(!g_dedicated_server) { m_pUICursor = xr_new<CUICursor>(); m_pFontManager = xr_new<CFontManager>(); }else { m_pUICursor = NULL; m_pFontManager = NULL; } m_bPostprocess = false; OnDeviceReset (); m_current_scale = &m_scale_; //. g_current_font_scale = m_scale_; g_current_font_scale.set (1.0f,1.0f); }