| 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); |
nothing calls this directly
no test coverage detected