小结
- Bevy 的渲染在独立的
RenderApp子应用中运行,与主世界通过ExtractSchedule交换数据 Render调度内部用RenderSystems定义了严格的阶段顺序:ExtractCommands → PrepareMeshes → CreateViews → Specialize → PrepareViews → Queue → PhaseSort → Prepare → Render → Cleanup → PostCleanup- 渲染图(
RenderGraph)是渲染世界的根调度,内部按RenderGraphSystems的 Begin → Render → Submit → Finish 四阶段执行 - 0.19 起不再有渲染图节点机制——节点就是系统,依赖就是调度排序 API(
.chain()、.before()、.after()) - 自定义标签就是
SystemSet,与主世界用法一致 - 大多数游戏不需要直接操作
RenderApp——高层 API 已经封装了渲染细节
练习
- 日志追踪:在 Listing 37-2 的每个系统中加入
info!日志,运行游戏观察各阶段的执行顺序。 - 自定义系统:修改 Listing 37-5,把
log_frame_in_graph放进RenderGraphSystems::Begin集合,观察日志顺序变化。 - 读源码:打开
vendor/bevy/crates/bevy_render/src/lib.rs,找到Render调度的configure_sets调用,画出各阶段集合的依赖关系。