Check if we actually created a new frame

merge-requests/28/head
Nemirtingas 2020-01-10 08:10:33 +01:00
parent 548f21c2f0
commit 0711c83440
5 changed files with 60 additions and 51 deletions

View File

@ -80,17 +80,19 @@ void DX10_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
initialized = true; initialized = true;
} }
ImGui_ImplDX10_NewFrame(); if (ImGui_ImplDX10_NewFrame())
Windows_Hook::Inst()->prepareForOverlay(desc.OutputWindow); {
Windows_Hook::Inst()->prepareForOverlay(desc.OutputWindow);
ImGui::NewFrame(); ImGui::NewFrame();
get_steam_client()->steam_overlay->OverlayProc(); get_steam_client()->steam_overlay->OverlayProc();
ImGui::Render(); ImGui::Render();
pDevice->OMSetRenderTargets(1, &mainRenderTargetView, NULL); pDevice->OMSetRenderTargets(1, &mainRenderTargetView, NULL);
ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData()); ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData());
}
} }
HRESULT STDMETHODCALLTYPE DX10_Hook::MyPresent(IDXGISwapChain *_this, UINT SyncInterval, UINT Flags) HRESULT STDMETHODCALLTYPE DX10_Hook::MyPresent(IDXGISwapChain *_this, UINT SyncInterval, UINT Flags)

View File

@ -92,17 +92,19 @@ void DX11_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
initialized = true; initialized = true;
} }
ImGui_ImplDX11_NewFrame(); if (ImGui_ImplDX11_NewFrame())
Windows_Hook::Inst()->prepareForOverlay(desc.OutputWindow); {
Windows_Hook::Inst()->prepareForOverlay(desc.OutputWindow);
ImGui::NewFrame(); ImGui::NewFrame();
get_steam_client()->steam_overlay->OverlayProc(); get_steam_client()->steam_overlay->OverlayProc();
ImGui::Render(); ImGui::Render();
pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL); pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL);
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
}
} }
HRESULT STDMETHODCALLTYPE DX11_Hook::MyPresent(IDXGISwapChain *_this, UINT SyncInterval, UINT Flags) HRESULT STDMETHODCALLTYPE DX11_Hook::MyPresent(IDXGISwapChain *_this, UINT SyncInterval, UINT Flags)

View File

@ -176,39 +176,40 @@ void DX12_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
pDevice->Release(); pDevice->Release();
} }
ImGui_ImplDX12_NewFrame(); if (ImGui_ImplDX12_NewFrame())
Windows_Hook::Inst()->prepareForOverlay(sc_desc.OutputWindow); {
Windows_Hook::Inst()->prepareForOverlay(sc_desc.OutputWindow);
ImGui::NewFrame(); ImGui::NewFrame();
get_steam_client()->steam_overlay->OverlayProc(); get_steam_client()->steam_overlay->OverlayProc();
UINT bufferIndex = pSwapChain3->GetCurrentBackBufferIndex();
D3D12_RESOURCE_BARRIER barrier = {}; UINT bufferIndex = pSwapChain3->GetCurrentBackBufferIndex();
barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
barrier.Transition.pResource = pBackBuffer[bufferIndex];
barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
pCmdAlloc[bufferIndex]->Reset(); D3D12_RESOURCE_BARRIER barrier = {};
pCmdList->Reset(pCmdAlloc[bufferIndex], NULL); barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
pCmdList->ResourceBarrier(1, &barrier); barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
pCmdList->OMSetRenderTargets(1, &mainRenderTargets[bufferIndex], FALSE, NULL); barrier.Transition.pResource = pBackBuffer[bufferIndex];
pCmdList->SetDescriptorHeaps(1, &pSrvDescHeap); barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
ImGui::Render(); pCmdAlloc[bufferIndex]->Reset();
ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList); pCmdList->Reset(pCmdAlloc[bufferIndex], NULL);
pCmdList->ResourceBarrier(1, &barrier);
pCmdList->OMSetRenderTargets(1, &mainRenderTargets[bufferIndex], FALSE, NULL);
pCmdList->SetDescriptorHeaps(1, &pSrvDescHeap);
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; ImGui::Render();
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT; ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList);
pCmdList->ResourceBarrier(1, &barrier);
pCmdList->Close();
pCmdQueue->ExecuteCommandLists(1, (ID3D12CommandList**)&pCmdList); barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT;
pCmdList->ResourceBarrier(1, &barrier);
pCmdList->Close();
pCmdQueue->ExecuteCommandLists(1, (ID3D12CommandList**)&pCmdList);
}
pSwapChain3->Release(); pSwapChain3->Release();
} }

View File

@ -75,16 +75,18 @@ void DX9_Hook::prepareForOverlay(IDirect3DDevice9 *pDevice)
initialized = true; initialized = true;
} }
ImGui_ImplDX9_NewFrame(); if (ImGui_ImplDX9_NewFrame())
Windows_Hook::Inst()->prepareForOverlay(param.hFocusWindow); {
Windows_Hook::Inst()->prepareForOverlay(param.hFocusWindow);
ImGui::NewFrame(); ImGui::NewFrame();
get_steam_client()->steam_overlay->OverlayProc(); get_steam_client()->steam_overlay->OverlayProc();
ImGui::Render(); ImGui::Render();
ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData()); ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
}
} }
HRESULT STDMETHODCALLTYPE DX9_Hook::MyReset(IDirect3DDevice9* _this, D3DPRESENT_PARAMETERS* pPresentationParameters) HRESULT STDMETHODCALLTYPE DX9_Hook::MyReset(IDirect3DDevice9* _this, D3DPRESENT_PARAMETERS* pPresentationParameters)

View File

@ -83,16 +83,18 @@ void OpenGL_Hook::prepareForOverlay(HDC hDC)
initialized = true; initialized = true;
} }
ImGui_ImplOpenGL3_NewFrame(); if (ImGui_ImplOpenGL3_NewFrame())
Windows_Hook::Inst()->prepareForOverlay(hWnd); {
Windows_Hook::Inst()->prepareForOverlay(hWnd);
ImGui::NewFrame(); ImGui::NewFrame();
get_steam_client()->steam_overlay->OverlayProc(); get_steam_client()->steam_overlay->OverlayProc();
ImGui::Render(); ImGui::Render();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
}
} }
BOOL WINAPI OpenGL_Hook::MywglSwapBuffers(HDC hDC) BOOL WINAPI OpenGL_Hook::MywglSwapBuffers(HDC hDC)