mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 17:08:13 +00:00
Everything reenabled, imgui still renders!!
This commit is contained in:
1 parent
7436f088da
commit
bf2f1ee35f
3 files changed
+27
-5
No files matched your search
@@ -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(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user