Everything reenabled, imgui still renders!!

This commit is contained in:
Brandon Thomas committed 2020-04-20 04:14:25 -04:00
1 parent 7436f088da
commit bf2f1ee35f
3 files changed
+27 -5

No files matched your search

+19
View File
@@ -31,6 +31,8 @@ pub fn run(capture_provider: Arc<CaptureProvider>, calibration_data: k4a_sys::k4
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);
@@ -40,6 +42,8 @@ pub fn run(capture_provider: Arc<CaptureProvider>, calibration_data: k4a_sys::k4
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 mut visualizer = PointCloudVisualizer::new(
@@ -56,6 +60,8 @@ pub fn run(capture_provider: Arc<CaptureProvider>, calibration_data: k4a_sys::k4
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(
@@ -100,6 +106,9 @@ pub fn run(capture_provider: Arc<CaptureProvider>, calibration_data: k4a_sys::k4
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);
@@ -109,6 +118,9 @@ pub fn run(capture_provider: Arc<CaptureProvider>, calibration_data: k4a_sys::k4
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)
@@ -134,6 +146,13 @@ pub fn run(capture_provider: Arc<CaptureProvider>, calibration_data: k4a_sys::k4
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);
}
}
//println!("swapping buffers");
@@ -351,9 +351,12 @@ impl PointCloudComputeShader {
println!("-> gl::MemoryBarrier(TEXTURE_FETCH_BARRIER_BIT)");
gl::MemoryBarrier(gl::TEXTURE_FETCH_BARRIER_BIT);
// TODO: Return status or error.
gl_get_error()?;
// NB(bt): Restore to default active texture? Looks like this is required for 'imgui'
// This is needed despite using glGetInteger(GL_ACTIVE_TEXTURE) and resetting that value.
gl::ActiveTexture(gl::TEXTURE0);
Ok(())
}
}
+4 -4
View File
@@ -251,13 +251,13 @@ impl PointCloudVisualizer {
return Err(PointCloudVisualizerError::FramebufferError);
}
println!("-> gl::Viewport() {}x{}", self.width, self.height);
gl::Viewport(0, 0, self.width as i32, self.height as i32);
// TODO: This really warps things in 'imgui' land!
// gl::Viewport(0, 0, self.width as i32, self.height as i32);
println!("-> gl::Enable(DEPTH_TEST");
gl::Enable(gl::DEPTH_TEST);
//println!("-> gl::ClearColor()");
//gl::ClearColor(0.0, 0.0, 0.0, 0.0);
println!("-> gl::ClearColor()");
gl::ClearColor(0.0, 0.0, 0.0, 0.0);
println!("-> gl::Clear(COLOR,DEPTH)");
gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT);
}