Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members

VIEW::MeshBuffer Class Reference
[Renderer]

Wrapper class to draw BALLView Mesh instances with OpenGL vertex buffer objects. More...

#include <vertexBuffer.h>

List of all members.

Public Types

typedef GLuint Buffer [4]

Public Member Functions

 MeshBuffer (const MeshBuffer &mesh_buffer)
const MeshBufferoperator= (const MeshBuffer &buffer) throw ()
const MeshgetMesh ()
 Get the Mesh for this buffer object.
void setMesh (const Mesh &mesh)
 Set the Mesh which shall be drawn with this buffer object.
bool initialize ()
 Transfer all vertex, normal, index and color data of the mesh into the vertex buffer object.
bool draw ()
 Draw the mesh from the buffer.
void clear ()
 Unset the mesh pointer and clear the buffer.
void clearBuffer ()
 Free the reserved (and filled) vertex buffer.
bool isBusy () const
 Return true, if currently updateing or drawing.

Static Public Member Functions

bool initGL ()
 Initialise the GL needed methods.
void setGLRenderer (GLRenderer *renderer)
 Set the GLRender.

Protected Attributes

const Meshmesh_
Buffer buffer_
bool filled_
bool busy_
bool multiple_colors_
ColorRGBA color_
Size vertices_
Size triangles_

Static Protected Attributes

GLRenderergl_renderer_


Detailed Description

Wrapper class to draw BALLView Mesh instances with OpenGL vertex buffer objects.

Vertex Buffer Objects are an OpenGL extension available since OpenGL version 1.5.

See http://oss.sgi.com/projects/ogl-sample/registry/EXT/pixel_buffer_object.txt
Vertex Buffer Objects can drasticaly increase drawing speed for triangulated surfaces (up to 5 fold) compared with OpenGL display lists. To ensure a maximum of platform independence we use method pointers in the source file. These must be initialised by calling MeshBuffer::initGL() (See below).


Member Function Documentation

bool VIEW::MeshBuffer::initGL  )  [static]
 

Initialise the GL needed methods.

Call this method one time after having a valid GL context (e.g. in GLRenderer::init).

void VIEW::MeshBuffer::setGLRenderer GLRenderer renderer  )  [static]
 

Set the GLRender.

This GLRender pointer is used to know if to draw the mesh transparent solid or transparent, as solid triangles or as points. Meshes can currently not drawn in wireframe mode with vertex buffer.