#opengl #webgl #opengl-context #game-engine #wasm

uni-gl

Unrust原生/wasm OpenGL/WebGL兼容层

5个版本

0.2.1 2022年10月11日
0.2.0 2022年10月9日
0.1.2 2019年11月30日
0.1.1 2019年2月1日
0.1.0 2018年8月3日

渲染引擎分类中排名18

Download history 33/week @ 2024-03-11 21/week @ 2024-03-18 7/week @ 2024-03-25 62/week @ 2024-04-01 9/week @ 2024-04-08 137/week @ 2024-04-15 27/week @ 2024-04-22 16/week @ 2024-04-29 8/week @ 2024-05-06 13/week @ 2024-05-13 18/week @ 2024-05-20 26/week @ 2024-05-27 16/week @ 2024-06-03 10/week @ 2024-06-10 15/week @ 2024-06-17 7/week @ 2024-06-24

每月下载52
5个crate(2个直接)使用

MIT授权

92KB
2K SLoC

unrust / uni-gl

Build Status Documentation

这个库是Unrust项目的一部分,Unrust是一个纯Rust原生/wasm游戏引擎。这个库为以下组件提供原生/wasm兼容层:

  • OpenGL API

当与uni-app结合使用时,在原生目标上,它提供OpenGL 3.2+或OpenGLES 2.0+ Core Profile上下文。在Web目标上,它提供可用的WebGL 2.0上下文,否则提供WebGL 1.0上下文。

用法

[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);
    });
}

构建

作为Web应用(wasm32-unknown-unknown)

安装wasm32目标

rustup target install wasm32-unknown-unknown

安装wasm-packnpm

使用以下命令编译示例

wasm-pack build examples

这将在examples/pkg中创建一个wasm包

使用以下命令运行示例

cd www
npm install
npm run start

在浏览器中打开https://127.0.0.1:8080/

作为桌面应用(native-opengl)

cargo run --example basic --release

授权

授权方式为以下之一

任选其一。

贡献

除非你明确指出,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0授权定义,应如上双授权,不附加任何额外条款或条件。

依赖

~0–2MB
~40K SLoC