#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] use std::{num::NonZeroU32, sync::Arc}; use alligator_render::{Instance, RenderWindowConfig, Renderer}; #[profiling::function] fn update(renderer: &mut Renderer) { let camera = renderer.camera_mut(); camera.set_rotation(camera.rotation() + 0.01); } fn main() { // configure the render window let render_config = RenderWindowConfig { title: "Bumper Stickers", instance_capacity: 2, default_width: NonZeroU32::new(1280).unwrap(), default_height: NonZeroU32::new(720).unwrap(), //mode: alligator_render::config::WindowMode::BorderlessFullscreen, //vsync: false, ..Default::default() }; let texture_config = TextureManagerConfig { initial_capacity: 3, max_size: 3_000_000, }; let texture_manager = Arc::new(TextureManager::new(&texture_config)); let mut renderer = Renderer::new(&render_config).unwrap(); // render the alligator let gator = include_bytes!("res/gator.ff"); let gator_id = texture_manager .load_from_memory(gator, ImageFormat::Farbfeld) .unwrap(); renderer.textures_mut().load_texture(gator_id).unwrap(); let gator_width = renderer.textures_mut().texture_width(gator_id).unwrap(); let gator_height = renderer.textures_mut().texture_height(gator_id).unwrap(); let gator_x = renderer.textures_mut().texture_x(gator_id).unwrap(); let gator_y = renderer.textures_mut().texture_y(gator_id).unwrap(); renderer.instances_mut().push_instance(Instance { position: [-0.5, 0.5], size: [1.5; 2], z_index: 1.0, 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 = texture_manager .load_from_memory(icon, ImageFormat::Ico) .unwrap(); renderer.textures_mut().load_texture(icon_id).unwrap(); let icon_width = renderer.textures_mut().texture_width(icon_id).unwrap(); let icon_height = renderer.textures_mut().texture_height(icon_id).unwrap(); let icon_x = renderer.textures_mut().texture_x(icon_id).unwrap(); let icon_y = renderer.textures_mut().texture_y(icon_id).unwrap(); renderer.instances_mut().push_instance(Instance { position: [0.5, 0.5], size: [0.75; 2], rotation: 0.5, z_index: 1.0, 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 = texture_manager .load_from_memory(gator, ImageFormat::Bmp) .unwrap(); let gator_width = renderer.textures_mut().texture_width(gator_id).unwrap(); let gator_height = renderer.textures_mut().texture_height(gator_id).unwrap(); let gator_x = renderer.textures_mut().texture_x(gator_id).unwrap(); let gator_y = renderer.textures_mut().texture_y(gator_id).unwrap(); renderer.instances_mut().push_instance(Instance { position: [0.0, -0.5], size: [1.5; 2], texture_size: [gator_width, gator_height], texture_coordinates: [gator_x, gator_y], ..Default::default() }); renderer.run(update); }