# RenderSceneExtractor::Extract ```cpp RenderSceneData Extract( const Components::Scene& scene, Components::CameraComponent* overrideCamera, uint32_t viewportWidth, uint32_t viewportHeight) const; ``` ## 行为说明 当前实现会: 1. 调用 [SelectCamera](SelectCamera.md) 解析实际使用的相机。 2. 如果没有可用相机,直接返回空的 `RenderSceneData`。 3. 基于选中的相机和 viewport 尺寸生成 `RenderCameraData`。 4. 从场景所有 root game object 开始递归收集 `visibleItems`。 5. 对 `visibleItems` 做稳定排序。 6. 提取主方向光到 `lighting`。 ## 参数 - `scene` - 要提取的场景。 - `overrideCamera` - 可选的 override 相机;可用时具有最高优先级。 - `viewportWidth` - 当前 viewport 宽度。 - `viewportHeight` - 当前 viewport 高度。 ## 返回值 - 一份 `RenderSceneData`。 - 若没有可用相机,返回值中的 `camera` 为空,`visibleItems` 也为空。 ## 当前实现细节 - 当前会使用选中相机的 `GetCullingMask()` 过滤对象层。 - `visibleItems` 是当前真正的输出字段,不是旧文档里的 `visibleObjects`。 - 排序时会按 `renderQueue` 和透明/非透明距离方向处理。 ## 相关文档 - [RenderSceneExtractor](RenderSceneExtractor.md) - [ExtractForCamera](ExtractForCamera.md) - [SelectCamera](SelectCamera.md)