aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml3
-rw-r--r--examples/fullscreen.rs22
-rw-r--r--examples/multiwindow.rs16
-rw-r--r--examples/support/mod.rs32
-rw-r--r--examples/window.rs23
5 files changed, 47 insertions, 49 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 93c25a2..c81a97d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,6 +12,3 @@ git = "https://github.com/tomaka/android-rs-glue"
[dev-dependencies.gl_generator]
git = "https://github.com/bjz/gl-rs"
-
-[dev-dependencies.gl]
-git = "https://github.com/bjz/gl-rs"
diff --git a/examples/fullscreen.rs b/examples/fullscreen.rs
index f0aab47..1df5124 100644
--- a/examples/fullscreen.rs
+++ b/examples/fullscreen.rs
@@ -1,15 +1,16 @@
#![feature(phase)]
+#![feature(tuple_indexing)]
#[cfg(target_os = "android")]
#[phase(plugin, link)]
extern crate android_glue;
-extern crate gl;
extern crate gl_init;
-extern crate libc;
use std::io::stdio::stdin;
+mod support;
+
#[cfg(target_os = "android")]
android_start!(main)
@@ -38,24 +39,11 @@ fn main() {
unsafe { window.make_current() };
- gl::load_with(|symbol| window.get_proc_address(symbol));
-
- 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());
- {
- 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);
+ let context = support::load(&window);
while !window.is_closed() {
- gl::Clear(gl::COLOR_BUFFER_BIT);
+ context.draw_frame((0.0, 1.0, 0.0, 1.0));
window.swap_buffers();
println!("{}", window.wait_events().collect::<Vec<gl_init::Event>>());
diff --git a/examples/multiwindow.rs b/examples/multiwindow.rs
index df52ab2..84af061 100644
--- a/examples/multiwindow.rs
+++ b/examples/multiwindow.rs
@@ -1,12 +1,13 @@
#![feature(phase)]
+#![feature(tuple_indexing)]
#[cfg(target_os = "android")]
#[phase(plugin, link)]
extern crate android_glue;
-extern crate gl;
extern crate gl_init;
-extern crate libc;
+
+mod support;
#[cfg(target_os = "android")]
android_start!(main)
@@ -32,17 +33,10 @@ fn main() {
fn run(window: gl_init::Window, color: (f32, f32, f32, f32)) {
unsafe { window.make_current() };
- gl::load_with(|symbol| window.get_proc_address(symbol));
-
- {
- 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());
+ let context = support::load(&window);
while !window.is_closed() {
- gl::Clear(gl::COLOR_BUFFER_BIT);
+ context.draw_frame(color);
window.swap_buffers();
window.wait_events().collect::<Vec<gl_init::Event>>();
diff --git a/examples/support/mod.rs b/examples/support/mod.rs
new file mode 100644
index 0000000..4495f17
--- /dev/null
+++ b/examples/support/mod.rs
@@ -0,0 +1,32 @@
+#[phase(plugin)]
+extern crate gl_generator;
+
+use gl_init;
+
+mod gl {
+ generate_gl_bindings!("gl", "core", "4.5", "struct")
+}
+
+pub struct Context {
+ gl: gl::Gl
+}
+
+pub fn load(window: &gl_init::Window) -> Context {
+ let gl = gl::Gl::load_with(|symbol| window.get_proc_address(symbol));
+
+ 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());
+
+ Context { gl: gl }
+}
+
+impl Context {
+ pub fn draw_frame(&self, color: (f32, f32, f32, f32)) {
+ self.gl.ClearColor(color.0, color.1, color.2, color.3);
+ self.gl.Clear(gl::COLOR_BUFFER_BIT);
+ }
+}
diff --git a/examples/window.rs b/examples/window.rs
index 5621b3c..66ca7ca 100644
--- a/examples/window.rs
+++ b/examples/window.rs
@@ -1,12 +1,13 @@
#![feature(phase)]
+#![feature(tuple_indexing)]
#[cfg(target_os = "android")]
#[phase(plugin, link)]
extern crate android_glue;
-extern crate gl;
extern crate gl_init;
-extern crate libc;
+
+mod support;
#[cfg(target_os = "android")]
android_start!(main)
@@ -16,24 +17,10 @@ fn main() {
unsafe { window.make_current() };
- gl::load_with(|symbol| window.get_proc_address(symbol));
-
- 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());
-
- {
- 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);
+ let context = support::load(&window);
while !window.is_closed() {
- gl::Clear(gl::COLOR_BUFFER_BIT);
+ context.draw_frame((0.0, 1.0, 0.0, 1.0));
window.swap_buffers();
println!("{}", window.wait_events().collect::<Vec<gl_init::Event>>());