# fugu
A simple cross-platform rendering library for Rust
[![Docs](https://docs.rs/fugu/badge.svg)](https://docs.rs/fugu)
[![Crates.io](https://shields.io/crates/v/fugu)](https://crates.io/crates/fugu)
![License](https://shields.io/crates/l/fugu)
> :warning: **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`](https://crates.io/crates/glutin), [`sdl2`](https://crates.io/crates/sdl2), etc.)
- "Advanced" functionality (use [`wgpu`](https://github.com/gfx-rs/wgpu) or Vulkan/Metal/DirectX/... directly)
- Shader translation (use [`naga`](https://crates.io/crates/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`](https://crates.io/crates/glow))
- OS X (OpenGL via [`glow`](https://crates.io/crates/glow))
- _Linux (OpenGL via [`glow`](https://crates.io/crates/glow)*)_
- _Android (OpenGL ES via [`glow`](https://crates.io/crates/glow)*)_
- _iOS (OpenGL ES via [`glow`](https://crates.io/crates/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`](https://crates.io/crates/glow) but a dependency on [`web-sys`](https://crates.io/crates/web-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](https://github.com/floooh/sokol), a wonderful single-file graphics library for C and a major source of API inspiration ([A Tour of sokol_gfx.h](https://floooh.github.io/2017/07/29/sokol-gfx-tour.html))
- [miniquad](https://github.com/not-fl3/miniquad), a great Rust library also inspired by sokol_gfx