diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/fullscreen.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/fullscreen.rs b/examples/fullscreen.rs new file mode 100644 index 0000000..cfbc35c --- /dev/null +++ b/examples/fullscreen.rs @@ -0,0 +1,48 @@ +extern crate init = "gl-init-rs"; +extern crate libc; +extern crate gl; + +use std::io::stdio::stdin; + +fn main() { + use std::default::Default; + + // enumerating monitors + let monitor = { + for (num, monitor) in init::get_available_monitors().enumerate() { + println!("Monitor #{}: {}", num, monitor.get_name()); + } + + print!("Please write the number of the monitor to use: "); + let num = from_str(stdin().read_line().unwrap().as_slice()).unwrap(); + let monitor = init::get_available_monitors().nth(num).unwrap(); + + println!("Using {}", monitor.get_name()); + + monitor + }; + + let window = init::Window::new(None, "Hello world!", &Default::default(), + Some(monitor)).unwrap(); + + unsafe { window.make_current() }; + + gl::load_with(|symbol| window.get_proc_address(symbol) as *const libc::c_void); + + let version = { + use std::c_str::CString; + unsafe { CString::new(gl::GetString(gl::VERSION) as *const i8, false) } + }; + + println!("OpenGL version {}", version.as_str().unwrap()); + + gl::ClearColor(0.0, 1.0, 0.0, 1.0); + + while !window.is_closed() { + println!("{}", window.wait_events()); + + gl::Clear(gl::COLOR_BUFFER_BIT); + + window.swap_buffers(); + } +} |