Skip to content

Instantly share code, notes, and snippets.

@ysmolski
Created November 21, 2014 15:10
Show Gist options
  • Save ysmolski/28e06d30e9fa0fc7fcc7 to your computer and use it in GitHub Desktop.
Save ysmolski/28e06d30e9fa0fc7fcc7 to your computer and use it in GitHub Desktop.
extern crate sdl2;
extern crate native;
use sdl2::video::{Window, PosCentered, OPENGL, ALLOW_HIGHDPI};
use sdl2::event::{QuitEvent, poll_event};
use sdl2::surface::{Surface};
fn main() {
sdl2::init(sdl2::INIT_EVERYTHING);
let window = match Window::new("eg04", PosCentered, PosCentered, 640, 480, OPENGL | ALLOW_HIGHDPI) {
Ok(window) => window,
Err(err) => panic!("failed to create window: {}", err)
};
let renderer = match sdl2::render::Renderer::from_window(window, sdl2::render::DriverAuto, sdl2::render::ACCELERATED) {
Ok(renderer) => renderer,
Err(err) => panic!("failed to create renderer: {}", err)
};
// Load a surface.
// Surfaces live in system RAM, so they aren't ideal for performance.
let surface = match Surface::from_bmp(&Path::new("res/ice-troll.bmp")) {
Ok(surface) => surface,
Err(err) => panic!("failed to load surface: {}", err)
};
// Convert a surface to a texture.
// Textures can be used more efficiently by the GPU. (If one is available.)
let texture = match renderer.create_texture_from_surface(&surface) {
Ok(texture) => texture,
Err(err) => panic!("failed to convert surface: {}", err)
};
let _ = renderer.clear();
// Display the texture.
// Omitting the src & dst Rect arguments will cause our image to stretch across the entire buffer.
// Try passing Some(surface.get_rect()) for src & dst instead of None & see how things change.
let _ = renderer.copy(&texture, Some(surface.get_rect()), Some(surface.get_rect()));
let _ = renderer.present();
// loop until we receive a QuitEvent
'event : loop {
match poll_event() {
QuitEvent(_) => break 'event,
_ => continue
}
}
sdl2::quit();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment