pittore 0.2.4

Simple toolkit for 2D visualization based on wgpu.
Documentation
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]

use std::f32::consts::TAU;

use pittore::prelude::*;

const TEXTURE_FERRIS: u32 = 123;
const CYCLE: i32 = 30;

struct App {
    counter: i32,
}

impl PittoreApp for App {
    fn init(&mut self, c: &mut Context) {
        let data = image::load_from_memory(include_bytes!("assets/ferris.png")).unwrap();
        c.register_texture(TEXTURE_FERRIS, data);
    }

    fn update(&mut self, c: &mut Context) {
        c.set_camera(Camera::default_2d());

        let mut vertices = vec![render2d::Vertex {
            position: vec2(0.0, 0.0),
            uv: vec2(0.5, 0.5),
        }];
        for i in 0..self.counter {
            let t = -(i as f32 / CYCLE as f32 - 0.25) * TAU;
            let (sin, cos) = t.sin_cos();
            vertices.push(render2d::Vertex {
                position: vec2(cos, sin),
                uv: vec2(1.0 + cos, 1.0 - sin) * 0.5,
            });
        }

        if vertices.len() >= 3 {
            let handle = c.register_mesh_temporary(Mesh::new_triangle_fan(vertices, false));
            c.draw_fill(handle, TEXTURE_FERRIS, [Instance2d::default()]);
        }

        self.counter = (self.counter + 1) % CYCLE;
    }
}

fn main() {
    pittore::run("pittore", App { counter: 0 });
}