Adjust sprite hide bounds for aspect ratio

master
Mark 2023-12-24 07:32:31 -08:00
parent b848515420
commit 0b3f9fdd9e
Signed by: Mark
GPG Key ID: C6D63995FE72FD80
1 changed files with 3 additions and 14 deletions

View File

@ -207,8 +207,8 @@ impl GPUState {
// Game coordinates (relative to camera) of ne and sw corners of screen. // Game coordinates (relative to camera) of ne and sw corners of screen.
// Used to skip off-screen sprites. // Used to skip off-screen sprites.
let clip_ne = Point2::from((-1.0, 1.0)) * game.camera.zoom; let clip_ne = Point2::from((-self.window_aspect, 1.0)) * game.camera.zoom;
let clip_sw = Point2::from((1.0, -1.0)) * game.camera.zoom; let clip_sw = Point2::from((self.window_aspect, -1.0)) * game.camera.zoom;
for s in game.sprites() { for s in game.sprites() {
// Parallax is computed here, so we can check if this sprite is visible. // Parallax is computed here, so we can check if this sprite is visible.
@ -216,11 +216,7 @@ impl GPUState {
let texture = self.texture_array.get_texture(&s.name[..]); let texture = self.texture_array.get_texture(&s.name[..]);
// Game dimensions of this sprite post-scale. // Game dimensions of this sprite post-scale.
// // Don't divide by 2, we use this later.
// We only need height / 2 to check if we're on the screen,
// but we omit the division.
// This gives us a small margin, and lets us re-use the value
// without an extra multiply.
let height = s.height * s.scale; let height = s.height * s.scale;
let width = height * texture.aspect; let width = height * texture.aspect;
@ -234,13 +230,6 @@ impl GPUState {
continue; continue;
} }
// Compute the values we need to draw
// scale: combines texture scale and zoom scale.
// screen_pos: position of this sprite in screen coordinates
//
// We can't use screen_pos to exclude off-screen sprites because
// it can't account for height and width.
instances.push(SpriteInstance { instances.push(SpriteInstance {
position: pos.into(), position: pos.into(),
aspect: texture.aspect, aspect: texture.aspect,