https://jprekz.github.io/rust-wasm-sandbox/
glTF形式の簡単な3Dモデルデータを読み込み、WebGLを用いて描画するデモンストレーションです。 プログラムはRustで書かれており、WebAssemblyにコンパイルすることでブラウザ上で動作させています。
ソースはこのリポジトリ内の /gltf_test にあります。
各ディレクトリ内で
- nativeの場合
$ cargo run
- webの場合
$ wasm-pack build --target web
のち適当なwebサーバーを立てて開く
- WebGLしたい
- とりあえず依存無しでWebGLの呼び出しを試みた(scratch_test)
- "Rust 側で用意したメモリをそっくりそのまま Canvas に挿入する"ことは割と簡単にできそう
(参考:http://nmi.jp/2018-03-19-WebAssembly-with-Rust)
- ネイティブで同じことできそうなやつ:https://github.com/rust-windowing/winit-blit
- ハードウェアアクセラレーションなしでクロスプラットフォームなアプリ書くなら
winit
と 上記手法の組み合わせが最小構成かも
glow
でクロスプラットフォームなウィンドウ初期化と描画テスト(glow-test)winit
等のラッパーblinds
とglow
のラッパーgolem
のテスト(golem_test)- 最近いろいろ変わってるっぽくてなんとも
glutin
/winit
とgolem
をnannou
風のAPIで雑にラップしてみたテスト(wrapper_test)- wrapper_test はライブラリで wrapper_test_bin は wrapper_test を使ってみたやつ
- wrapper_test_bin のソースはぱっと見いい感じではある
- glTF形式の3Dモデルを雑に表示してみるテスト(gltf_test)
gltf-viewer
のコードをだいぶ参考にしている- web環境でファイルをfetchしようとすると非同期処理になるので
blinds
を使うと便利
- "Introduction - Rust and WebAssembly" https://rustwasm.github.io/docs/book/introduction.html
- "rustwasm/wasm-pack: 📦✨ your favorite rust -> wasm workflow tool!" https://github.com/rustwasm/wasm-pack