diff options
author | Pierre Krieger <pierre.krieger1708@gmail.com> | 2015-01-23 09:31:05 +0100 |
---|---|---|
committer | Pierre Krieger <pierre.krieger1708@gmail.com> | 2015-01-23 09:33:22 +0100 |
commit | b05ef16d817af85d175d60422591d90fe3ec4218 (patch) | |
tree | b0a55aecc955cfadbebcc20183c9a7eabdcc033b /examples | |
parent | 1d6b863cd454839b8e3cf1e296cbf8f31fb70029 (diff) | |
download | glutin-b05ef16d817af85d175d60422591d90fe3ec4218.tar.gz glutin-b05ef16d817af85d175d60422591d90fe3ec4218.zip |
Implement vsync for x11 and add vsync example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/vsync.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/vsync.rs b/examples/vsync.rs new file mode 100644 index 0000000..ec9ea79 --- /dev/null +++ b/examples/vsync.rs @@ -0,0 +1,46 @@ +#[cfg(target_os = "android")] +#[macro_use] +extern crate android_glue; + +extern crate clock_ticks; +extern crate glutin; + +mod support; + +#[cfg(target_os = "android")] +android_start!(main); + +#[cfg(not(feature = "window"))] +fn main() { println!("This example requires glutin to be compiled with the `window` feature"); } + +#[cfg(feature = "window")] +fn resize_callback(width: u32, height: u32) { + println!("Window resized to {}x{}", width, height); +} + +#[cfg(feature = "window")] +fn main() { + println!("Vsync example. This example may panic if your driver or your system forces \ + you out of vsync. This is intended when `build_strict` is used."); + + let mut window = glutin::WindowBuilder::new().with_vsync().build_strict().unwrap(); + window.set_window_resize_callback(Some(resize_callback as fn(u32, u32))); + unsafe { window.make_current() }; + + let context = support::load(&window); + + while !window.is_closed() { + let before = clock_ticks::precise_time_ns(); + + context.draw_frame((0.0, 1.0, 0.0, 1.0)); + window.swap_buffers(); + + for ev in window.poll_events() { + println!("{:?}", ev); + } + + let after = clock_ticks::precise_time_ns(); + println!("Vsync example - Time of previous frame: {}ms", + (after - before) as f32 / 1000000.0); + } +} |