MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / InitializeScreen

Method InitializeScreen

TombEngine/Renderer/RendererInit.cpp:431–527  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

429 }
430
431 void Renderer::InitializeScreen(int w, int h, HWND handle, bool reset)
432 {
433 DXGI_SWAP_CHAIN_DESC sd;
434 sd.BufferDesc.Width = w;
435 sd.BufferDesc.Height = h;
436 if (!g_Configuration.EnableHighFramerate)
437 {
438 _refreshRate = 30;
439
440 sd.BufferDesc.RefreshRate.Numerator = 0;
441 sd.BufferDesc.RefreshRate.Denominator = 0;
442 }
443 else
444 {
445 _refreshRate = GetCurrentScreenRefreshRate();
446 if (_refreshRate == 0)
447 {
448 _refreshRate = 60;
449 }
450
451 sd.BufferDesc.RefreshRate.Numerator = _refreshRate;
452 sd.BufferDesc.RefreshRate.Denominator = 1;
453 }
454 sd.BufferDesc.RefreshRate.Numerator = 60;
455 sd.BufferDesc.RefreshRate.Denominator = 1;
456 sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
457 sd.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
458 sd.BufferDesc.Scaling = DXGI_MODE_SCALING_STRETCHED;
459 sd.Windowed = true;
460 sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
461 sd.Flags = 0;
462 sd.OutputWindow = handle;
463 sd.SampleDesc.Count = 1;
464 sd.SampleDesc.Quality = 0;
465 sd.BufferCount = 1;
466 sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
467 ComPtr<IDXGIDevice> dxgiDevice;
468 Utils::throwIfFailed(_device.As(&dxgiDevice));
469
470 ComPtr<IDXGIAdapter> dxgiAdapter;
471 Utils::throwIfFailed(dxgiDevice->GetParent(__uuidof(IDXGIAdapter), &dxgiAdapter));
472
473 ComPtr<IDXGIFactory> dxgiFactory;
474 Utils::throwIfFailed(dxgiAdapter->GetParent(__uuidof(IDXGIFactory), &dxgiFactory));
475
476 Utils::throwIfFailed(dxgiFactory->CreateSwapChain(_device.Get(), &sd, &_swapChain));
477
478 dxgiFactory->MakeWindowAssociation(handle, DXGI_MWA_NO_ALT_ENTER);
479
480 // Initialize render targets
481 ID3D11Texture2D* backBufferTexture = NULL;
482 Utils::throwIfFailed(_swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast <void**>(&backBufferTexture)));
483 _backBuffer = RenderTarget2D(_device.Get(), backBufferTexture, DXGI_FORMAT_D24_UNORM_S8_UINT);
484
485 _renderTarget = RenderTarget2D(_device.Get(), w, h, DXGI_FORMAT_R8G8B8A8_UNORM, false, DXGI_FORMAT_D24_UNORM_S8_UINT);
486 _postProcessRenderTarget[0] = RenderTarget2D(_device.Get(), w, h, DXGI_FORMAT_R8G8B8A8_UNORM, false, DXGI_FORMAT_UNKNOWN);
487 _postProcessRenderTarget[1] = RenderTarget2D(_device.Get(), w, h, DXGI_FORMAT_R8G8B8A8_UNORM, false, DXGI_FORMAT_UNKNOWN);
488 _dumpScreenRenderTarget = RenderTarget2D(_device.Get(), w, h, DXGI_FORMAT_R8G8B8A8_UNORM, false, DXGI_FORMAT_D24_UNORM_S8_UINT);

Callers

nothing calls this directly

Calls 5

throwIfFailedFunction · 0.85
RenderTarget2DClass · 0.85
Texture2DArrayClass · 0.85
GetMethod · 0.45

Tested by

no test coverage detected