From 354135949f4c54ab307da82f4ef0d219a6fb5f9b Mon Sep 17 00:00:00 2001 From: numzero Date: Sat, 27 Apr 2024 18:52:15 +0300 Subject: [PATCH] Show the image in a window --- Cargo.toml | 1 + src/main.rs | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e2a2e19..c06c2b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,3 +8,4 @@ edition = "2021" [dependencies] rand = "0.8.5" glm = "0.2.3" +show-image = "0.14.0" diff --git a/src/main.rs b/src/main.rs index eb0ab86..d77e81d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,14 @@ mod mesh_loader; use std::fs::File; -use std::{env, io}; +use std::{env}; +use std::error::Error; use std::f32::consts::PI; -use std::io::{BufRead, BufReader, BufWriter}; +use std::io::{BufRead, BufReader}; use std::io::Write; use rand::Rng; use glm::*; +use show_image::{ImageInfo, ImageView, WindowOptions}; use crate::mesh_loader::load_mesh; const W: i32 = 320; @@ -55,7 +57,8 @@ fn ypr_to_mat(ypr: Vec3) -> Mat3 { m_roll * m_pitch * m_yaw } -fn main() -> io::Result<()> { +#[show_image::main] +fn main() -> Result<(), Box> { let args: Vec = env::args().collect(); let mesh = { let f = File::open(&args[1])?; @@ -107,11 +110,11 @@ fn main() -> io::Result<()> { } } } - let f = File::create("1.ppm")?; - let mut f = BufWriter::new(f); - write!(f, "P6\n")?; - write!(f, "{W} {H} 255\n")?; - f.write(img.data())?; + + let window = show_image::create_window("Raytracing", WindowOptions::default())?; + let image = ImageView::new(ImageInfo::rgb8(W as u32, H as u32), img.data()); + window.set_image("image", image)?; + window.wait_until_destroyed()?; Ok(()) }