Files
XCEngine/docs/api/XCEngine/Rendering/SceneRenderer/SceneRenderer.md

47 lines
1.9 KiB
Markdown
Raw Normal View History

2026-03-26 21:32:43 +08:00
# SceneRenderer
**命名空间**: `XCEngine::Rendering`
**类型**: `class`
**头文件**: `XCEngine/Rendering/SceneRenderer.h`
**描述**: 组织一帧场景渲染流程,负责 scene extraction并把结果交给当前 `RenderPipeline`
## 概述
`SceneRenderer` 是当前渲染模块的主入口。它把“提取场景数据”和“执行具体渲染”两步串起来:
- 内部持有一个 [RenderSceneExtractor](../RenderSceneExtractor/RenderSceneExtractor.md)
- 内部持有一个当前使用的 [RenderPipeline](../RenderPipeline/RenderPipeline.md)
默认情况下,它会创建 [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md)。
## 当前实现边界
- 默认构造会直接创建 `BuiltinForwardPipeline`
- 传入空 pipeline 时,构造函数和 [SetPipeline](SetPipeline.md) 都会退回到 `BuiltinForwardPipeline`
- 析构时如果持有 pipeline会调用其 `Shutdown()`
- [Render](Render.md) 当前只在运行时触发 pipeline 的 `Render()`,并不会显式先调用 `Initialize()`;默认前向管线靠内部 `EnsureInitialized()` 自己兜底。
## 公开方法
| 方法 | 说明 |
|------|------|
| [Constructor](Constructor.md) | 构造场景渲染器。 |
| [Destructor](Destructor.md) | 析构时关闭当前管线。 |
| [SetPipeline](SetPipeline.md) | 替换当前渲染管线。 |
| [GetPipeline](GetPipeline.md) | 获取当前管线指针。 |
| [Render](Render.md) | 渲染一个场景。 |
## 设计说明
`SceneRenderer` 保持得足够薄,是一个正确方向。真正复杂的渲染逻辑应该沉到 pipeline而不是让 renderer 主入口变成一坨硬编码流程。
## 相关文档
- [当前模块](../Rendering.md)
- [RenderSceneExtractor](../RenderSceneExtractor/RenderSceneExtractor.md)
- [RenderPipeline](../RenderPipeline/RenderPipeline.md)
- [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md)