Go to file
Eduard Bopp 18f9bc44c9 Implement grabbing of the mouse pointer for X11
Contains new methods in the Window API that closely mirror the Xlib API. The
methods are left unimplemented for other platforms for now.
2015-03-25 13:10:55 +01:00
.cargo Add basic support for Android 2014-09-11 18:28:07 +02:00
examples Fix "fullscreen" example with latest rustc 2015-02-05 09:20:12 +01:00
src Implement grabbing of the mouse pointer for X11 2015-03-25 13:10:55 +01:00
tests Add test for WindowProxy to implement Send 2015-02-16 10:29:53 +01:00
.gitattributes Initial commit 2014-07-27 11:41:26 +02:00
.gitignore Add basic support for Android 2014-09-11 18:28:07 +02:00
.gitmodules Add basic support for Android 2014-09-11 18:28:07 +02:00
.travis.yml Pull all dependencies from crates.io 2015-03-13 21:24:59 +01:00
appveyor.yml Update for rust alpha 1.0 2015-01-10 08:23:20 +01:00
build.rs Rustup 2015-03-21 13:43:14 +01:00
Cargo.toml Fix the description in Cargo.toml 2015-03-25 10:52:42 +01:00
LICENSE Initial commit 2014-07-27 11:41:26 +02:00
README.md Minor changes in documentation 2015-03-01 14:07:50 +01:00

glutin - OpenGL, UTilities and INput

![Gitter](https://badges.gitter.im/Join Chat.svg)

Alternative to GLFW in pure Rust.

Build Status Build status

[dependencies]
glutin = "*"

Note that the crates.io version won't compile on OS/X and Android because the required dependencies haven't been uploaded yet. Instead you can use the git version which works everywhere:

[dependencies.glutin]
git = "https://github.com/tomaka/glutin"

Documentation

Try it!

git clone https://github.com/tomaka/glutin
cd glutin
cargo run --example window

Usage

Glutin is an OpenGL context creation library and doesn't directly provide OpenGL bindings for you.

[dependencies]
gl = "*"
libc = "*"
extern crate glutin;
extern crate libc;
extern crate gl;

fn main() {
    let window = glutin::Window::new().unwrap();

    unsafe { window.make_current() };

    unsafe {
        gl::load_with(|symbol| window.get_proc_address(symbol));

        gl::ClearColor(0.0, 1.0, 0.0, 1.0);
    }

    while !window.is_closed() {
        window.wait_events();

        unsafe { gl::Clear(gl::COLOR_BUFFER_BIT) };

        window.swap_buffers();
    }
}

Platform-specific notes

Android

  • To compile the examples for android, initialize the submodules, go to deps/apk-builder/apk-builder and run cargo build, then go back to glutin and call ANDROID_HOME=/path/to/sdk NDK_HOME=/path/to/ndk NDK_STANDALONE=/path/to/standalone cargo test --no-run --target=arm-linux-androideabi
  • Events and vsync are not implemented
  • Headless rendering doesn't work

Emscripten

  • Work will start when Emscripten gets updated to LLVM 3.5 (which should happen soon)

OS/X

  • Some events are not implemented
  • Implementation is still work-in-progress
  • Vsync not implemented
  • Changing the cursor (set_cursor) is not implemented

Win32

  • You must call glFlush before swap_buffers, or else on Windows 8 nothing will be visible on the window
  • Changing the cursor (set_cursor) is not implemented

X11

  • Some input events are not implemented
  • Pixel formats not implemented
  • Vsync not implemented
  • Not all mouse cursors are implemented (ContextMenu, ...)