//! Run with a real GL context: xvfb-run -a cargo run --example preview_depth_probe. use std::sync::{Arc, Mutex}; struct Quit; impl eframe::App for Quit { fn update(&mut self, ctx: &eframe::egui::Context, _: &mut eframe::Frame) { ctx.send_viewport_cmd(eframe::egui::ViewportCommand::Close); } } fn main() -> Result<(), Box> { let outcome = Arc::new(Mutex::new(None)); let result = outcome.clone(); let options = eframe::NativeOptions { viewport: eframe::egui::ViewportBuilder::default().with_inner_size([64., 64.]), ..paperdoll_renderer::preview_gl::native_options() }; eframe::run_native( "Paperdoll depth regression", options, Box::new(move |creation| { let test = creation .gl .as_ref() .ok_or_else(|| "geen Glow-context".to_string()) .and_then(|gl| unsafe { paperdoll_renderer::preview_gl::depth_regression_probe(gl) .and_then(|_| paperdoll_renderer::production::map_regression_probe(gl)) .and_then(|_| paperdoll_renderer::production::pbo_sync_parity_probe(gl)) }); *result.lock().unwrap() = Some(test); Ok(Box::new(Quit)) }), )?; outcome .lock() .unwrap() .take() .ok_or("GPU-test is niet uitgevoerd")??; Ok(()) }