extern crate sdl2; mod object; mod ray; mod render; mod sphere; use render::render; use sdl2::event::Event; use sdl2::keyboard::Keycode; use sdl2::pixels::PixelFormatEnum; use sdl2::surface::Surface; fn main() { let sdl_context = sdl2::init().unwrap(); let video_subsystem = sdl_context.video().unwrap(); let window = video_subsystem .window("rust-sdl2 demo", 800, 800) .position_centered() .opengl() .build() .unwrap(); // let surface = Surface::new(512, 512, PixelFormatEnum::RGB24).unwrap(); let mut data = Box::new([255u8; 1_920_000]); // println!("{:?}", data); let mut canvas = window.into_canvas().build().unwrap(); // let mut canvas = surface.into_canvas().unwrap(); //canvas.set_draw_color(Color::RGB(0, 255, 255)); // let surface = Surface::from_data(&mut data, 800, 600, 3, PixelFormatEnum::RGB24).unwrap(); let texture_creator = canvas.texture_creator(); let mut event_pump = sdl_context.event_pump().unwrap(); // let mut i = 0; 'running: loop { render(&mut *data); // put_pixel( // &mut *data, // i, // i, // Color { // r: 0, // g: 0, // b: 0, // a: 0, // }, // ); // if i < 599 { // i += 1; // } // canvas.set_draw_color(Color::RGB(i, 64, 255 - i)); let surface = Surface::from_data(&mut *data, 800, 800, 2400, PixelFormatEnum::RGB24).unwrap(); let texture = texture_creator .create_texture_from_surface(surface) .unwrap(); canvas.copy(&texture, None, None).unwrap(); canvas.present(); for event in event_pump.poll_iter() { match event { Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => break 'running, _ => {} } } } }