feat: add explicit camera clear modes

This commit is contained in:
2026-04-01 01:33:46 +08:00
parent 96a66d6f6d
commit 51736253e3
5 changed files with 65 additions and 2 deletions

View File

@@ -26,6 +26,20 @@ bool IsUsableCamera(const Components::CameraComponent* camera) {
camera->GetGameObject()->IsActiveInHierarchy();
}
RenderClearFlags ResolveClearFlags(const Components::CameraComponent& camera, size_t cameraIndex) {
switch (camera.GetClearMode()) {
case Components::CameraClearMode::ColorAndDepth:
return RenderClearFlags::All;
case Components::CameraClearMode::DepthOnly:
return RenderClearFlags::Depth;
case Components::CameraClearMode::None:
return RenderClearFlags::None;
case Components::CameraClearMode::Auto:
default:
return cameraIndex == 0 ? RenderClearFlags::All : RenderClearFlags::Depth;
}
}
} // namespace
SceneRenderer::SceneRenderer() = default;
@@ -88,7 +102,7 @@ std::vector<CameraRenderRequest> SceneRenderer::BuildRenderRequests(
request.context = context;
request.surface = surface;
request.cameraDepth = camera->GetDepth();
request.clearFlags = cameraIndex == 0 ? RenderClearFlags::All : RenderClearFlags::Depth;
request.clearFlags = ResolveClearFlags(*camera, cameraIndex);
requests.push_back(request);
}