modif appbuilder
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
use wsg_lib::app::{App, AppHandler};
|
||||
use wsg_lib::resources::{Material, Mesh, Vertex};
|
||||
use wsg_lib::utils;
|
||||
|
||||
// 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) {
|
||||
// Le rendu devient simple : on accède aux outils via &mut app
|
||||
if let Some(frame) = app.context.get_next_frame() {
|
||||
app.renderer
|
||||
.render(frame.view(), &self.mesh, &self.material);
|
||||
app.renderer.present(frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[pollster::main]
|
||||
async fn main() -> Result<(), wsg_lib::utils::WsgError> {
|
||||
// 2. Initialisation via le Builder
|
||||
let mut app = App::builder()
|
||||
.title("Exemple Simple")
|
||||
.size(800, 600)
|
||||
.build()
|
||||
.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)
|
||||
}
|
||||
Reference in New Issue
Block a user