gapp-winit

Crates.iogapp-winit
lib.rsgapp-winit
version0.10.0
created_at2021-04-12 22:27:13.632339+00
updated_at2026-01-24 13:21:39.714563+00
descriptionAbstract event loop library for winit-based applications with OpenGL and wgpu backends, integrating gapp traits for clean separation of input, update, render, and present
homepagehttps://gitlab.com/porky11/gapp-winit
repositoryhttps://gitlab.com/porky11/gapp-winit
max_upload_size
id382568
size67,626
Fabio Krapohl (porky11)

documentation

https://docs.rs/gapp-winit

README

gapp-winit

Crates.io Docs License

An abstract event loop library for winit-based applications with support for OpenGL/glutin and wgpu backends. Integrates seamlessly with gapp traits for clean separation of input, update, render, and present.

Supports native (Windows/Linux/macOS) and WASM. Fixed-timestep FPS cap, automatic resize handling.

Features

  • Backend-agnostic: Switch between OpenGL and wgpu via Cargo features.
  • Trait-based: Implement WindowInput, Present, Render (gapp), Update (gapp).
  • Cross-platform: Full WASM support (HTML canvas).
  • Performance: Fixed timestep, on-demand redraw, FPS sleep (native).
Feature OpenGL wgpu
Native
WASM
Default ❎️

Quickstart

For reference, have a look at the template program. It also can be used as a base for your program.

Traits Overview

  • WindowInput<C, R>: Handle all WindowEvents (post-resize/redraw). Call event_loop.exit() on close.
  • Present<R>: Submit frame (e.g., queue.submit(), surface.swap_buffers()).
  • Render<R> / Update (from gapp): Standard render/update loop.

Resize is auto-handled.

FPS can be supplied to run.

Commit count: 76

cargo fmt