BALL::VIEW::GLRenderer Class Reference
[Renderer]

#include <BALL/VIEW/RENDERING/glRenderer.h>

Inheritance diagram for BALL::VIEW::GLRenderer:
BALL::VIEW::Renderer BALL::Object BALL::AutoDeletable

List of all members.


Classes

class  WrongModes

Public Types

enum  StereoMode { NO_STEREO = 0, ACTIVE_STEREO, DUAL_VIEW_STEREO, DUAL_VIEW_DIFFERENT_DISPLAY_STEREO }
enum  RenderMode { RENDER_MODE_UNDEFINED = 0, RENDER_MODE_SOLID, RENDER_MODE_TRANSPARENT, RENDER_MODE_ALWAYS_FRONT }
enum  BufferMode { DIRECT_RENDERING = 0, DISPLAY_LISTS_RENDERING, REBUILD_DISPLAY_LISTS }
typedef unsigned int Name
 

Typedef for OPENGL names.



Public Member Functions

 GLRenderer ()
 

Default Constructor.


virtual ~GLRenderer ()
 

Destructor.


virtual void clear ()
 

Explicit default initialization.


void dump (std::ostream &s, Size depth) const
Name getName (const GeometricObject &object)
GeometricObjectgetObject (GLRenderer::Name name) const
virtual bool init (Scene &scene)
virtual bool init (const Stage &stage, float width, float height)
 

Initialise the renderer, e.g. the display lists.


virtual void setLights (bool reset_all=false)
 

Set the light sources according to the stage.


virtual void setSmoothLines (bool smooth_lines)
virtual bool getSmoothLines ()
Vector3 mapViewportTo3D (Position x, Position y)
Vector2 map3DToViewport (const Vector3 &vec)
void pickObjects1 (Position x1, Position y1, Position x2, Position y2)
void pickObjects2 (List< GeometricObject * > &objects)
void enterPickingMode ()
void exitPickingMode ()
void setSize (float width, float height)
 

Set the size of the display.


float getXScale () const
float getYScale () const
virtual void updateBackgroundColor ()
 

Update the background color from the stage.


void initTransparent ()
void initSolid ()
void initAlwaysFront ()
void setAntialiasing (bool state)
 

Enable or disable antialiasing.


void removeRepresentation (const Representation &rep)
 

Remove all VertexBuffer and DisplayLists for the given Representation.


void bufferRepresentation (const Representation &rep)
 

Buffer the visualisation for the given Representation into OpenGL VertexBuffer Objects and DisplayLists.


void drawBuffered (const Representation &rep)
 

Draw the visualisation of the given Representation from the VertexBuffers and a DisplayList.


bool hasDisplayListFor (const Representation &rep) const
 

Test if a Representation has a DisplayList.


void setStereoMode (StereoMode state)
StereoMode getStereoMode () const
RenderMode getRenderMode () const
void setRenderMode (RenderMode mode)
virtual void renderToBuffer (RenderTarget *renderTarget, BufferMode)
virtual bool render (const Representation &representation, bool for_display_list=false)
virtual void bufferingDependentRender_ (const Representation &repr, BufferMode mode)
bool isExtensionSupported (const String &extension) const
void clearVertexBuffersFor (Representation &rep)
bool vertexBuffersSupported () const
String getVendor ()
String getRenderer ()
String getOpenGLVersion ()
vector< StringgetExtensions ()
bool enableVertexBuffers (bool state)
bool vertexBuffersEnabled () const
DrawingMode getDrawingMode () const
void initPerspective ()
void setColorRGBA_ (const ColorRGBA &color)
void vertexVector3_ (const Vector3 &v)
void updateCamera (const Camera *camera=0)
void setupStereo (float eye_separation, float focal_length)
Position createTextureFromGrid (const RegularData3D &grid, const ColorMap &map)
void removeTextureFor_ (const RegularData3D &grid)
void getFrustum (float &near, float &far, float &left, float &right, float &top, float &bottom)

Protected Types

