Skip to content

小结

  • 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 已经封装了渲染细节

练习

  1. 日志追踪:在 Listing 37-2 的每个系统中加入 info! 日志,运行游戏观察各阶段的执行顺序。
  2. 自定义系统:修改 Listing 37-5,把 log_frame_in_graph 放进 RenderGraphSystems::Begin 集合,观察日志顺序变化。
  3. 读源码:打开 vendor/bevy/crates/bevy_render/src/lib.rs,找到 Render 调度的 configure_sets 调用,画出各阶段集合的依赖关系。