OpenGL things in Rust. Aims to provide safe abstractions on top of OpenGL functions, data structures and types. The goal is to be a starting point for more advanced graphics tasks.
A running list of what's been implemented so far:
- Window creation, keybindings.
- Low-level buffer operations: Abstractions on VBOs, IBOs, vertex attributes.
- Abstractions on shader compiling and linking, setting uniforms.
- Very basic resource loading system for reading files from disk such as shaders, images, other assets.
- Perspective camera with methods for zooming and orbiting.
- Abstractions on shape primitives. Sphere and cylinder vertex generators which are generic over vertex layout.
- Generic 3D mesh shape with normals.
- Abstractions on OpenGL textures: 2D texture and cubemap targets
- Skybox as cubemapped cube.
- Basic lighting model with ambient and diffuse illumination.
Run cargo doc
from the project root to generate documentation.
You will need the latest stable version of Rust, preferably installed via rustup.
Install SDL2 through your package manager (e.g. apt-get
, dnf
, pacman
, brew
).
This project is confirmed to work on OS X up to 10.14.1 (Mojave) or Linux. No guarantees for Windows.
A discrete GPU not required, but can be very useful.