typedef HashMap< const
GeometricObject *, Name
NameHashMap
typedef HashMap< Name, const
GeometricObject * > 
GeometricObjectHashMap
typedef HashMap< const
Representation
*, GLDisplayList * > 
DisplayListHashMap
typedef HashMap< const
Representation *, vector
< MeshBuffer * > > 
MeshBufferHashMap

Protected Member Functions

bool mapViewplaneToScreen_ ()
void renderRepresentation_ (const Representation &representation, bool for_display_list)
void renderRepresentations_ (BufferMode mode)
virtual void renderLabel_ (const Label &)
virtual void renderLine_ (const Line &)
 

Render a line.


virtual void renderMultiLine_ (const MultiLine &line)
 

Render an illuminated line.


virtual void renderMesh_ (const Mesh &)
 

Render a surface mesh.


virtual void renderQuadMesh_ (const QuadMesh &)
 

Render a quad mesh.


void initDrawingMeshes_ ()
void initDrawingOthers_ ()
virtual void renderRuler ()
virtual void renderPoint_ (const Point &)
 

Render a single point.


virtual void renderSimpleBox_ (const SimpleBox &)
 

Render a simple box (parallel to the axes).


virtual void renderBox_ (const Box &)
 

Render a box.


virtual void renderSphere_ (const Sphere &)
 

Render a sphere.


virtual void renderDisc_ (const Disc &)
 

Render a disc.


virtual void renderTube_ (const Tube &)
 

Render a tube.


virtual void renderTwoColoredLine_ (const TwoColoredLine &)
 

Render a line with two colors.


virtual void renderTwoColoredTube_ (const TwoColoredTube &)
 

Render a tube with two colors.


virtual void renderClippingPlane_ (const ClippingPlane &plane)
virtual void renderGridVisualisation_ (const GridVisualisation &vol)
 

Render a grid slice.


void setColor4ub_ (const GeometricObject &object)
void createSpheres_ ()
void createTubes_ ()
void createBoxes_ ()
void createDottedSphere_ (int precision)
void subdivideTriangle_ (Vector3 &v1, Vector3 &v2, Vector3 &v3, int precision)
void createLineBox_ ()
void createDotBox_ ()
void createSolidBox_ ()
void clearNames_ ()
void normalVector3_ (const Vector3 &v)
void translateVector3_ (const Vector3 &v)
void texCoordVector3_ (const Vector3 &v)
void scaleVector3_ (const Vector3 &v)
void rotateVector3Angle_ (const Vector3 &v, Real angle)
void scale_ (float f)
void initGLU_ (DrawingMode mode)
void generateIlluminationTexture_ (float ka, float kd, float kr, float shininess)
Position getTextureIndex_ (Position x, Position y, Position z, Size width, Size height)
void setupGridClipPlanes_ (const GridVisualisation &slice)

Protected Attributes

DrawingMode drawing_mode_
Index drawing_precision_
float near_
float far_
float left_
float right_
float top_
float bottom_
float x_scale_
float y_scale_
GLDisplayListGL_spheres_list_
GLDisplayListGL_tubes_list_
GLDisplayListGL_boxes_list_
GLDisplayListsphere_list_
GLDisplayList line_list_
GLuint line_texture_bind_
GLubyte line_tex_ [128][128][4]
GeometricObjectHashMap name_to_object_
NameHashMap object_to_name_
DisplayListHashMap display_lists_
MeshBufferHashMap rep_to_buffers_
Name all_names_
GLuint object_buffer_ [BALL_GLRENDERER_PICKING_NUMBER_OF_MAX_OBJECTS]
Vector3 normal_vector_
StereoMode stereo_
RenderMode render_mode_
bool use_vertex_buffer_
bool smooth_lines_
bool picking_mode_
ModelType model_type_
Position display_lists_index_
bool single_pick_
bool drawed_other_object_
bool drawed_mesh_
GLUquadricObj * GLU_quadric_obj_
HashMap< const RegularData3D
*, Position
grid_to_texture_
GLuint cel_texture_

Friends

class Scene

Detailed Description

GLRenderer Renderer which provides hardware accelerated OPENGL rendering.


Member Typedef Documentation

typedef unsigned int BALL::VIEW::GLRenderer::Name

Typedef for OPENGL names.


