feat: add editor viewport host service

This commit is contained in:
2026-03-28 17:04:14 +08:00
parent 6fcb6ac8fb
commit 3b652ac1db
12 changed files with 492 additions and 2 deletions

View File

@@ -16,6 +16,7 @@
#include <XCEngine/RHI/D3D12/D3D12SwapChain.h>
#include <d3d12.h>
#include <functional>
#include <vector>
#include <windows.h>
@@ -154,7 +155,10 @@ public:
RecreateBackBufferViews();
}
void Render(UI::ImGuiBackendBridge& imguiBackend, const float clearColor[4]) {
void Render(
UI::ImGuiBackendBridge& imguiBackend,
const float clearColor[4],
const std::function<void(const Rendering::RenderContext&)>& beforeUiRender = {}) {
auto* d3d12Queue = GetD3D12CommandQueue();
auto* d3d12CommandList = GetD3D12CommandList();
if (m_swapChain == nullptr ||
@@ -167,6 +171,10 @@ public:
d3d12Queue->WaitForPreviousFrame();
m_commandList->Reset();
if (beforeUiRender) {
beforeUiRender(GetRenderContext());
}
const uint32_t backBufferIndex = m_swapChain->GetCurrentBackBufferIndex();
if (backBufferIndex >= m_backBufferViews.size() || m_backBufferViews[backBufferIndex] == nullptr) {
return;