2 unstable releases
0.1.0 | Jun 5, 2022 |
---|---|
0.0.0 | Apr 9, 2022 |
#830 in Graphics APIs
21 downloads per month
Used in pufferfish
42KB
905 lines
⚠️ DISCLAIMER: fugu is in very early stages of development. APIs can and will change, many basic features are missing, and parts of this README may not reflect the current state of the crate. I would recommend against using this in your projects just yet, but for those brave enough, now is the time for suggestions and feature requests!
Goals
- Simple, modern, and safe API
- Fast compile times with clean builds
- Portability; only depends on
core
,alloc
, and the rendering backend - Transparent implementation; internal abstractions are minimal and easy to grok or hack
Non-Goals
- Windowing or context creation (use
glutin
,sdl2
, etc.) - "Advanced" functionality (use
wgpu
or Vulkan/Metal/DirectX/... directly) - Shader translation (use
naga
or SPIRV-cross) - GPU-side safety guarantees; the API is safe Rust but can still produce crashes or UB
Platform Support
Implemented
- Windows (OpenGL via
glow
) - OS X (OpenGL via
glow
) - Linux (OpenGL via
glow
*) - Android (OpenGL ES via
glow
*) - iOS (OpenGL ES via
glow
*)
* Untested. These should work in theory, but don't be surprised if they don't. In that case, please open an issue or PR.
Desired
- Web (WebGL); this should be trivial with
glow
but a dependency onweb-sys
may not be ideal - OS X/iOS (Metal); Apple has depricated OpenGL, and although OpenGL probably won't go anywhere any time soon, Metal should be used for futureproofing
Acknowledgements
- sokol_gfx, a wonderful single-file graphics library for C and a major source of API inspiration (A Tour of sokol_gfx.h)
- miniquad, a great Rust library also inspired by sokol_gfx
Dependencies
~2–3.5MB
~75K SLoC