From 7b450769bc5b34e4bb4f59424c0e32bec52b5905 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 22 Apr 2020 01:19:01 -0400 Subject: [PATCH] resized window --- src/graphics_imgui.rs | 196 +++------------------- src/point_cloud/point_cloud_visualiser.rs | 3 + 2 files changed, 22 insertions(+), 177 deletions(-) diff --git a/src/graphics_imgui.rs b/src/graphics_imgui.rs index 5a17db53e6..a47a6d525a 100644 --- a/src/graphics_imgui.rs +++ b/src/graphics_imgui.rs @@ -33,7 +33,7 @@ pub fn run(capture_provider: Arc, calibration_data: k4a_sys::k4 gl_attr.set_context_version(3, 0); } - let window = video.window("rust-imgui-sdl2 demo", 1000, 1000) + let window = video.window("rust-imgui-sdl2 demo", 2000, 2000) .position_centered() .resizable() .opengl() @@ -128,9 +128,26 @@ pub fn run(capture_provider: Arc, calibration_data: k4a_sys::k4 Image::new(imgui_texture_id_2, [100.0, 100.0]).build(&ui); ui.separator(); - Image::new(imgui_texture_id_3, [100.0, 100.0]).build(&ui); ui.separator(); + Window::new(im_str!("Hello world")) + .size([1500.0, 1500.0], Condition::FirstUseEver) + .build(&ui, || { + ui.text(im_str!("Hello world!")); + ui.text(im_str!("こんにちは世界!")); + ui.text(im_str!("This...is...imgui-rs!")); + ui.separator(); + let mouse_pos = ui.io().mouse_pos; + ui.text(format!( + "Mouse Position: ({:.1},{:.1})", + mouse_pos[0], mouse_pos[1] + )); + ui.separator(); + // Depth image dimensions: 640x576 + // Take transformed depth image... 1280x720 [Depth16] + Image::new(imgui_texture_id_3, [1280.0, 720.0]).build(&ui); + }); + unsafe { gl::ClearColor(0.2, 0.2, 0.2, 1.0); gl::Clear(gl::COLOR_BUFFER_BIT); @@ -162,178 +179,3 @@ pub fn run(capture_provider: Arc, calibration_data: k4a_sys::k4 std::thread::sleep(::std::time::Duration::new(0, 1_000_000_000u32 / 60)); } } - -/*fn asdf(capture_provider: Arc, calibration_data: k4a_sys::k4a_calibration_t) { - let system = support::init(file!()); - - let context = system.display.get_context(); - - enable_opengl_debugging(); - - let mut last_texture_id = 0; - let mut last_array_buffer_id = 0; - let mut last_element_array_buffer_id = 0; - let mut last_pixel_unpack_buffer_id = 0; - let mut last_renderbuffer_binding = 0; - let mut last_vertex_array_binding = 0; - let mut last_draw_framebuffer_binding = 0; - let mut last_read_framebuffer_binding = 0; - let mut last_current_program = 0; - let mut last_active_texture = 0; - - unsafe { - gl::GetIntegerv(gl::TEXTURE_BINDING_2D, &mut last_texture_id); - gl::GetIntegerv(gl::ARRAY_BUFFER_BINDING, &mut last_array_buffer_id); - gl::GetIntegerv(gl::ELEMENT_ARRAY_BUFFER_BINDING, &mut last_element_array_buffer_id); - gl::GetIntegerv(gl::PIXEL_UNPACK_BUFFER_BINDING, &mut last_pixel_unpack_buffer_id); - gl::GetIntegerv(gl::RENDERBUFFER_BINDING, &mut last_renderbuffer_binding); - gl::GetIntegerv(gl::VERTEX_ARRAY_BINDING, &mut last_vertex_array_binding); - gl::GetIntegerv(gl::DRAW_FRAMEBUFFER_BINDING, &mut last_draw_framebuffer_binding); - gl::GetIntegerv(gl::READ_FRAMEBUFFER_BINDING, &mut last_read_framebuffer_binding); - gl::GetIntegerv(gl::CURRENT_PROGRAM, &mut last_current_program); - gl::GetIntegerv(gl::ACTIVE_TEXTURE, &mut last_active_texture); - } - - let gl_texture_id = load_texture("n64logo.png"); - let imgui_texture_id = TextureId::from(gl_texture_id as usize); - let mut visualizer = PointCloudVisualizer::new( - true, - calibration_data - ); - - unsafe { - gl::BindTexture(gl::TEXTURE_2D, last_texture_id as u32); - gl::BindBuffer(gl::ARRAY_BUFFER, last_array_buffer_id as u32); - gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, last_element_array_buffer_id as u32); - gl::BindBuffer(gl::PIXEL_UNPACK_BUFFER, last_pixel_unpack_buffer_id as u32); - gl::BindRenderbuffer(gl::RENDERBUFFER, last_renderbuffer_binding as u32); - gl::BindVertexArray(last_vertex_array_binding as u32); - gl::BindFramebuffer(gl::DRAW_FRAMEBUFFER, last_draw_framebuffer_binding as u32); - gl::BindFramebuffer(gl::READ_FRAMEBUFFER, last_read_framebuffer_binding as u32); - gl::UseProgram(last_current_program as u32); - gl::ActiveTexture(last_active_texture as u32); - } - - let mut texture = ViewerImage::create( - 800, - 800, - None, - None - ).expect("ViewerImage texture creation should work"); - - let mut written = false; - //let mut loaded_texture = None; - - system.main_loop(move |_, ui| { - Window::new(im_str!("Hello world")) - //.size([300.0, 110.0], Condition::FirstUseEver) - .size([300.0, 110.0], Condition::Always) - .build(ui, || { - ui.text(im_str!("Hello world!")); - ui.text(im_str!("こんにちは世界!")); - ui.text(im_str!("This...is...imgui-rs!")); - ui.separator(); - let mouse_pos = ui.io().mouse_pos; - ui.text(format!( - "Mouse Position: ({:.1},{:.1})", - mouse_pos[0], mouse_pos[1] - )); - ui.separator(); - - /*// TODO: this segfaults. - // https://github.com/ocornut/imgui/wiki/Image-Loading-and-Displaying-Examples - if written { - let texture_id = texture.texture_id() as usize; - let my_texture_id = TextureId::from(texture_id); - Image::new(my_texture_id, [100.0, 100.0]).build(ui); - }*/ - - /*match loaded_texture { - None => { - loaded_texture = Some(load_texture("n64logo.png")); - }, - Some(texture_id) => { - let texture_id = texture_id as usize; - let my_texture_id = TextureId::from(texture_id); - Image::new(my_texture_id, [100.0, 100.0]).build(ui); - } - }*/ - - // TODO: This also segfaults. - //Image::new(imgui_texture_id, [100.0, 100.0]).build(ui); - }); - - - // TODO: This belongs in a worker thread with buffers on both producer and consumer. - if let Some(capture) = capture_provider.get_capture() { - //println!("\n\n------- event loop: got capture ------"); - //println!("capture: {:?}", capture.0); - unsafe { - // TODO: CLEARING FOR TEMPORARY DEBUGGING. - //gl::ClearColor(0.8, 0.0, 0.0, 1.0); - //gl::Clear(gl::COLOR_BUFFER_BIT); - } - - let mut last_texture_id = 0; - let mut last_array_buffer_id = 0; - let mut last_element_array_buffer_id = 0; - let mut last_pixel_unpack_buffer_id = 0; - let mut last_renderbuffer_binding = 0; - let mut last_vertex_array_binding = 0; - let mut last_draw_framebuffer_binding = 0; - let mut last_read_framebuffer_binding = 0; - let mut last_current_program = 0; - let mut last_active_texture = 0; - let mut last_depth_test = 0; - unsafe { - gl::GetIntegerv(gl::TEXTURE_BINDING_2D, &mut last_texture_id); - gl::GetIntegerv(gl::ARRAY_BUFFER_BINDING, &mut last_array_buffer_id); - gl::GetIntegerv(gl::ELEMENT_ARRAY_BUFFER_BINDING, &mut last_element_array_buffer_id); - gl::GetIntegerv(gl::PIXEL_UNPACK_BUFFER_BINDING, &mut last_pixel_unpack_buffer_id); - gl::GetIntegerv(gl::RENDERBUFFER_BINDING, &mut last_renderbuffer_binding); - gl::GetIntegerv(gl::VERTEX_ARRAY_BINDING, &mut last_vertex_array_binding); - gl::GetIntegerv(gl::DRAW_FRAMEBUFFER_BINDING, &mut last_draw_framebuffer_binding); - gl::GetIntegerv(gl::READ_FRAMEBUFFER_BINDING, &mut last_read_framebuffer_binding); - gl::GetIntegerv(gl::CURRENT_PROGRAM, &mut last_current_program); - gl::GetIntegerv(gl::ACTIVE_TEXTURE, &mut last_active_texture); - gl::GetBooleanv(gl::DEPTH_TEST, &mut last_depth_test); - } - - visualizer.update_texture(&texture, capture) - .map(|_| { - println!("UPDATED TEXTURE!"); - }) - .map_err(|err| { - match err { - PointCloudVisualizerError::MissingDepthImage => { println!("Missing depth image"); }, - PointCloudVisualizerError::MissingColorImage => { println!("Missing color image"); }, - _ => { - unreachable!("Error: {:?}", err); - } - } - }); - - unsafe { - gl::BindTexture(gl::TEXTURE_2D, last_texture_id as u32); - gl::BindBuffer(gl::ARRAY_BUFFER, last_array_buffer_id as u32); - gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, last_element_array_buffer_id as u32); - gl::BindBuffer(gl::PIXEL_UNPACK_BUFFER, last_pixel_unpack_buffer_id as u32); - gl::BindRenderbuffer(gl::RENDERBUFFER, last_renderbuffer_binding as u32); - gl::BindVertexArray(last_vertex_array_binding as u32); - gl::BindFramebuffer(gl::DRAW_FRAMEBUFFER, last_draw_framebuffer_binding as u32); - gl::BindFramebuffer(gl::READ_FRAMEBUFFER, last_read_framebuffer_binding as u32); - gl::UseProgram(last_current_program as u32); - gl::ActiveTexture(last_active_texture as u32); - if last_depth_test == 0 { - gl::Disable(gl::DEPTH_TEST); - } else { - gl::Enable(gl::DEPTH_TEST); - } - } - - written = true; - //println!("swapping buffers"); - //gl_window.swap_buffers().unwrap(); - } - }); -}*/ diff --git a/src/point_cloud/point_cloud_visualiser.rs b/src/point_cloud/point_cloud_visualiser.rs index 747b3d9f67..b6b57de1d4 100644 --- a/src/point_cloud/point_cloud_visualiser.rs +++ b/src/point_cloud/point_cloud_visualiser.rs @@ -294,6 +294,9 @@ impl PointCloudVisualizer { }, }; + println!("Depth image dimensions: {}x{}", + depth_image.get_width_pixels(), depth_image.get_height_pixels()); + let maybe_color_image = capture.get_color_image(); if self.enable_color_point_cloud {