Skip to content

Instantly share code, notes, and snippets.

@seemk
Created July 29, 2014 15:25
Show Gist options
  • Save seemk/916f32172c8f81e29845 to your computer and use it in GitHub Desktop.
Save seemk/916f32172c8f81e29845 to your computer and use it in GitHub Desktop.
Possible wrong optimization? renderer.copy renders nothing with optimizations turned on.
extern crate sdl2;
fn main() {
sdl2::init(sdl2::InitVideo);
let window = match sdl2::video::Window::new("Text example",
sdl2::video::PosCentered,
sdl2::video::PosCentered,
640, 480,
sdl2::video::OpenGL) {
Ok(win) => win,
Err(err) => fail!("Error creating window: {}", err)
};
let renderer = match sdl2::render::Renderer::from_window(
window,
sdl2::render::DriverAuto,
sdl2::render::Accelerated) {
Ok(renderer) => renderer,
Err(err) => fail!("Error creating renderer: {}", err)
};
let _ = renderer.set_draw_color(sdl2::pixels::RGB(255, 0, 0));
let _ = renderer.clear();
let surface = match sdl2::surface::Surface::new(sdl2::surface::SWSurface, 100, 100, 32,
0x000000FFu32, 0x0000FF00u32,
0x00FF0000u32, 0xFF000000u32) {
Ok(s) => s,
Err(e) => fail!("Failed to create surface. {}", e)
};
// Make the surface white.
surface.with_lock(|pixels: &mut [u8]| {
for pixel_idx in range(0, pixels.len()) {
pixels[pixel_idx] = 255u8;
}
});
let dst_rect = sdl2::rect::Rect::new(100, 100, 100, 100);
let texture = match renderer.create_texture_from_surface(&surface) {
Ok(t) => t,
Err(e) => fail!("Failed to create texture. {}", e)
};
// Renders a white square on red background. Doesn't render with --opt-level greater than 0.
let _ = renderer.copy(&texture, None, Some(dst_rect));
renderer.present();
'main : loop {
'event : loop {
match sdl2::event::poll_event() {
sdl2::event::QuitEvent(_) => break 'main,
sdl2::event::NoEvent => break 'event,
_ => ()
};
}
}
sdl2::quit();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment