5 releases

0.2.1 Oct 11, 2022
0.2.0 Oct 9, 2022
0.1.2 Nov 30, 2019
0.1.1 Feb 1, 2019
0.1.0 Aug 3, 2018

#16 in Rendering engine

Download history 16/week @ 2024-06-16 8/week @ 2024-06-23 16/week @ 2024-06-30 3/week @ 2024-07-07 12/week @ 2024-07-14 7/week @ 2024-07-21 19/week @ 2024-07-28 7/week @ 2024-08-04 10/week @ 2024-08-11 1/week @ 2024-08-18 7/week @ 2024-08-25 6/week @ 2024-09-01 3/week @ 2024-09-08 9/week @ 2024-09-15 62/week @ 2024-09-22 30/week @ 2024-09-29

105 downloads per month
Used in 5 crates (2 directly)

MIT license

92KB
2K SLoC

unrust / uni-gl

Build Status Documentation

This library is a part of Unrust, a pure rust native/wasm game engine. This library provides a native/wasm compatibility layer for following components :

  • OpenGL API

When used in conjonction with uni-app, on native target, it provides an OpenGL 3.2+ or OpenGLES 2.0+ Core Profile context. On web target, it provides a WebGL 2.0 context where available, else a WebGL 1.0 context.

Usage

[dependencies]
uni-app="0.2.*"
uni-gl="0.2.*"
extern crate uni_app;
extern crate uni_gl;

fn main() {
    // create the game window (native) or canvas (web)
    let app = uni_app::App::new(uni_app::AppConfig {
        size: (800, 600),
        title: "my game".to_owned(),
        vsync: true,
        show_cursor: true,
        headless: false,
        resizable: true,
        fullscreen: false,
        intercept_close_request: false,
    });
    // retrieve the opengl context
    let gl = uni_gl::WebGLRenderingContext::new(app.canvas());
    // start game loop
    app.run(move |_app: &mut uni_app::App| {
        // do some openGL stuff
        gl.clear_color(0.0, 0.0, 1.0, 1.0);
        gl.clear(uni_gl::BufferBit::Color);
    });
}

Build

As web app (wasm32-unknown-unknown)

Install wasm32 target :

rustup target install wasm32-unknown-unknown

Install wasm-pack and npm

Compile the demo with

wasm-pack build examples

This creates a wasm package in examples/pkg

Run the demo with

cd www
npm install
npm run start

Open your browser at http://localhost:8080/

As desktop app (native-opengl)

cargo run --example basic --release

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0–2.3MB
~41K SLoC