Update November 13th, 2020
After noticing performance issues with this approach, we have moved to Emscripten's EGL one through static linking –which has resulted much faster–, using our existing OpenGL.NET binding. Wave Engine 3.0 preview 4 already contains these changes.
Our efforts will go in this direction and, surely, we will not maintain this repository as much as before. We are also working on WebGPU.NET, as the replacement for everything WebGL. However, WebGL.NET is still valid whenever performance is not the key (this article draws a red line on it).
WebGL.NET
.NET binding for WebGL through WebAssembly. See the samples running here.
If you want to jump in quickly, Your first WebGL.NET app will guide you step by step.
Installation instructions
Apart from adding the NuGet package, make a local copy of:
- this packages folder, which contains mandatory NuGets from Mono still not published in nuget.org; and
- this NuGet.config along your SLN/CSPROJ
Features
- WebGL 1 & 2 support
- API C#-ified to make .NET Developers feel at home
Who's using it?
Apart from serving Wave Engine 3.0 for the Web, it's being used in some other really nice projects, such like:
- Jazz² Resurrection: a "reimplementation of the game Jazz Jackrabbit 2 released in 1998"
- Wave Engine's glTF viewer: self-explanatory O:-)
Debugging
Run this in browser's Console to monitor how many bridged objects there are in such moment:
BINDING.mono_wasm_object_registry
Thanks
- @kjpou1, for your PRs improving performance overall, along with nice comments on how stuff work underneath