extern crate sdl2;
use sdl2::pixels::PixelFormatEnum;
use sdl2::rect::Rect;
use sdl2::keycode::KeyCode;
pub fn main() {
let sdl_context = sdl2::init().video().unwrap();
let window = sdl_context.window("rust-sdl2 demo: Video", 800, 600)
.position_centered()
.opengl()
.build()
.unwrap();
let mut renderer = window.renderer().build().unwrap();
let mut texture = renderer.create_texture_streaming(PixelFormatEnum::RGB24, (256, 256)).unwrap();
texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
for y in (0..256) {
for x in (0..256) {
let offset = y*pitch + x*3;
buffer[offset + 0] = x as u8;
buffer[offset + 1] = y as u8;
buffer[offset + 2] = 0;
}
}
}).unwrap();
let mut drawer = renderer.drawer();
drawer.clear();
drawer.copy(&texture, None, Some(Rect::new(100, 100, 256, 256)));
drawer.copy_ex(&texture, None, Some(Rect::new(450, 100, 256, 256)), 30.0, None, (false, false));
drawer.present();
let mut running = true;
let mut event_pump = sdl_context.event_pump();
while running {
for event in event_pump.poll_iter() {
use sdl2::event::Event;
match event {
Event::Quit {..} | Event::KeyDown { keycode: KeyCode::Escape, .. } => {
running = false
},
_ => {}
}
}
}
}