use minifb::{Key, ScaleMode, Window, WindowOptions}; const WIDTH: usize = 640 / 2; const HEIGHT: usize = 360 / 2; fn main() { let mut noise; let mut carry; let mut seed = 0xbeefu32; let mut window = Window::new( "Noise Test - Press ESC to exit", WIDTH, HEIGHT, WindowOptions { resize: true, scale_mode: ScaleMode::UpperLeft, ..WindowOptions::default() }, ) .expect("Unable to create window"); // Limit to max ~60 fps update rate window.limit_update_rate(Some(std::time::Duration::from_micros(16600))); let mut buffer: Vec = Vec::with_capacity(WIDTH * HEIGHT); let mut size = (0, 0); while window.is_open() && !window.is_key_down(Key::Escape) { let new_size = (window.get_size().0, window.get_size().1); if new_size != size { size = new_size; buffer.resize(size.0 * size.1, 0); } for i in buffer.iter_mut() { noise = seed; noise >>= 3; noise ^= seed; carry = noise & 1; noise >>= 1; seed >>= 1; seed |= carry << 30; noise &= 0xFF; *i = (noise << 16) | (noise << 8) | noise; } window.get_keys().map(|keys| { for t in keys { match t { Key::W => println!("holding w!"), Key::T => println!("holding t!"), _ => (), } } }); window.get_keys_released().map(|keys| { for t in keys { match t { Key::W => println!("released w!"), Key::T => println!("released t!"), _ => (), } } }); window .update_with_buffer(&buffer, new_size.0, new_size.1) .unwrap(); } }