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

#98 in Graphics APIs

Download history 3395/week @ 2024-04-04 3662/week @ 2024-04-11 3556/week @ 2024-04-18 3805/week @ 2024-04-25 3253/week @ 2024-05-02 3364/week @ 2024-05-09 3596/week @ 2024-05-16 3546/week @ 2024-05-23 3389/week @ 2024-05-30 2939/week @ 2024-06-06 2779/week @ 2024-06-13 3040/week @ 2024-06-20 2069/week @ 2024-06-27 1090/week @ 2024-07-04 2415/week @ 2024-07-11 2342/week @ 2024-07-18

8,315 downloads per month
Used in 73 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
~89K SLoC