// Set the fullscreen mode to a desired state //----------------------------------------------------------------------------- void CPUT_OGL::CPUTSetFullscreenState(bool bIsFullscreen) { // get the current fullscreen state bool bCurrentFullscreenState = CPUTGetFullscreenState(); if((bool)bCurrentFullscreenState == bIsFullscreen) { // no need to call expensive state change, full screen state is already // in desired state return; } // set the fullscreen state // HRESULT hr = mpSwapChain->SetFullscreenState(bIsFullscreen, NULL); // ASSERT( SUCCEEDED(hr), _L("Failed toggling full screen mode.") ); // trigger resize event so that all buffers can resize int x,y,width,height; mpWindow->GetClientDimensions(&x, &y, &width, &height); ResizeWindow(width,height); // trigger a fullscreen mode change call if the sample has decided to handle the mode change FullscreenModeChange( bIsFullscreen ); }
// Toggle the fullscreen mode // This routine keeps the current desktop resolution. DougB suggested allowing // one to go fullscreen in a different resolution //----------------------------------------------------------------------------- CPUTResult CPUT_DX11::CPUTToggleFullScreenMode() { // get the current fullscreen state bool bIsFullscreen = CPUTGetFullscreenState(); // toggle the state bIsFullscreen = !bIsFullscreen; // set the fullscreen state HRESULT hr = mpSwapChain->SetFullscreenState(bIsFullscreen, NULL); ASSERT( SUCCEEDED(hr), _L("Failed toggling full screen mode.") ); // trigger resize event so that all buffers can resize int x,y,width,height; CPUTOSServices::GetOSServices()->GetClientDimensions(&x, &y, &width, &height); ResizeWindow(width,height); // trigger a fullscreen mode change call if the sample has decided to handle the mode change FullscreenModeChange( bIsFullscreen ); return CPUT_SUCCESS; }