Files
XCEngine/docs/api/XCEngine/Editor/Application/Render.md

1.5 KiB
Raw Blame History

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() 中:

  1. m_windowRenderer.BeginFrame()
  2. m_imguiBackend.BeginFrame()
  3. m_viewportHostService.BeginFrame()
  4. m_layerStack.onImGuiRender()
  5. UpdateWindowTitle()
  6. ImGui::Render()
  7. m_windowRenderer.Render(...)

在最后一步里,当前还会通过 beforeUiRender 回调执行:

m_viewportHostService.RenderRequestedViewports(*m_editorContext, renderContext);

因此 Scene / Game 视口内容会先于主窗口 ImGui draw data 提交。

设计含义

  • Application::Render() 当前负责的是“帧边界 + 调度顺序”,而不是面板业务本身。
  • LayerStack 采集 UI 和视口请求,ViewportHostService 真正渲染被请求的视口。

相关文档