From c0912c9ec4b3080fbff6dc1debd216dbe9fe93e8 Mon Sep 17 00:00:00 2001 From: Tomaka17 Date: Sun, 3 Aug 2014 17:23:08 +0200 Subject: Add example for multiple simultaneous examples --- examples/multiwindow.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/multiwindow.rs (limited to 'examples') diff --git a/examples/multiwindow.rs b/examples/multiwindow.rs new file mode 100644 index 0000000..eeaa7d6 --- /dev/null +++ b/examples/multiwindow.rs @@ -0,0 +1,32 @@ +extern crate init = "gl-init-rs"; +extern crate libc; +extern crate gl; + +fn main() { + let window1 = init::Window::new().unwrap(); + let window2 = init::Window::new().unwrap(); + + spawn(proc() { + run(window1, (0.0, 1.0, 0.0, 1.0)); + }); + + spawn(proc() { + run(window2, (0.0, 0.0, 1.0, 1.0)); + }); +} + +fn run(window: init::Window, color: (f32, f32, f32, f32)) { + unsafe { window.make_current() }; + + gl::load_with(|symbol| window.get_proc_address(symbol) as *const libc::c_void); + + gl::ClearColor(color.val0(), color.val1(), color.val2(), color.val3()); + + while !window.is_closed() { + window.wait_events().collect::>(); + + gl::Clear(gl::COLOR_BUFFER_BIT); + + window.swap_buffers(); + } +} -- cgit v1.2.3 From 92f90220a485caf71947c6bc49e134f555f10235 Mon Sep 17 00:00:00 2001 From: Tomaka17 Date: Thu, 7 Aug 2014 08:53:21 +0200 Subject: Fix events handling in examples --- examples/fullscreen.rs | 5 ++--- examples/multiwindow.rs | 5 ++--- examples/window.rs | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) (limited to 'examples') diff --git a/examples/fullscreen.rs b/examples/fullscreen.rs index e5f8fd4..f05bf9d 100644 --- a/examples/fullscreen.rs +++ b/examples/fullscreen.rs @@ -41,10 +41,9 @@ fn main() { gl::ClearColor(0.0, 1.0, 0.0, 1.0); while !window.is_closed() { - println!("{}", window.wait_events().collect::>()); - gl::Clear(gl::COLOR_BUFFER_BIT); - window.swap_buffers(); + + println!("{}", window.wait_events().collect::>()); } } diff --git a/examples/multiwindow.rs b/examples/multiwindow.rs index eeaa7d6..2ae9c31 100644 --- a/examples/multiwindow.rs +++ b/examples/multiwindow.rs @@ -23,10 +23,9 @@ fn run(window: init::Window, color: (f32, f32, f32, f32)) { gl::ClearColor(color.val0(), color.val1(), color.val2(), color.val3()); while !window.is_closed() { - window.wait_events().collect::>(); - gl::Clear(gl::COLOR_BUFFER_BIT); - window.swap_buffers(); + + window.wait_events().collect::>(); } } diff --git a/examples/window.rs b/examples/window.rs index c366ee0..07f5a84 100644 --- a/examples/window.rs +++ b/examples/window.rs @@ -19,10 +19,9 @@ fn main() { gl::ClearColor(0.0, 1.0, 0.0, 1.0); while !window.is_closed() { - println!("{}", window.wait_events().collect::>()); - gl::Clear(gl::COLOR_BUFFER_BIT); - window.swap_buffers(); + + println!("{}", window.wait_events().collect::>()); } } -- cgit v1.2.3 From 2fdcc1840ba7036bae3f69bc96e2791d6c566291 Mon Sep 17 00:00:00 2001 From: Tomaka17 Date: Thu, 7 Aug 2014 09:32:13 +0200 Subject: Examples now call glViewport --- examples/fullscreen.rs | 7 ++++++- examples/multiwindow.rs | 7 ++++++- examples/window.rs | 5 +++++ 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/fullscreen.rs b/examples/fullscreen.rs index f05bf9d..5cb71f7 100644 --- a/examples/fullscreen.rs +++ b/examples/fullscreen.rs @@ -37,13 +37,18 @@ fn main() { }; println!("OpenGL version {}", version.as_str().unwrap()); + + { + let win_size = window.get_inner_size().unwrap(); + gl::Viewport(0, 0, win_size.val0() as libc::c_int, win_size.val1() as libc::c_int); + } gl::ClearColor(0.0, 1.0, 0.0, 1.0); while !window.is_closed() { gl::Clear(gl::COLOR_BUFFER_BIT); window.swap_buffers(); - + println!("{}", window.wait_events().collect::>()); } } diff --git a/examples/multiwindow.rs b/examples/multiwindow.rs index 2ae9c31..5bc1b07 100644 --- a/examples/multiwindow.rs +++ b/examples/multiwindow.rs @@ -19,13 +19,18 @@ fn run(window: init::Window, color: (f32, f32, f32, f32)) { unsafe { window.make_current() }; gl::load_with(|symbol| window.get_proc_address(symbol) as *const libc::c_void); + + { + let win_size = window.get_inner_size().unwrap(); + gl::Viewport(0, 0, win_size.val0() as libc::c_int, win_size.val1() as libc::c_int); + } gl::ClearColor(color.val0(), color.val1(), color.val2(), color.val3()); while !window.is_closed() { gl::Clear(gl::COLOR_BUFFER_BIT); window.swap_buffers(); - + window.wait_events().collect::>(); } } diff --git a/examples/window.rs b/examples/window.rs index 07f5a84..db80e39 100644 --- a/examples/window.rs +++ b/examples/window.rs @@ -16,6 +16,11 @@ fn main() { println!("OpenGL version {}", version.as_str().unwrap()); + { + let win_size = window.get_inner_size().unwrap(); + gl::Viewport(0, 0, win_size.val0() as libc::c_int, win_size.val1() as libc::c_int); + } + gl::ClearColor(0.0, 1.0, 0.0, 1.0); while !window.is_closed() { -- cgit v1.2.3