From a1b98abfbb528b364b39cc5feb427262b0a1a927 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Sun, 5 Apr 2026 06:41:32 +0800 Subject: [PATCH] Finalize XCUI hosted preview texture registration flow --- new_editor/src/Application.cpp | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/new_editor/src/Application.cpp b/new_editor/src/Application.cpp index bff9c552..d379b5ab 100644 --- a/new_editor/src/Application.cpp +++ b/new_editor/src/Application.cpp @@ -344,11 +344,9 @@ void Application::ShutdownRenderer() { void Application::DestroyHostedPreviewSurfaces() { for (HostedPreviewOffscreenSurface& previewSurface : m_hostedPreviewSurfaces) { - if (previewSurface.imguiCpuHandle.ptr != 0) { + if (previewSurface.textureRegistration.cpuHandle.ptr != 0) { if (m_windowCompositor != nullptr) { - m_windowCompositor->FreeTextureDescriptor( - previewSurface.imguiCpuHandle, - previewSurface.imguiGpuHandle); + m_windowCompositor->FreeTextureDescriptor(previewSurface.textureRegistration); } } ShutdownAndDelete(previewSurface.colorView); @@ -436,18 +434,14 @@ bool Application::EnsureHostedPreviewSurface( return true; } - if (previewSurface.imguiCpuHandle.ptr != 0) { + if (previewSurface.textureRegistration.cpuHandle.ptr != 0) { if (m_windowCompositor != nullptr) { - m_windowCompositor->FreeTextureDescriptor( - previewSurface.imguiCpuHandle, - previewSurface.imguiGpuHandle); + m_windowCompositor->FreeTextureDescriptor(previewSurface.textureRegistration); } } ShutdownAndDelete(previewSurface.colorView); ShutdownAndDelete(previewSurface.colorTexture); - previewSurface.imguiCpuHandle = {}; - previewSurface.imguiGpuHandle = {}; - previewSurface.imguiTextureId = {}; + previewSurface.textureRegistration = {}; previewSurface.width = width; previewSurface.height = height; previewSurface.colorState = ::XCEngine::RHI::ResourceStates::Common; @@ -484,14 +478,10 @@ bool Application::EnsureHostedPreviewSurface( !m_windowCompositor->CreateTextureDescriptor( m_windowRenderer.GetRHIDevice(), previewSurface.colorTexture, - &previewSurface.imguiCpuHandle, - &previewSurface.imguiGpuHandle, - &previewSurface.imguiTextureId)) { + previewSurface.textureRegistration)) { ShutdownAndDelete(previewSurface.colorView); ShutdownAndDelete(previewSurface.colorTexture); - previewSurface.imguiCpuHandle = {}; - previewSurface.imguiGpuHandle = {}; - previewSurface.imguiTextureId = {}; + previewSurface.textureRegistration = {}; return false; } @@ -849,14 +839,9 @@ void Application::RenderQueuedHostedPreviews( drainStats.renderedDrawListCount += overlayStats.drawListCount; drainStats.renderedCommandCount += overlayStats.renderedCommandCount; drainStats.skippedCommandCount += overlayStats.skippedCommandCount; - ::XCEngine::UI::UITextureHandle previewTexture = {}; - previewTexture.nativeHandle = static_cast(previewSurface.imguiTextureId); - previewTexture.width = previewSurface.width; - previewTexture.height = previewSurface.height; - previewTexture.kind = ::XCEngine::UI::UITextureHandleKind::ImGuiDescriptor; m_hostedPreviewSurfaceRegistry.UpdateSurface( queuedFrame.debugName, - previewTexture, + previewSurface.textureRegistration.texture, ::XCEngine::UI::UIRect( 0.0f, 0.0f,