Introduce CameraRenderRequest scheduling and fix Vulkan build

This commit is contained in:
2026-03-27 16:57:04 +08:00
parent a72f9f7f05
commit dbec62608c
13 changed files with 605 additions and 21 deletions

View File

@@ -36,24 +36,21 @@ void CameraRenderer::SetPipeline(std::unique_ptr<RenderPipeline> pipeline) {
}
bool CameraRenderer::Render(
const Components::Scene& scene,
Components::CameraComponent* overrideCamera,
const RenderContext& context,
const RenderSurface& surface) {
if (!context.IsValid() || m_pipeline == nullptr) {
const CameraRenderRequest& request) {
if (!request.IsValid() || m_pipeline == nullptr) {
return false;
}
RenderSceneData sceneData = m_sceneExtractor.Extract(
scene,
overrideCamera,
surface.GetWidth(),
surface.GetHeight());
RenderSceneData sceneData = m_sceneExtractor.ExtractForCamera(
*request.scene,
*request.camera,
request.surface.GetWidth(),
request.surface.GetHeight());
if (!sceneData.HasCamera()) {
return false;
}
return m_pipeline->Render(context, surface, sceneData);
return m_pipeline->Render(request.context, request.surface, sceneData);
}
} // namespace Rendering