mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-11 04:16:55 +00:00
resized window
This commit is contained in:
1 parent
d52d7d9b8e
commit
7b450769bc
2 files changed
+22
-177
No files matched your search
+19
-177
@@ -33,7 +33,7 @@ pub fn run(capture_provider: Arc<CaptureProvider>, 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<CaptureProvider>, 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<CaptureProvider>, calibration_data: k4a_sys::k4
|
||||
std::thread::sleep(::std::time::Duration::new(0, 1_000_000_000u32 / 60));
|
||||
}
|
||||
}
|
||||
|
||||
/*fn asdf(capture_provider: Arc<CaptureProvider>, 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();
|
||||
}
|
||||
});
|
||||
}*/
|
||||
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user