Crazy Eddie's GUI System  0.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
CEGUI::OgreGeometryBuffer Class Reference

Implementation of CEGUI::GeometryBuffer for the Ogre engine. More...

+ Inheritance diagram for CEGUI::OgreGeometryBuffer:
+ Collaboration diagram for CEGUI::OgreGeometryBuffer:

Classes

struct  BatchInfo
 type to track info for per-texture sub batches of geometry More...
 
struct  OgreVertex
 vertex structure used internally and also by Ogre. More...
 

Public Member Functions

 OgreGeometryBuffer (OgreRenderer &owner, Ogre::RenderSystem &rs)
 Constructor.
 
virtual ~OgreGeometryBuffer ()
 Destructor.
 
const Ogre::Matrix4 & getMatrix () const
 return the transformation matrix used for this buffer.
 
virtual void draw () const
 Draw the geometry buffered within this GeometryBuffer object.
 
virtual void setTranslation (const Vector3f &v)
 Set the translation to be applied to the geometry in the buffer when it is subsequently rendered. More...
 
virtual void setRotation (const Quaternion &r)
 Set the rotations to be applied to the geometry in the buffer when it is subsequently rendered. More...
 
virtual void setPivot (const Vector3f &p)
 Set the pivot point to be used when applying the rotations. More...
 
virtual void setClippingRegion (const Rectf &region)
 Set the clipping region to be used when rendering this buffer.
 
virtual void appendVertex (const Vertex &vertex)
 Append a single vertex to the buffer. More...
 
virtual void appendGeometry (const Vertex *const vbuff, uint vertex_count)
 Append a number of vertices from an array to the GeometryBuffer. More...
 
virtual void setActiveTexture (Texture *texture)
 Set the active texture to be used with all subsequently added vertices. More...
 
virtual void reset ()
 Clear all buffered data and reset the GeometryBuffer to the default state.
 
virtual TexturegetActiveTexture () const
 Return a pointer to the currently active Texture object. This may return 0 if no texture is set. More...
 
virtual uint getVertexCount () const
 Return the total number of vertices currently held by this GeometryBuffer object. More...
 
virtual uint getBatchCount () const
 Return the number of batches of geometry that this GeometryBuffer has split the vertices into. More...
 
virtual void setRenderEffect (RenderEffect *effect)
 Set the RenderEffect to be used by this GeometryBuffer. More...
 
virtual RenderEffectgetRenderEffect ()
 Return the RenderEffect object that is assigned to this GeometryBuffer or 0 if none.
 
void setClippingActive (const bool active)
 Set whether clipping will be active for subsequently added vertices. More...
 
bool isClippingActive () const
 
- Public Member Functions inherited from CEGUI::GeometryBuffer
virtual ~GeometryBuffer ()
 Destructor.
 
virtual void setBlendMode (const BlendMode mode)
 Set the blend mode option to use when rendering this GeometryBuffer. More...
 
virtual BlendMode getBlendMode () const
 Return the blend mode that is set to be used for this GeometryBuffer. More...
 

Protected Types

typedef std::vector< BatchInfoBatchList
 type of container that tracks BatchInfos.
 
typedef std::vector< OgreVertexVertexList
 type of container used to queue the geometry
 

Protected Member Functions

Ogre::RGBA colourToOgre (const Colour &col) const
 convert CEGUI::colour into something Ogre can use
 
void updateMatrix () const
 update cached matrix
 
void syncHardwareBuffer () const
 Synchronise data in the hardware buffer with what's been added.
 
void initialiseTextureStates () const
 set up texture related states
 
- Protected Member Functions inherited from CEGUI::GeometryBuffer
 GeometryBuffer ()
 Constructor.
 

Protected Attributes

OgreRendererd_owner
 Renderer object that owns this GeometryBuffer.
 
Ogre::RenderSystem & d_renderSystem
 Ogre render system we're to use.
 
OgreTextured_activeTexture
 Texture that is set as active.
 
Rectf d_clipRect
 rectangular clip region
 
bool d_clippingActive
 whether clipping will be active for the current batch
 
Vector3f d_translation
 translation vector
 
Quaternion d_rotation
 rotation quaternion
 
Vector3f d_pivot
 pivot point for rotation
 
RenderEffectd_effect
 RenderEffect that will be used by the GeometryBuffer.
 
Vector2f d_texelOffset
 offset to be applied to all geometry
 
Ogre::Matrix4 d_matrix
 model matrix cache
 
bool d_matrixValid
 true when d_matrix is valid and up to date
 
