From b6299e80488dec9d8820051ac2e642fa1eaaddb2 Mon Sep 17 00:00:00 2001 From: emil28092005 Date: Fri, 19 Jun 2026 08:46:22 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20capture=20video=20frame=20before=20ImGui?= =?UTF-8?q?=20=E2=80=94=20no=20UI=20in=20recordings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moved CaptureFrame call before _imGui.Render() so the screenshot buffer contains only the 3D scene without ImGui overlay. --- src/Engine.Graphics.Vulkan/VulkanRenderer.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Engine.Graphics.Vulkan/VulkanRenderer.cs b/src/Engine.Graphics.Vulkan/VulkanRenderer.cs index 628c444..b9eaad4 100644 --- a/src/Engine.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Engine.Graphics.Vulkan/VulkanRenderer.cs @@ -505,16 +505,16 @@ public sealed unsafe class VulkanRenderer : IRenderer, Engine.Graphics.IScreensh Vk.vkCmdDrawIndexed(cmd, dc.indexCount, 1, 0, 0, 0); } - _imGui?.Render(cmd, _swapchain.Extent.Width, _swapchain.Extent.Height); - - Vk.vkCmdEndRendering(cmd); - - // Capture frame for video recording if enabled + // Capture frame BEFORE ImGui (video without UI) if (IsRecording) { CapturedFrame = CaptureFrame(cmd, imageIndex); } + _imGui?.Render(cmd, _swapchain.Extent.Width, _swapchain.Extent.Height); + + Vk.vkCmdEndRendering(cmd); + TransitionImageLayout(cmd, _swapchain.Images[imageIndex], VkImageLayout.ColorAttachmentOptimal, VkImageLayout.PresentSrcKHR, 0x400, 0x100,