use wsg_lib::resources::{Material, Mesh, Vertex}; use wsg_lib::utils; use wsg_lib::{App, AppHandler}; // 1. On définit notre "Jeu" qui implémente le comportement struct MonQuad { mesh: Mesh, material: Material, } impl AppHandler for MonQuad { fn render(&mut self, app: &mut App) {} } #[pollster::main] async fn main() -> Result<(), wsg_lib::utils::WsgError> { // 2. Initialisation via le Builder let mut app = App::new().await?; // 3. Setup des ressources (déclaration) app.cache .register_shader("basic", utils::BASIC_SHADER_PATH) .unwrap(); let vertices: [Vertex; 4] = [ Vertex { position: [-0.5, 0.5, 0.0], normal: [0.0, 0.0, 1.0], uv: [0.0, 0.0], color: [1.0, 0.0, 0.0, 1.0], }, Vertex { position: [0.5, 0.5, 0.0], normal: [0.0, 0.0, 1.0], uv: [1.0, 0.0], color: [0.0, 1.0, 0.0, 1.0], }, Vertex { position: [0.5, -0.5, 0.0], normal: [0.0, 0.0, 1.0], uv: [1.0, 1.0], color: [0.0, 0.0, 1.0, 1.0], }, Vertex { position: [-0.5, -0.5, 0.0], normal: [0.0, 0.0, 1.0], uv: [0.0, 1.0], color: [1.0, 1.0, 0.0, 1.0], }, ]; let indices: [u16; 6] = [0, 1, 2, 0, 2, 3]; let mesh = Mesh::new(app.context.device(), &vertices, Some(&indices)); let material = Material::new(app.renderer.format(), "basic", &mut app.cache); // 4. Lancement de la boucle (la magie opère ici) let handler = MonQuad { mesh, material }; app.run(handler) }