I don't quite get how can I create what I'm trying to do with several cameras and Viewports.
I would like to render a backdrop and some static sprite on three different slices of the window. I tried creating three cameras and setting their viewports to target the primary window and then offset their positions, something like this:
let viewport_size = UVec2::new(window_w, window_h / 3);
commands.spawn(Camera2dBundle {
camera: Camera {
target: bevy::render::camera::RenderTarget::Window(bevy::window::WindowRef::Primary),
viewport: Some(Viewport {
physical_position: UVec2::new(0, 0),
physical_size: viewport_size,
..default()
}),
order: -1,
..default()
},
..default()
});
commands.spawn(Camera2dBundle {
camera: Camera {
target: bevy::render::camera::RenderTarget::Window(bevy::window::WindowRef::Primary),
viewport: Some(Viewport {
physical_position: UVec2::new(0, viewport_size.y),
physical_size: viewport_size,
..default()
}),
order: -2,
..default()
},
..default()
});
commands.spawn(Camera2dBundle {
camera: Camera {
target: bevy::render::camera::RenderTarget::Window(bevy::window::WindowRef::Primary),
viewport: Some(Viewport {
physical_position: UVec2::new(0, viewport_size.y * 2),
physical_size: viewport_size,
..default()
}),
order: -3,
..default()
},
..default()
});
tried tweaking the order and changing the viewport positions but I can't seem to make it work. Any ideas?