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

47 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)