# filament-bindings
This package provides a set of unsafe binding api, build scripts and prebuilt binaries for [Google/filament](https://github.com/google/filament) on Windows, macOS, Linux.
# Why unsafe
All api's of this package are marked as unsafe, because the c++ objects of `filament` do not use reference counting to track resource usage, this library has no way of knowing when to release objects, you have to release resources manually.
# Prebuilt Binaries
Because filament builds are very slow and have build environment requirements. We provide prebuilt binaries for common platforms and features.
When a new version is released, github action automatically runs pre-build tasks, and all prebuilt binaries are saved in [filament-binaries/releases](https://github.com/EYHN/filament-binaries/releases).
The `filament-binding` build script will try to download the prebuilt binaries from github first, and skip the full source build.
We currently provide pre-built binary packages for `Windows`, `Linux`, `macOS`, and enable `OpenGL`, `Vulkan` backend for all platforms and `Metal` backend for macOS. For other platforms such as `Android`, `iOS` and `WASM` support is planned but not yet available.
# Build requirement
* cmake
* clang
* ninja
* libglu1-mesa-dev
* libxi-dev
* libc++-dev
* libc++abi-dev
# Examples
## triangle
Render a triangle and save the image to a ppm file
## winit
Use filament with `winit`.
run `cargo run --example winit`