Ich will in meiner Applikation per Kommando von Windowed auf FullScreen oder von FullScreen auf Windowed bei gleich bleibender Auflösung umschalten können. Wenn ich das von FullScreen auf Windowed machen so funktioniert das so weit auch aber wenn ich umgekehrt von Windowed auf FullScreen umschalte dann fährt er nur kurz (für einen Augenblick, nur Modeswitch) im FullScreen und wechselt aber sofort wider in den Windowed Modus.
Hier das Code-Stück das beides bewerkstelligt, sowohl FS -> W als auch W -> FS
Code: Alles auswählen
if(dxCore->mpRenderTargetView)
dxCore->mpRenderTargetView->Release();
if(dxCore->mpDepthStencilView)
dxCore->mpDepthStencilView->Release();
if(dxCore->mpDepthStencilState)
dxCore->mpDepthStencilState->Release();
if(dxCore->mpDepthStencil)
dxCore->mpDepthStencil->Release();
DXConfig::SetFullScreenMode(pFullScreen);
DXGI_MODE_DESC modeDesc;
modeDesc.Format = DXConfig::ColorMode();
modeDesc.Height = DXConfig::WindowHeight();
modeDesc.Width = DXConfig::WindowWidth();
modeDesc.RefreshRate.Numerator = DXConfig::RefreshRate();
modeDesc.RefreshRate.Denominator = 1;
modeDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
modeDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
dxCore->mpSwapChain->ResizeTarget(&modeDesc);
if(DXConfig::SetFullScreenMode(pFullScreen))
if(FAILED(dxCore->mpSwapChain->SetFullscreenState(TRUE,NULL)))
return Core::Logging::LogError(L"Setting screen mode failed!");
else
if(FAILED(dxCore->mpSwapChain->SetFullscreenState(FALSE,NULL)))
return Core::Logging::LogError(L"Setting screen mode failed!");
if(!dxCore->CreateRenderTargetView())
return Core::Logging::LogError(L"CreateRenderTargetView failed!");
if(!dxCore->CreateDepthStencil())
return Core::Logging::LogError(L"CreateDepthStencil failed!");
// Set the Render Target
dxCore->mpD3DDevice->OMSetRenderTargets(1,&dxCore->mpRenderTargetView,dxCore->mpDepthStencilView);
Karl