1.5 KiB
1.5 KiB
Application::Render
命名空间: XCEngine::Editor
类型: method
源文件: editor/src/Application.h
签名
void Render();
作用
推进一帧 Editor update + render,是当前宿主壳对外最重要的逐帧入口。
当前实现行为
- 当
m_renderReady == false时直接返回。 - 否则会用
std::chrono::steady_clock计算当前帧deltaTime。 - 第一帧不会生成有效
deltaTime,而是把它保持在0.0f。 - 随后按顺序执行:
m_layerStack.onUpdate(deltaTime)RenderEditorFrame()
RenderEditorFrame() 当前真实流程
Render() 的核心渲染逻辑当前落在内部 helper RenderEditorFrame() 中:
m_windowRenderer.BeginFrame()m_imguiBackend.BeginFrame()m_viewportHostService.BeginFrame()m_layerStack.onImGuiRender()UpdateWindowTitle()ImGui::Render()m_windowRenderer.Render(...)
在最后一步里,当前还会通过 beforeUiRender 回调执行:
m_viewportHostService.RenderRequestedViewports(*m_editorContext, renderContext);
因此 Scene / Game 视口内容会先于主窗口 ImGui draw data 提交。
设计含义
Application::Render()当前负责的是“帧边界 + 调度顺序”,而不是面板业务本身。LayerStack采集 UI 和视口请求,ViewportHostService真正渲染被请求的视口。