#2d-graphics #game-engine #graphics #piston #gfx

piston2d-gfx_graphics

A Gfx 2D back-end for the Piston game engine

79 breaking releases

Uses old Rust 2015

0.81.0 May 21, 2024
0.80.0 Sep 26, 2023
0.79.0 Nov 18, 2022
0.76.0 Feb 23, 2022
0.4.0 Jul 9, 2015

#1355 in Game dev

Download history 2798/week @ 2024-11-30 4799/week @ 2024-12-07 5625/week @ 2024-12-14 1673/week @ 2024-12-21 1042/week @ 2024-12-28 3921/week @ 2025-01-04 7463/week @ 2025-01-11 5065/week @ 2025-01-18 3319/week @ 2025-01-25 5570/week @ 2025-02-01 6100/week @ 2025-02-08 3218/week @ 2025-02-15 5406/week @ 2025-02-22 3221/week @ 2025-03-01 5130/week @ 2025-03-08 5604/week @ 2025-03-15

19,683 downloads per month
Used in 71 crates (3 directly)

MIT license

34KB
742 lines

gfx_graphics Build Status

Maintainers: @Potpourri, @kvark, @bvssvni

The implementation of a piston-graphics back-end using Gfx.

API Documentation

screenshot

Dependency graph

dependencies

How to contribute


lib.rs:

A Piston 2D graphics back-end using gfx-rs.

Piston-Graphics is a generic library for 2D, part of the Piston ecosystem. The generic abstraction creates triangles that are sent to the back-end. Triangles are sent through the Graphics trait.

How to use gfx_graphics

If you are using the piston_window library, a Gfx2d object is created for you. All you need to do is call e.draw_2d(|c, g| { ... });

If you are not using a window wrapper, you need to create Gfx2d and GfxGraphics.

  1. Create a Gfx2d object before the event loop
  2. Call Gfx2d::draw with args.viewport() from the render event.

Example:

let mut g2d = Gfx2d::new(api_version, &mut factory);
let mut events = window.events();
while let Some(e) = events.next(&mut window) {
    if let Some(args) = e.render_args() {
        g2d.draw(&mut encoder, &output_color, &output_stencil, args.viewport(), |c, g| {
            ...
        }
    }
}

For a working example, see "examples/draw_state.rs".

The closure |c, g| passes a Context and &mut GfxGraphics object. Context contains viewport, transform and draw state information.

When passing this to other functions, you usually write them as:

fn draw_something<G: Graphics>(c: &Context, g: &mut G) {
    ...
}

The purpose is to make code reusable across Piston 2D back-ends.

For more information, consult the documentation of Piston-Graphics.

Dependencies

~4.5MB
~91K SLoC