Shape Class Reference
[Basic]

Base class for a 3D object in the scene. More...

#include <Shape.hpp>

Inheritance diagram for Shape:
SimpleDrawable SimpleTransformable Drawable Node Transformable NodeListener Identifiable Cone Disk Hexahedron Line Square Boolean Box Cube BooleanAnd BooleanXor

List of all members.

Public Member Functions

 Shape (const Tag &tag, ShapeTraits traits)
virtual void associate ()
virtual void draw () const
void draw (int first, int number) const
virtual void finalize ()
virtual list< VertexAttribute > getAttributes () const
virtual GLuint getCount () const
virtual GLuint getLimit () const
virtual string getName () const
virtual ProgramgetProgram () const
virtual void setAttributes (list< VertexAttribute > &attributes)
virtual void setProgram (Program *program)
virtual string toString () const

Protected Member Functions

void checkForDefaultUniforms ()
virtual GLuint getOffset (const string &name) const
void setBufferData (const string &name, GLfloat data[][3])
virtual void setCount (GLuint count)
virtual void setLimit (GLuint limit)
virtual void updateBuffer ()=0

Static Protected Member Functions

static bool isBufferStored (const string &className)

Private Attributes

bool defaults
list< VertexAttribute > attributes
GLenum mode
GLenum usage
GLuint block
GLuint buffer
GLuint count
GLuint limit
map< string, GLuint > offsets
Programprogram
string name

Static Private Attributes

static map< string, GLuint > buffers

Detailed Description

Base class for a 3D object in the scene.

Uses a vertex buffer for drawing. If usage is GL_STATIC_DRAW, a buffer will only be generated once for each concrete shape. Subsequent instances of that shape will be given the same buffer. That way duplicate buffers are avoided.

count Number of elements in the shape.
buffer Handle that OpenGL identifies the vertex buffer with.
program Pointer to the Program the shape will be rendered with.

Constructor & Destructor Documentation

Shape ( const Tag tag,
ShapeTraits  traits 
)

Creates a shape from an XML tag.

Parameters:
tag XML tag with attributes for SimpleDrawable.
traits Structure of shape parameters.

Member Function Documentation

void associate (  )  [virtual]

Finds a program to bind the shape's vertex attributes to.

Exceptions:
NodeException if a program cannot be found.

Reimplemented from SimpleTransformable.

Reimplemented in Boolean, and BooleanAnd.

void draw ( int  first,
int  number 
) const

Renders part of the shape.

void draw (  )  const [virtual]

Renders the entire shape.

Implements SimpleDrawable.

Reimplemented in Boolean, BooleanAnd, and BooleanXor.

void finalize (  )  [virtual]

Loads the vertex data into the vertex buffer so it's ready to render.

Reimplemented from Node.

Reimplemented in Boolean.

list< VertexAttribute > getAttributes (  )  const [inline, virtual]
Returns:
Attributes in use for this shape.
GLuint getCount (  )  const [inline, virtual]
Returns:
Number of vertices in the shape.
GLuint getLimit (  )  const [inline, virtual]
Returns:
Number of vertices that will be drawn.
string getName (  )  const [inline, virtual]
Returns:
User-assigned name of the shape.
GLuint getOffset ( const string &  name  )  const [protected, virtual]
Returns:
Number of bytes into the vertex buffer for a vertex attribute.
Program * getProgram (  )  const [inline, virtual]
Returns:
Program the shape sends vertex attributes to.
bool isBufferStored ( const string &  className  )  [static, protected]

Checks if a buffer already exists for a concrete shape.

void setAttributes ( list< VertexAttribute > &  a  )  [inline, virtual]

Set attributes in use for this shape.

void setBufferData ( const string &  name,
GLfloat  data[][3] 
) [protected]

Sets data in the buffer according to its vertex attribute name.

Parameters:
name Name of the vertex attribute
data Array of values of length count
void setCount ( GLuint  c  )  [inline, protected, virtual]

Sets the number of vertices in the shape.

void setLimit ( GLuint  l  )  [inline, protected, virtual]

Sets the number of vertices that will be drawn.

void setProgram ( Program p  )  [inline, virtual]

Sets the program to send vertex attributes to.

string toString (  )  const [virtual]
Returns:
String comprised of the object's attributes.

Reimplemented from SimpleDrawable.

Reimplemented in Boolean, and BooleanXor.


The documentation for this class was generated from the following files:
Generated on Wed Jun 9 01:36:36 2010 for Gander by  doxygen 1.6.3