Bare metal wrapper for modern OpenGL 4.5+
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
info
src
.gitignore
CHANGELOG.md
Cargo.toml
LICENSE
LICENSE - MPL2
README.md
build.rs

README.md

grr!

A bare metal library for OpenGL 4.5+

crates.io docs license

[dependencies]
grr = "0.3"

grr aims at providing a thin layer above OpenGL 4.5+, exposing a modern API orientated on Vulkan. The sole purpose of the library is to have a cleaned up API for fast prototyping.

Features

  • API is built around direct state access
  • Following Vulkan terminology and function names
  • Only provided latest GL functionality
  • Enforce sRGB framebuffer handling

Getting started

Checkout our Hello Triangle example to see the library in action!

Example

// Bind graphics pipeline (shaders)
grr.bind_pipeline(&pipeline);
// Configure vertex attributes
grr.bind_vertex_array(&vertex_array);
// Bind vertex buffers for fetching attribute data
grr.bind_vertex_buffers(
    &vertex_array,
    0,
    &[grr::VertexBufferView {
        buffer: &triangle_data,
        offset: 0,
        stride: (std::mem::size_of::<f32>() * 5) as _,
        input_rate: grr::InputRate::Vertex,
    }]
);

// Clear default framebuffer
grr.clear_attachment(grr::Framebuffer::DEFAULT, grr::ClearAttachment::ColorFloat(0, [0.5, 0.5, 0.5, 1.0]));
// Draw triangles
grr.draw(grr::Primitive::Triangles, 0..3, 0..1);

// Present on screen!
window.swap_buffers().unwrap();

Examples

Hello Triangle

cargo run --example triangle

Texture (Logo)

cargo run --example texture

(Maybe-)Physically-based Rendering (IBL)

Assets (model and HDRI) need to be extracted into examples/assets before running it!

cargo run --example pbr --release