47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# 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)
|