3.1 KiB
3.1 KiB
XCUI Subplan 05: ImGui Transition Backend
归档日期:
2026-04-04
状态:
- 已完成
本次实际完成内容:
- 新增 XCUI 绘制数据契约:
UIColor、UIDrawCommandType、UIDrawCommand、UIDrawList、UIDrawData - 新增
ImGuiTransitionBackend过渡后端,支持FilledRect、RectOutline、Text、Image、PushClipRect、PopClipRect - 新增最小 editor 接入样例
XCUIDemoPanel,用于在现有编辑器壳层中演示 XCUI draw data 到 ImGui draw call 的过渡链路 - 将 demo panel 接入 editor workspace,并补齐 editor/tests 构建入口
- 新增 Subplan-05 配套测试,覆盖 draw data 聚合与 backend flush 行为
本次涉及文件:
editor/CMakeLists.txteditor/src/Core/EditorWorkspace.heditor/src/XCUIBackend/ImGuiTransitionBackend.heditor/src/panels/XCUIDemoPanel.cppeditor/src/panels/XCUIDemoPanel.hengine/include/XCEngine/UI/DrawData.htests/editor/CMakeLists.txttests/editor/test_xcui_draw_data.cpptests/editor/test_xcui_imgui_transition_backend.cpp
验证结果:
cmake --build . --config Debug --target editor_tests -- /m:1 /p:CL_MPCount=1ctest -C Debug -R "XCUIDrawDataTest|XCUIImGuiTransitionBackendTest" --output-on-failure- 结果:
4/4通过 cmake --build . --config Debug --target XCEditor -- /m:1 /p:UseMultiToolTask=false /p:CL_MPCount=1- 结果:通过
提交记录:
75ded6fAdd XCUI ImGui transition backend MVP
当前结论:
Subplan-05的最小过渡后端已经可用,可以作为 XCUI 在 editor 中落地的第一层渲染适配桥- XCUI 逻辑层仍然不直接依赖 ImGui API,ImGui 仅存在于过渡 backend 和 editor 接入层
- 后续
Subplan-08、Subplan-09可以直接基于这套 draw data 和 transition backend 继续推进
原始 subplan 内容归档如下:
Subplan 05:XCUI ImGui Transition Backend
目标:
- 在过渡阶段,让 ImGui 只承担宿主窗口和 draw submission 容器的职责
- 由 XCUI 自己生成 draw list,再交给 ImGui backend 落屏
负责人边界:
- 负责
editor/src/XCUIBackend/或等价新目录 - 负责 XCUI draw primitive 到 ImGui draw call 的映射
- 不负责 XCUI tree、布局、样式的内部规则
建议目录:
editor/src/XCUIBackend/editor/src/UI/中与 XCUI backend 直接相关的桥接代码tests/Editor中 backend 相关测试
前置依赖:
- 需要
Subplan-01给出稳定 draw data 和 frame submission 契约 - 需要
Subplan-03提供样式查询结果
现在就可以先做的内容:
- 定义
UIDrawList/UIDrawCommand/UIDrawText/UIDrawImage/UIDrawClip - 先做矩形、边框、文字、图片四类 primitive
- 设计 frame begin / submit / end 的 adapter 流程
- 写一个最小 demo panel,用 XCUI draw list 通过 ImGui 显示
明确不做:
- 不做 RHI native backend
- 不做 docking 逻辑
交付物:
- XCUI 到 ImGui 的过渡 backend
- primitive 转换测试或快照测试
- 最小 editor 接入样例
验收标准:
- XCUI 逻辑层不直接依赖 ImGui API
- ImGui 只出现在 backend 适配层
- 可以渲染基础控件和文本