Ogre::RenderOperation d_renderOp
 Render operation for this buffer.
 
Ogre::HardwareVertexBufferSharedPtr d_hwBuffer
 H/W buffer where the vertices are rendered from.
 
bool d_sync
 whether the h/w buffer is in sync with the added geometry
 
BatchList d_batches
 list of texture batches added to the geometry buffer
 
VertexList d_vertices
 container where added geometry is stored.
 
- Protected Attributes inherited from CEGUI::GeometryBuffer
BlendMode d_blendMode
 The BlendMode to use when rendering this GeometryBuffer.
 

Detailed Description

Implementation of CEGUI::GeometryBuffer for the Ogre engine.

Member Function Documentation

virtual void CEGUI::OgreGeometryBuffer::appendGeometry ( const Vertex *const  vbuff,
uint  vertex_count 
)
virtual

Append a number of vertices from an array to the GeometryBuffer.

Parameters
vbuffPointer to an array of Vertex objects that describe the vertices that are to be added to the GeometryBuffer.
vertex_countThe number of Vertex objects from the array vbuff that are to be added to the GeometryBuffer.

Implements CEGUI::GeometryBuffer.

virtual void CEGUI::OgreGeometryBuffer::appendVertex ( const Vertex vertex)
virtual

Append a single vertex to the buffer.

Parameters
vertexVertex object describing the vertex to be added to the GeometryBuffer.

Implements CEGUI::GeometryBuffer.

virtual Texture* CEGUI::OgreGeometryBuffer::getActiveTexture ( ) const
virtual

Return a pointer to the currently active Texture object. This may return 0 if no texture is set.

Returns
Pointer the Texture object that is currently active, or 0 if texturing is not being used.

Implements CEGUI::GeometryBuffer.

virtual uint CEGUI::OgreGeometryBuffer::getBatchCount ( ) const
virtual

Return the number of batches of geometry that this GeometryBuffer has split the vertices into.

Note
How batching is done will be largely implementation specific, although it would be reasonable to expect that you will have at least one batch of geometry per texture switch.
Returns
The number of batches of geometry held by the GeometryBuffer.

Implements CEGUI::GeometryBuffer.

virtual uint CEGUI::OgreGeometryBuffer::getVertexCount ( ) const
virtual

Return the total number of vertices currently held by this GeometryBuffer object.

Returns
The number of vertices that have been appended to this GeometryBuffer.

Implements CEGUI::GeometryBuffer.

virtual void CEGUI::OgreGeometryBuffer::setActiveTexture ( Texture texture)
virtual

Set the active texture to be used with all subsequently added vertices.

Parameters
texturePointer to a Texture object that shall be used for subsequently added vertices. This may be 0, in which case texturing will be disabled for subsequently added vertices.

Implements CEGUI::GeometryBuffer.

void CEGUI::OgreGeometryBuffer::setClippingActive ( const bool  active)
virtual

Set whether clipping will be active for subsequently added vertices.

Parameters
active
  • true if vertices added after this call should be clipped to the clipping region defined for this GeometryBuffer.
  • false if vertices added after this call should not be clipped (other than to the edges of rendering target.

Implements CEGUI::GeometryBuffer.

virtual void CEGUI::OgreGeometryBuffer::setPivot ( const Vector3f p)
virtual

Set the pivot point to be used when applying the rotations.

Parameters
pVector3 describing the location of the pivot point to be used when applying the rotation to the geometry.

Implements CEGUI::GeometryBuffer.

virtual void CEGUI::OgreGeometryBuffer::setRenderEffect ( RenderEffect effect)
virtual

Set the RenderEffect to be used by this GeometryBuffer.

Parameters
effectPointer to the RenderEffect to be used during renderng of the GeometryBuffer. May be 0 to remove a previously added RenderEffect.
Note
When adding a RenderEffect, the GeometryBuffer does not take ownership of, nor make a copy of, the passed RenderEffect - this means you need to be careful not to delete the RenderEffect if it might still be in use!

Implements CEGUI::GeometryBuffer.

virtual void CEGUI::OgreGeometryBuffer::setRotation ( const Quaternion r)
virtual

Set the rotations to be applied to the geometry in the buffer when it is subsequently rendered.

Parameters
rQuaternion describing the rotation to be used.

Implements CEGUI::GeometryBuffer.

virtual void CEGUI::OgreGeometryBuffer::setTranslation ( const Vector3f v)
virtual

Set the translation to be applied to the geometry in the buffer when it is subsequently rendered.

Parameters
vVector3 describing the three axis translation vector to be used.

Implements CEGUI::GeometryBuffer.