cgv
gl_transparent_renderer.h
1 #pragma once
2 
3 #include <cgv/render/texture.h>
4 #include <cgv/render/frame_buffer.h>
5 
6 #include "gl_depth_peeler.h"
7 
8 #include "lib_begin.h"
9 
10 namespace cgv {
11  namespace render {
12  namespace gl {
13 
14 
26 {
27 protected:
30  // depth texture used as depth buffer used in offline rendering
31  texture depth_buffer;
32  // texture to store the peeled layers, which is used as color buffer in offline rendering and as texture during blending
33  texture layer_tex;
36  // frame buffer object used for offline rendering of the layers
37  frame_buffer fb;
39  void create_and_attach_texture(context& ctx, texture& tex, int w, int h, int i = -1);
41  void blend_texture_over_viewport(context& ctx, texture& tex);
42 public:
44  mutable std::string last_error;
46  cgv::signal::signal<context&> render_callback;
48  cgv::signal::signal<context&,texture&> render_callback_2;
50  gl_transparent_renderer(bool front_to_back = true, float _depth_bias = 0.001);
52  bool init(context& ctx);
54  void init_frame(context& ctx);
56  int render_transparent(context& ctx, int max_nr_layers, int tex_unit = -1);
58  void destruct(context& ctx);
59 };
60 
61 
62  }
63  }
64 }
65 
66 #include <cgv/config/lib_end.h>
cgv::render::gl::gl_transparent_renderer
Definition: gl_transparent_renderer.h:26
cgv::render::gl::gl_transparent_renderer::color_tex
texture color_tex
texture used as color buffer in front to back mode to blend together all transparent layers before bl...
Definition: gl_transparent_renderer.h:35
cgv::render::gl::gl_transparent_renderer::render_callback_2
cgv::signal::signal< context &, texture & > render_callback_2
signal called to render the transparent content for second and further layers with additional depth t...
Definition: gl_transparent_renderer.h:48
cgv::render::texture
Definition: texture.h:15
cgv::render::gl::gl_depth_peeler
Definition: gl_depth_peeler.h:45
cgv::render::gl::gl_transparent_renderer::peeler
gl_depth_peeler peeler
depth peeler used for visibility sorting
Definition: gl_transparent_renderer.h:29
cgv::render::frame_buffer
Definition: frame_buffer.h:17
cgv::render::gl::gl_transparent_renderer::last_error
std::string last_error
a string that contains the last error, which is only set by the init method
Definition: gl_transparent_renderer.h:44
cgv
the cgv namespace
Definition: vr_calib.cxx:9
cgv::render::context
Definition: context.h:525
cgv::render::gl::gl_transparent_renderer::render_callback
cgv::signal::signal< context & > render_callback
signal called to render the transparent content for first layer without additional depth test
Definition: gl_transparent_renderer.h:46