# `gl_utils`
[![Latest Version]][crates.io] [![Rust Version]][nightly] [![License]][license-file] [![Documentation]][docs] [![Build Status]][pipelines]
[Latest Version]: https://img.shields.io/crates/v/nsys-gl-utils.svg
[crates.io]: https://crates.io/crates/nsys-gl-utils
[Rust Version]: https://img.shields.io/badge/rust-nightly-orange.svg
[nightly]: https://rust-lang.github.io/rustup/concepts/channels.html
[License]: https://img.shields.io/crates/l/nsys-gl-utils.svg
[license-file]: https://gitlab.com/spearman/gl-utils-rs/-/blob/master/LICENSE
[Documentation]: https://docs.rs/nsys-gl-utils/badge.svg
[docs]: https://docs.rs/nsys-gl-utils
[Build Status]: https://gitlab.com/spearman/gl-utils-rs/badges/master/pipeline.svg
[pipelines]: https://gitlab.com/spearman/gl-utils-rs/-/pipelines
> OpenGL and general graphics utilities
Modules:
- `camera2d` -- camera and functions for 2D transforms
- `camera3d` -- camera and functions for 3D transforms
- `color` -- color constants and utilities
- `graphics` -- general graphics types and functions
- `info` -- write `glutin` and `glium` context info
- `init` -- `glium` initialization
- `mesh` -- mesh generation
- `render` -- `glium`-based rendering support
- `shader` -- shaders, shader programs, and shader definition macros
- `texture` -- blending functions and texture loading
- `tile` -- utilities for dealing with character-based tile/glyph data
- `vertex` -- vertex specifications
## Running tests
Note documentation tests may have linker failure when running too many tests
concurrently (observed with 7 or more test threads). Use
`cargo test -- --test-threads=6` (or fewer threads) to avoid this problem.
## Notes on windowing and context creation backends
**`winit`**
as of v0.30.5, winit has an `x11` feature and a `wayland` feature; both are
default features
**`glutin`**
as of v0.32.1, glutin has features for the following windowing system
interfaces:
- `egl`
- `glx`
- `wgl`
it also has features `x11` and `wayland`
all the above features are included in default features
**`glutin-winit`**
as of v0.5, glutin-winit has the same features as glutin, and choosing `x11` or
`wayland` will enable the corresponding feature in `winit`
all the above features are included in default features
**`glium`**
as of v0.36, glium includes in default features the above dependencies with
default features
this crate (`gl-utils`) depends on a fork of glium that does not include the
default features of glutin/winit dependencies. instead it adds features `x11`
and `windows` that selectively enable the features for those platforms.