Giter Site home page Giter Site logo

wasm-triangle's Introduction

Rust+GL+WASM Triangle

This is a simple demo showing how to get WebGL2 working via the Wasm/Emscripten target of Rust. Code is fully adopted from the gl-rs triangle example.

Preparing

You'll need Rust-1.22 or newer as well as Emscripten SDK installed.

In Emscripten configuration, set USE_WEBGL2=1. I did it by just modifying emscripten/src/settings.js directly (from where it's installed). Hopefully, we'll be able to pass the linker parameters to emcc via cargo one day.

Running

rustup target add wasm32-unknown-emscripten
cargo build --target=wasm32-unknown-emscripten
firefox triangle.html

Result

screenshot

wasm-triangle's People

Contributors

kvark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wasm-triangle's Issues

Issues running on latest rust and emscripten

Hello! Thanks for making this example and for all your work on graphics in Rust!

I'm having an issue running it in Firefox with rust 1.35 and emscripten 1.38.32.

relevant pieces of the errors:

missing function: emscripten_set_mousemove_callback

uncaught exception: abort(-1) at jsStackTrace@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:1154:13
stackTrace@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:1171:12
abort@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9520:44
_emscripten_set_mousemove_callback@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:8093:63
__ZN5winit8platform8platform6Window3new17h0075addae0f19b33E@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1190]:0x5575c
dynCall_viiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[2206]:0x9f677
Module.dynCall_viiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9199:10
invoke_viiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:8467:5
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h9c689fa05924a1abE@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1434]:0x672b2
__ZN6glutin8platform8platform7Context3new17h58740a3374150c4eE@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1130]:0x52cdc
dynCall_viiiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[2207]:0x9f692
Module.dynCall_viiiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9205:10
invoke_viiiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:8478:5
__ZN6glutin8GlWindow3new17hfa1f3c63fe1d248cE@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1117]:0x52349
dynCall_viiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[2206]:0x9f677
Module.dynCall_viiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9199:10
invoke_viiii@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:8467:5
__ZN13wasm_triangle4main17ha68b34180591517eE@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1013]:0x45075
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17h2b8dcbe5aea7af62E@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1049]:0x48220
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17hc0902fec62051e50E@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1972]:0x81ffc
__ZN3std9panicking3try7do_call17h5c8ada64d0d24d41E@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1970]:0x81f0b
dynCall_vi@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[2198]:0x9f5bb
Module.dynCall_vi@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9151:10
invoke_vi@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:8434:5
___rust_maybe_catch_panic@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1973]:0x82016
__ZN3std2rt19lang_start_internal17h066912d1d41695b5E@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1969]:0x81d05
__ZN3std2rt10lang_start17h5a77a8ef5cd3c5e0E@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1048]:0x481de
_main@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js line 1645 > WebAssembly.instantiate:wasm-function[1011]:0x44cd2
Module._main@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:8995:10
callMain@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9354:15
doRun@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9412:42
run@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9426:5
runCaller@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:9331:29
removeRunDependency@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:1519:7
receiveInstance@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:1614:5
receiveInstantiatedSource@file:///Users/mark/etc/wasm-triangle/target/wasm32-unknown-emscripten/debug/wasm-triangle.js:1641:5

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.