BlueGit

golden-age paperdoll-renderer

Files

paperdoll-renderer / examples / preview_depth_probe.rs

preview_depth_probe.rs

preview_depth_probe.rs 1.4 KiB Download Raw
1//! Run with a real GL context: xvfb-run -a cargo run --example preview_depth_probe.
2use std::sync::{Arc, Mutex};
3struct Quit;
4impl eframe::App for Quit {
5 fn update(&mut self, ctx: &eframe::egui::Context, _: &mut eframe::Frame) {
6 ctx.send_viewport_cmd(eframe::egui::ViewportCommand::Close);
7 }
8}
9fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let outcome = Arc::new(Mutex::new(None));
11 let result = outcome.clone();
12 let options = eframe::NativeOptions {
13 viewport: eframe::egui::ViewportBuilder::default().with_inner_size([64., 64.]),
14 ..paperdoll_renderer::preview_gl::native_options()
15 };
16 eframe::run_native(
17 "Paperdoll depth regression",
18 options,
19 Box::new(move |creation| {
20 let test = creation
21 .gl
22 .as_ref()
23 .ok_or_else(|| "geen Glow-context".to_string())
24 .and_then(|gl| unsafe {
25 paperdoll_renderer::preview_gl::depth_regression_probe(gl)
26 .and_then(|_| paperdoll_renderer::production::map_regression_probe(gl))
27 .and_then(|_| paperdoll_renderer::production::pbo_sync_parity_probe(gl))
28 });
29 *result.lock().unwrap() = Some(test);
30 Ok(Box::new(Quit))
31 }),
32 )?;
33 outcome
34 .lock()
35 .unwrap()
36 .take()
37 .ok_or("GPU-test is niet uitgevoerd")??;
38 Ok(())
39}