1//! Paints `scene` through `draw` over OpenGL into an offscreen target and writes
2//! `render-probe.png`.
3#![allow(deprecated)] // OpenGL is the only GPU API 10.6 has.
4mod context;
5mod scene;
6
7fn main() {
8 objc2::rc::autoreleasepool(|_| run());
9}
10
11fn run() {
12 let _context = context::current();
13 let mut renderer = draw::Renderer::opengl().unwrap_or_else(|error| panic!("{error}"));
14 let target = renderer.target(scene::SIZE).unwrap();
15 let checker = scene::checker();
16 let primitives = scene::primitives(&checker);
17 let started = std::time::Instant::now();
18 renderer.draw(&target, scene::SIZE, scene::CLEAR, &[scene::layer(&primitives)]).unwrap();
19 let pixels = renderer.read_pixels(&target).unwrap();
20 println!("drew in {:?}", started.elapsed());
21 let file = std::fs::File::create("render-probe.png").unwrap();
22 let mut encoder = png::Encoder::new(file, scene::SIZE[0], scene::SIZE[1]);
23 encoder.set_color(png::ColorType::Rgba);
24 encoder.write_header().unwrap().write_image_data(&pixels).unwrap();
25}