software/
software.rs

1extern crate est_render;
2
3use est_render::prelude::*;
4
5#[cfg(feature = "software")]
6fn main() {
7    let mut runner = est_render::runner::new().expect("Failed to create runner");
8    let mut window = runner
9        .create_window("Engine Example", Point2::new(800, 600))
10        .build()
11        .expect("Failed to create window");
12
13    let mut sw = est_render::software::new(Some(&mut window))
14        .build()
15        .expect("Failed to create pixel buffer");
16
17    let mut pixels = vec![128u32; (800 * 600) as usize];
18    let mut size_px = Point2::new(800.0, 600.0);
19
20    while runner.pool_events(None) {
21        for event in runner.get_events() {
22            match event {
23                Event::WindowClosed { .. } => {
24                    return;
25                }
26                Event::WindowResized { size, .. } => {
27                    pixels.resize((size.x * size.y) as usize, 128);
28                    size_px = Point2::new(size.x as f32, size.y as f32);
29                }
30                _ => {}
31            }
32        }
33
34        if let Err(e) = sw.write_buffers(&pixels, size_px) {
35            eprintln!("Error writing buffers: {}", e);
36        }
37    }
38}
39
40#[cfg(not(feature = "software"))]
41fn main() {
42    eprintln!(
43        "Software rendering is not enabled. Please enable the 'software' feature to run this example."
44    );
45}