Member Enumeration Documentation

Enumerator:
DIRECT_RENDERING 

Render without display lists, directly to the Scene.

DISPLAY_LISTS_RENDERING 

Render the contents of the display lists.

REBUILD_DISPLAY_LISTS 

Rebuild the contents of the display lists and redraw them.

Enumerator:
RENDER_MODE_UNDEFINED 
RENDER_MODE_SOLID 
RENDER_MODE_TRANSPARENT 
RENDER_MODE_ALWAYS_FRONT 
Enumerator:
NO_STEREO 
ACTIVE_STEREO 

Stereo mode for shutter glasses.

DUAL_VIEW_STEREO 

Stereo mode for output on two projectors.

DUAL_VIEW_DIFFERENT_DISPLAY_STEREO 

Stereo mode for output on two projectors with one display per head.


Constructor & Destructor Documentation

BALL::VIEW::GLRenderer::GLRenderer (  ) 

Default Constructor.

virtual BALL::VIEW::GLRenderer::~GLRenderer (  )  [virtual]

Destructor.


Member Function Documentation

virtual void BALL::VIEW::GLRenderer::bufferingDependentRender_ ( const Representation repr,
BufferMode  mode 
) [virtual]
void BALL::VIEW::GLRenderer::bufferRepresentation ( const Representation rep  )  [virtual]

Buffer the visualisation for the given Representation into OpenGL VertexBuffer Objects and DisplayLists.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::clear (  )  [virtual]

Explicit default initialization.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::clearNames_ (  )  [protected]
void BALL::VIEW::GLRenderer::clearVertexBuffersFor ( Representation rep  ) 
void BALL::VIEW::GLRenderer::createBoxes_ (  )  [protected]
void BALL::VIEW::GLRenderer::createDotBox_ (  )  [protected]
void BALL::VIEW::GLRenderer::createDottedSphere_ ( int  precision  )  [protected]
void BALL::VIEW::GLRenderer::createLineBox_ (  )  [protected]
void BALL::VIEW::GLRenderer::createSolidBox_ (  )  [protected]
void BALL::VIEW::GLRenderer::createSpheres_ (  )  [protected]
Position BALL::VIEW::GLRenderer::createTextureFromGrid ( const RegularData3D grid,
const ColorMap map 
)
void BALL::VIEW::GLRenderer::createTubes_ (  )  [protected]
void BALL::VIEW::GLRenderer::drawBuffered ( const Representation rep  ) 

Draw the visualisation of the given Representation from the VertexBuffers and a DisplayList.

void BALL::VIEW::GLRenderer::dump ( std::ostream &  s,
Size  depth 
) const
bool BALL::VIEW::GLRenderer::enableVertexBuffers ( bool  state  ) 
void BALL::VIEW::GLRenderer::enterPickingMode (  ) 
void BALL::VIEW::GLRenderer::exitPickingMode (  ) 
void BALL::VIEW::GLRenderer::generateIlluminationTexture_ ( float  ka,
float  kd,
float  kr,
float  shininess 
) [protected]
DrawingMode BALL::VIEW::GLRenderer::getDrawingMode (  )  const
vector<String> BALL::VIEW::GLRenderer::getExtensions (  ) 
void BALL::VIEW::GLRenderer::getFrustum ( float near,
float far,
float left,
float right,
float top,
float bottom 
)
Name BALL::VIEW::GLRenderer::getName ( const GeometricObject object  )  [inline]
GeometricObject* BALL::VIEW::GLRenderer::getObject ( GLRenderer::Name  name  )  const
String BALL::VIEW::GLRenderer::getOpenGLVersion (  ) 
String BALL::VIEW::GLRenderer::getRenderer (  ) 
RenderMode BALL::VIEW::GLRenderer::getRenderMode (  )  const
virtual bool BALL::VIEW::GLRenderer::getSmoothLines (  )  [virtual]
StereoMode BALL::VIEW::GLRenderer::getStereoMode (  )  const
Position BALL::VIEW::GLRenderer::getTextureIndex_ ( Position  x,
Position  y,
Position  z,
Size  width,
Size  height 
) [inline, protected]
String BALL::VIEW::GLRenderer::getVendor (  ) 
float BALL::VIEW::GLRenderer::getXScale (  )  const
float BALL::VIEW::GLRenderer::getYScale (  )  const
bool BALL::VIEW::GLRenderer::hasDisplayListFor ( const Representation rep  )  const

