feat: add explicit camera clear modes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user