diff --git a/overlay_experimental/windows/DX10_Hook.cpp b/overlay_experimental/windows/DX10_Hook.cpp index e44d55e..800b123 100644 --- a/overlay_experimental/windows/DX10_Hook.cpp +++ b/overlay_experimental/windows/DX10_Hook.cpp @@ -80,17 +80,19 @@ void DX10_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain) initialized = true; } - ImGui_ImplDX10_NewFrame(); - Windows_Hook::Inst()->prepareForOverlay(desc.OutputWindow); + if (ImGui_ImplDX10_NewFrame()) + { + 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); - ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData()); + pDevice->OMSetRenderTargets(1, &mainRenderTargetView, NULL); + ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData()); + } } HRESULT STDMETHODCALLTYPE DX10_Hook::MyPresent(IDXGISwapChain *_this, UINT SyncInterval, UINT Flags) diff --git a/overlay_experimental/windows/DX11_Hook.cpp b/overlay_experimental/windows/DX11_Hook.cpp index 1e96cb0..dc56b14 100644 --- a/overlay_experimental/windows/DX11_Hook.cpp +++ b/overlay_experimental/windows/DX11_Hook.cpp @@ -92,17 +92,19 @@ void DX11_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain) initialized = true; } - ImGui_ImplDX11_NewFrame(); - Windows_Hook::Inst()->prepareForOverlay(desc.OutputWindow); + if (ImGui_ImplDX11_NewFrame()) + { + 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); - ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); + pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL); + ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); + } } HRESULT STDMETHODCALLTYPE DX11_Hook::MyPresent(IDXGISwapChain *_this, UINT SyncInterval, UINT Flags) diff --git a/overlay_experimental/windows/DX12_Hook.cpp b/overlay_experimental/windows/DX12_Hook.cpp index 30ff4ab..d5de26b 100644 --- a/overlay_experimental/windows/DX12_Hook.cpp +++ b/overlay_experimental/windows/DX12_Hook.cpp @@ -176,39 +176,40 @@ void DX12_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain) pDevice->Release(); } - ImGui_ImplDX12_NewFrame(); - Windows_Hook::Inst()->prepareForOverlay(sc_desc.OutputWindow); - - ImGui::NewFrame(); - - get_steam_client()->steam_overlay->OverlayProc(); - - UINT bufferIndex = pSwapChain3->GetCurrentBackBufferIndex(); - - D3D12_RESOURCE_BARRIER barrier = {}; - 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(); - pCmdList->Reset(pCmdAlloc[bufferIndex], NULL); - pCmdList->ResourceBarrier(1, &barrier); - pCmdList->OMSetRenderTargets(1, &mainRenderTargets[bufferIndex], FALSE, NULL); - pCmdList->SetDescriptorHeaps(1, &pSrvDescHeap); + if (ImGui_ImplDX12_NewFrame()) + { + Windows_Hook::Inst()->prepareForOverlay(sc_desc.OutputWindow); - ImGui::Render(); - ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList); + ImGui::NewFrame(); - barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; - barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT; - pCmdList->ResourceBarrier(1, &barrier); - pCmdList->Close(); + get_steam_client()->steam_overlay->OverlayProc(); - pCmdQueue->ExecuteCommandLists(1, (ID3D12CommandList**)&pCmdList); + UINT bufferIndex = pSwapChain3->GetCurrentBackBufferIndex(); + D3D12_RESOURCE_BARRIER barrier = {}; + 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(); + pCmdList->Reset(pCmdAlloc[bufferIndex], NULL); + pCmdList->ResourceBarrier(1, &barrier); + pCmdList->OMSetRenderTargets(1, &mainRenderTargets[bufferIndex], FALSE, NULL); + pCmdList->SetDescriptorHeaps(1, &pSrvDescHeap); + + ImGui::Render(); + ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), 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(); } diff --git a/overlay_experimental/windows/DX9_Hook.cpp b/overlay_experimental/windows/DX9_Hook.cpp index da545b4..5e7421d 100644 --- a/overlay_experimental/windows/DX9_Hook.cpp +++ b/overlay_experimental/windows/DX9_Hook.cpp @@ -75,16 +75,18 @@ void DX9_Hook::prepareForOverlay(IDirect3DDevice9 *pDevice) initialized = true; } - ImGui_ImplDX9_NewFrame(); - Windows_Hook::Inst()->prepareForOverlay(param.hFocusWindow); + if (ImGui_ImplDX9_NewFrame()) + { + 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) diff --git a/overlay_experimental/windows/OpenGL_Hook.cpp b/overlay_experimental/windows/OpenGL_Hook.cpp index 9cdd7f4..934066a 100644 --- a/overlay_experimental/windows/OpenGL_Hook.cpp +++ b/overlay_experimental/windows/OpenGL_Hook.cpp @@ -83,16 +83,18 @@ void OpenGL_Hook::prepareForOverlay(HDC hDC) initialized = true; } - ImGui_ImplOpenGL3_NewFrame(); - Windows_Hook::Inst()->prepareForOverlay(hWnd); + if (ImGui_ImplOpenGL3_NewFrame()) + { + 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)