Test if a Representation has a DisplayList.

virtual bool BALL::VIEW::GLRenderer::init ( const Stage stage,
float  width,
float  height 
) [virtual]

Initialise the renderer, e.g. the display lists.

Reimplemented from BALL::VIEW::Renderer.

virtual bool BALL::VIEW::GLRenderer::init ( Scene scene  )  [virtual]

Initialization routines. This method is called by Scene::initializeGL.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::initAlwaysFront (  ) 
void BALL::VIEW::GLRenderer::initDrawingMeshes_ (  )  [protected]
void BALL::VIEW::GLRenderer::initDrawingOthers_ (  )  [protected]
void BALL::VIEW::GLRenderer::initGLU_ ( DrawingMode  mode  )  [protected]
void BALL::VIEW::GLRenderer::initPerspective (  ) 
void BALL::VIEW::GLRenderer::initSolid (  ) 
void BALL::VIEW::GLRenderer::initTransparent (  ) 
bool BALL::VIEW::GLRenderer::isExtensionSupported ( const String extension  )  const

Test if a given opengl extension is supported by the current driver. Call this only after Scene::initializeGL();

Vector2 BALL::VIEW::GLRenderer::map3DToViewport ( const Vector3 vec  )  [virtual]

Compute the 2D position on the screen corresponding to the 3D point vec

Reimplemented from BALL::VIEW::Renderer.

bool BALL::VIEW::GLRenderer::mapViewplaneToScreen_ (  )  [protected]

Maps the current viewplane to screen coordinates. Returns false if the projection matrix is not correctly initialized.

Vector3 BALL::VIEW::GLRenderer::mapViewportTo3D ( Position  x,
Position  y 
) [virtual]

Compute the 3D position on the view plane corresponding to point (x,y) on the view port

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::normalVector3_ ( const Vector3 v  )  [protected]
void BALL::VIEW::GLRenderer::pickObjects1 ( Position  x1,
Position  y1,
Position  x2,
Position  y2 
)

Pick geometric objects

Parameters:
x1,y1,x2,y2 the rectangle of the selection
void BALL::VIEW::GLRenderer::pickObjects2 ( List< GeometricObject * > &  objects  ) 

Pick geometric objects method2. Call this method after pickObjects1 and rendering the representations.

Parameters:
objects returns the picked objects
void BALL::VIEW::GLRenderer::removeRepresentation ( const Representation rep  )  [virtual]

Remove all VertexBuffer and DisplayLists for the given Representation.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::removeTextureFor_ ( const RegularData3D grid  ) 
virtual bool BALL::VIEW::GLRenderer::render ( const Representation representation,
bool  for_display_list = false 
) [virtual]
virtual void BALL::VIEW::GLRenderer::renderBox_ ( const Box  )  [protected, virtual]

Render a box.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderClippingPlane_ ( const ClippingPlane plane  )  [protected, virtual]

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderDisc_ ( const Disc  )  [protected, virtual]

Render a disc.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderGridVisualisation_ ( const GridVisualisation vol  )  [protected, virtual]

Render a grid slice.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderLabel_ ( const Label  )  [protected, virtual]

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderLine_ ( const Line  )  [protected, virtual]

Render a line.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderMesh_ ( const Mesh  )  [protected, virtual]

Render a surface mesh.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderMultiLine_ ( const MultiLine line  )  [protected, virtual]

Render an illuminated line.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderPoint_ ( const Point  )  [protected, virtual]

Render a single point.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderQuadMesh_ ( const QuadMesh  )  [protected, virtual]

Render a quad mesh.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::renderRepresentation_ ( const Representation representation,
bool  for_display_list 
) [protected]
void BALL::VIEW::GLRenderer::renderRepresentations_ ( BufferMode  mode  )  [protected]
virtual void BALL::VIEW::GLRenderer::renderRuler (  )  [protected, virtual]

