cgv
|
#include <gl_depth_peeler.h>
Public Member Functions | |
gl_depth_peeler (bool front_to_back=true, float _depth_bias=0.001) | |
construct uninitialized depth peeler | |
virtual | ~gl_depth_peeler () |
destruct the depth peeler | |
void | invert_t (bool enable=true) |
set the sign for the vertical texture coordinate. In case of some ATI-cards this needs to be enabled to avoid flipping intermediate textures. More... | |
void | set_back_to_front () |
enable back to front mode | |
void | set_front_to_back () |
enable front to back mode | |
bool | is_front_to_back () const |
return whether the mode is front to back | |
virtual void | destruct (context &ctx) |
destruct the depth peeler | |
void | set_depth_bias (float bias) |
the depth bias is used as epsilon for the test against the second depth buffer and is initialized to 0.0005f | |
float | get_depth_bias () const |
return the current depth bias | |
bool | is_initialized () const |
check whether the depth peeler has been initialized, i.e. the init method has been called successfully before | |
virtual bool | init (context &ctx) |
checks for extensions and init depth peeler, return success | |
virtual void | init_frame (context &ctx) |
call this after the viewport has been set and before the first call to copy_depth_buffer or begin_layer | |
void | copy_depth_buffer (context &ctx) |
copies the current depth buffer to the second depth buffer, what is typically done before peeling a layer | |
void | begin_layer (context &ctx, int tex_unit=-1) |
start to extract the next layer. Within begin_layer and end_layer the following OpenGL features are used: texture generation functions, 2D texturing and the alpha Test | |
unsigned int | end_layer (context &ctx) |
finish the layer and return the number of drawn fragments in the layer. All OpenGL settings are restored. More... | |
Public Attributes | |
std::string | last_error |
a string that contains the last error, which is only set by the init method | |
OpenGL helper class to simplify depth peeling. Call the init method after your OpenGL context has been created. A sample usage during a drawing method would look like:
unsigned int cgv::render::gl::gl_depth_peeler::end_layer | ( | context & | ctx | ) |
finish the layer and return the number of drawn fragments in the layer. All OpenGL settings are restored.
finish the layer and return the number of drawn fragments in the layer
void cgv::render::gl::gl_depth_peeler::invert_t | ( | bool | enable = true | ) |
set the sign for the vertical texture coordinate. In case of some ATI-cards this needs to be enabled to avoid flipping intermediate textures.
set the sign for y