Created
November 21, 2014 15:10
-
-
Save ysmolski/28e06d30e9fa0fc7fcc7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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