Render a ruler.

If supported by the renderer implementation, this function will produce a simple ruler that is rendered together with the other representations. The main use of this function is in the edit mode, where it can help to straighten-up structures and to correctly estimate angles and distances.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderSimpleBox_ ( const SimpleBox  )  [protected, virtual]

Render a simple box (parallel to the axes).

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderSphere_ ( const Sphere  )  [protected, virtual]

Render a sphere.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderToBuffer ( RenderTarget renderTarget,
BufferMode   
) [virtual]

This function renders into the buffer of the RenderTarget which has to be made current before this function is called. Buffers are not automatically swapped afterwards!

virtual void BALL::VIEW::GLRenderer::renderTube_ ( const Tube  )  [protected, virtual]

Render a tube.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderTwoColoredLine_ ( const TwoColoredLine  )  [protected, virtual]

Render a line with two colors.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::renderTwoColoredTube_ ( const TwoColoredTube  )  [protected, virtual]

Render a tube with two colors.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::rotateVector3Angle_ ( const Vector3 v,
Real  angle 
) [protected]
void BALL::VIEW::GLRenderer::scale_ ( float  f  )  [protected]
void BALL::VIEW::GLRenderer::scaleVector3_ ( const Vector3 v  )  [protected]
void BALL::VIEW::GLRenderer::setAntialiasing ( bool  state  ) 

Enable or disable antialiasing.

void BALL::VIEW::GLRenderer::setColor4ub_ ( const GeometricObject object  )  [protected]
void BALL::VIEW::GLRenderer::setColorRGBA_ ( const ColorRGBA color  ) 
virtual void BALL::VIEW::GLRenderer::setLights ( bool  reset_all = false  )  [virtual]

Set the light sources according to the stage.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::setRenderMode ( RenderMode  mode  )  [inline]
void BALL::VIEW::GLRenderer::setSize ( float  width,
float  height 
) [virtual]

Set the size of the display.

Reimplemented from BALL::VIEW::Renderer.

virtual void BALL::VIEW::GLRenderer::setSmoothLines ( bool  smooth_lines  )  [virtual]

Should the lines in the line representation and the wireframe models be smoothed?

void BALL::VIEW::GLRenderer::setStereoMode ( StereoMode  state  ) 
void BALL::VIEW::GLRenderer::setupGridClipPlanes_ ( const GridVisualisation slice  )  [protected]
void BALL::VIEW::GLRenderer::setupStereo ( float  eye_separation,
float  focal_length 
) [virtual]

Sets this renderer as a part of a stereo setup.

eye_separation denotes the distance along the right vector used by this "eye".

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::subdivideTriangle_ ( Vector3 v1,
Vector3 v2,
Vector3 v3,
int  precision 
) [protected]
void BALL::VIEW::GLRenderer::texCoordVector3_ ( const Vector3 v  )  [inline, protected]
void BALL::VIEW::GLRenderer::translateVector3_ ( const Vector3 v  )  [protected]
virtual void BALL::VIEW::GLRenderer::updateBackgroundColor (  )  [virtual]

Update the background color from the stage.

Reimplemented from BALL::VIEW::Renderer.

void BALL::VIEW::GLRenderer::updateCamera ( const Camera camera = 0  )  [virtual]

Update the camera position either from a given Camera, or from the default Stage.

Reimplemented from BALL::VIEW::Renderer.

bool BALL::VIEW::GLRenderer::vertexBuffersEnabled (  )  const
bool BALL::VIEW::GLRenderer::vertexBuffersSupported (  )  const
void BALL::VIEW::GLRenderer::vertexVector3_ ( const Vector3 v  ) 

Friends And Related Function Documentation

friend class Scene [friend]

Member Data Documentation

GLUquadricObj* BALL::VIEW::GLRenderer::GLU_quadric_obj_ [protected]
GLubyte BALL::VIEW::GLRenderer::line_tex_[128][128][4] [protected]
GLuint BALL::VIEW::GLRenderer::object_buffer_[BALL_GLRENDERER_PICKING_NUMBER_OF_MAX_OBJECTS] [protected]