132 breaking releases

Uses old Rust 2015

new 0.132.0 May 21, 2024
0.131.0 Nov 14, 2023
0.130.0 Sep 26, 2023
0.128.0 Feb 25, 2023
0.12.0 Jul 31, 2015

#2059 in Game dev

Download history 1394/week @ 2024-01-29 2044/week @ 2024-02-05 2425/week @ 2024-02-12 2543/week @ 2024-02-19 3229/week @ 2024-02-26 3003/week @ 2024-03-04 3541/week @ 2024-03-11 3844/week @ 2024-03-18 2715/week @ 2024-03-25 4845/week @ 2024-04-01 2797/week @ 2024-04-08 3984/week @ 2024-04-15 3712/week @ 2024-04-22 3577/week @ 2024-04-29 3130/week @ 2024-05-06 3301/week @ 2024-05-13

14,170 downloads per month
Used in fewer than 68 crates

MIT license

25KB
306 lines

piston_window Build Status Crates.io Crates.io

The official Piston convenience window wrapper for the Piston game engine

Notice! If this is your first time visiting Piston, start here.

Piston-Window is designed for only one purpose: Convenience.

Documentation

  • Reexports everything you need to write 2D interactive applications
  • .draw_2d for drawing 2D, and .draw_3d for drawing 3D
  • Uses Gfx to work with 3D libraries in the Piston ecosystem
extern crate piston_window;
use piston_window::*;
fn main() {
    let mut window: PistonWindow = WindowSettings::new("Hello Piston!", (640, 480))
        .exit_on_esc(true)
        .build()
        .unwrap_or_else(|e| { panic!("Failed to build PistonWindow: {}", e) });
    while let Some(e) = window.next() {
        window.draw_2d(&e, |_c, g, _d| {
            clear([0.5, 1.0, 0.5, 1.0], g);
        });
    }
}

PistonWindow uses Glutin as window back-end by default, but you can change to another back-end, for example SDL2 or GLFW by changing the type parameter:

let mut window: PistonWindow<Sdl2Window> = WindowSettings::new("Hello Piston!", [640, 480])
    .exit_on_esc(true).build().unwrap();

PistonWindow implements AdvancedWindow, Window and EventLoop. Nested game loops are supported, so you can have one inside another.

while let Some(e) = window.next() {
    if let Some(button) = e.press_args() {
        // Intro.
        while let Some(e) = window.next() {
            ...
        }
    }
}

Ideas or feedback? Open up an issue here.

Dependency graph

Dependencies

Dependencies

~13–24MB
~220K SLoC