From 5d5525ce9201d1a6388260285268baff6019be93 Mon Sep 17 00:00:00 2001 From: Micha White Date: Thu, 13 Oct 2022 09:39:05 -0400 Subject: Better example + bug fixes --- examples/bmp.rs | 61 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 15 deletions(-) (limited to 'examples/bmp.rs') diff --git a/examples/bmp.rs b/examples/bmp.rs index af425ff..f029efc 100644 --- a/examples/bmp.rs +++ b/examples/bmp.rs @@ -8,7 +8,7 @@ use winit::event_loop::EventLoop; fn main() { // configure the render window let config = RenderWindowConfig { - title: "Bumper Sticker", + title: "A Bumper Sticker and an Icon for Hire", instance_capacity: 2, default_width: NonZeroU32::new(1280).unwrap(), default_height: NonZeroU32::new(720).unwrap(), @@ -17,33 +17,64 @@ fn main() { ..Default::default() }; - let texture = include_bytes!("res/sample.bmp"); - let event_loop = EventLoop::new(); let mut renderer = Renderer::new(&config, &event_loop).unwrap(); - let texture = renderer + // render the alligator + let gator = include_bytes!("res/gator.ff"); + let gator_id = renderer + .textures_mut() + .load_from_memory(gator, ImageFormat::Farbfeld) + .unwrap(); + let gator_width = renderer.textures().texture_width(gator_id).unwrap(); + let gator_height = renderer.textures().texture_height(gator_id).unwrap(); + let gator_x = renderer.textures().texture_x(gator_id).unwrap(); + let gator_y = renderer.textures().texture_y(gator_id).unwrap(); + + renderer.instances_mut().push_instance(Instance { + position: [-0.5, 0.5], + size: [0.75; 2], + texture_size: [gator_width, gator_height], + texture_coordinates: [gator_x, gator_y], + ..Default::default() + }); + + // render the ghost + let icon = include_bytes!("res/ghost.ico"); + let icon_id = renderer .textures_mut() - .load_from_memory(texture, ImageFormat::Bmp) + .load_from_memory(icon, ImageFormat::Ico) .unwrap(); - let width = renderer.textures().texture_width(texture).unwrap(); - let height = renderer.textures().texture_height(texture).unwrap(); - let x = renderer.textures().texture_x(texture).unwrap(); - let y = renderer.textures().texture_y(texture).unwrap(); + let icon_width = renderer.textures().texture_width(icon_id).unwrap(); + let icon_height = renderer.textures().texture_height(icon_id).unwrap(); + let icon_x = renderer.textures().texture_x(icon_id).unwrap(); + let icon_y = renderer.textures().texture_y(icon_id).unwrap(); + // TODO we can make a helper function that makes a square to fit a texture renderer.instances_mut().push_instance(Instance { - position: [-0.5, 0.0], + position: [0.5, 0.5], size: [0.75; 2], - texture_size: [width, height], - texture_coordinates: [x, y], + texture_size: [icon_width, icon_height], + texture_coordinates: [icon_x, icon_y], ..Default::default() }); + // render the bitmap alligator + let gator = include_bytes!("res/gator.bmp"); + let gator_id = renderer + .textures_mut() + .load_from_memory(gator, ImageFormat::Bmp) + .unwrap(); + let gator_width = renderer.textures().texture_width(gator_id).unwrap(); + let gator_height = renderer.textures().texture_height(gator_id).unwrap(); + let gator_x = renderer.textures().texture_x(gator_id).unwrap(); + let gator_y = renderer.textures().texture_y(gator_id).unwrap(); + renderer.instances_mut().push_instance(Instance { - position: [0.5, 0.0], + position: [0.0, -0.5], size: [0.75; 2], - texture_size: [width, height], - texture_coordinates: [x, y], + texture_size: [gator_width, gator_height], + texture_coordinates: [gator_x, gator_y], ..Default::default() }); -- cgit v1.2.3