KJB
|
#include <gr_renderable.h>
Public Member Functions | |
virtual void | wire_render () const |
Render wire mesh. More... | |
virtual void | wire_occlude_render () const |
Render silhouette edges. More... | |
virtual void | wire_occlude_render (double offset_factor, double offset_units) const |
Render silhouette edges. More... | |
virtual void | solid_render () const =0 |
Render solid object. More... | |
Public Member Functions inherited from kjb::Abstract_renderable | |
virtual | ~Abstract_renderable () |
Deletes this Solid_renderable. More... | |
virtual void | render () const |
Renders this object with GL. More... | |
virtual void | render_occluded_wireframe () const |
Renders this object with GL as an occluded wire-frame into the depth buffer, to hide unseen lines. More... | |
virtual void | silhouette_render (const kjb::Base_gl_interface &, double width) const |
Renders the silhouette of this object. The most basic implementation is to render the occluded wireframe. More... | |
Public Member Functions inherited from kjb::Renderable | |
virtual | ~Renderable () |
Deletes this Renderable. More... | |
Public Member Functions inherited from kjb::Solid_renderable | |
virtual | ~Solid_renderable () |
Deletes this Wire_renderable. More... | |
Public Member Functions inherited from kjb::Wire_renderable | |
virtual | ~Wire_renderable () |
Deletes this Wire_renderable. More... | |
Public Member Functions inherited from kjb::Wire_occlude_renderable | |
virtual | ~Wire_occlude_renderable () |
Deletes this Wire_occlude_renderable. More... | |
Static Public Member Functions | |
static void | set_background_color (const Vector &rgba) |
static void | set_foreground_color (const Vector &rgba) |
Static Public Member Functions inherited from kjb::Abstract_renderable | |
static double | get_rendering_framework () |
returns the rendering framework used to render. The only one implemented up to now is OpenGL More... | |
static void | set_rendering_framework (unsigned int irf) |
sets the rendering framework used to render. The only one implemented up to now is OpenGL More... | |
Protected Member Functions | |
void | _opengl_stencil_edge (bool hollow=true) const |
General edge-rendering algorithm using stencil buffer. More... | |
void | _opengl_offset_edge (double offset_factor=0, double offset_units=0) const |
General edge_rendering algorithm using polygon offset. More... | |
Additional Inherited Members | |
Protected Types inherited from kjb::Abstract_renderable | |
enum | Rendering_frameworks { RI_OPENGL } |
Static Protected Attributes inherited from kjb::Abstract_renderable | |
static unsigned int | _rendering_framework = kjb::Abstract_renderable::RI_OPENGL |
This class is for objects which have all forms of renderability, and provides some default implementation for wire and occluded wire rendering.
The inherited class need only implement solid_render() – wire rendering and occluded wire rendering are implemented using solid_render(). The provided method for occluded wire rendering doesn't draw interior edges, only sillhouette edges are drawn. Inherited classes are free to uoverride this functionality if desired.
Inherited classes only need to implement solid_render() to get all three types of rendering. Optionally, the inherited class may choose between the two methods for occluded edge rendering offered by Generic_renderable, to balance speed and quality, or implement its own method.
|
protected |
General edge_rendering algorithm using polygon offset.
Render object edges using our "offset" method.
Pros:
offset_factor | "factor" parameter to glPolygonOffset |
offset_units | "units" parameter to glPolygonOffset |
If internal edges show through, try increasing factor or units
Assumes: GL_DEPTH_TEST is enabled glColor3f is set to something other than white
|
protected |
General edge-rendering algorithm using stencil buffer.
Inexpensive, general purpose silhouette edge rendering using opengl stencils.
Benefits: Fast: Silhouettes computed in graphics hardware No knowledge of geometry necessary. Drawbacks: Slow: Requires rendering the model 3 times (4 if hollow) Doesn't draw crease edges; Some double-width edges at orthogonal surfaces Edge pixels not so good with nurbs
hollow | set to true if both sides of a polygon are visible. Enabling roughly doubles render time. |
|
inlinestatic |
Set the "transparent" color. Pixels lying in the interior of the object will be rendered this color
Default is white.
|
inlinestatic |
Set the edge color. Pixels lying on the border of the object's silhouette will be this color.
Default is black.
|
pure virtual |
|
inlinevirtual |
Render silhouette edges.
Implements kjb::Wire_occlude_renderable.
|
inlinevirtual |
Render silhouette edges.
|
virtual |
Render wire mesh.
Implements kjb::Wire_renderable.