Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

Ogre::HardwareBufferManager Class Reference

Abstract singleton class for managing hardware buffers, a concrete instance of this will be created by the RenderSystem. More...

#include <OgreHardwareBufferManager.h>

Inheritance diagram for Ogre::HardwareBufferManager:

Inheritance graph
[legend]
Collaboration diagram for Ogre::HardwareBufferManager:

Collaboration graph
[legend]
List of all members.

Public Methods

 HardwareBufferManager ()
virtual ~HardwareBufferManager ()
virtual HardwareVertexBufferSharedPtr createVertexBuffer (size_t vertexSize, size_t numVerts, HardwareBuffer::Usage usage, bool useShadowBuffer=false)=0
 Create a hardware vertex buffer.

virtual HardwareIndexBufferSharedPtr createIndexBuffer (HardwareIndexBuffer::IndexType itype, size_t numIndexes, HardwareBuffer::Usage usage, bool useShadowBuffer=false)=0
 Create a hardware index buffer.

virtual VertexDeclarationcreateVertexDeclaration (void)
 Creates a vertex declaration, may be overridden by certain rendering APIs.

virtual void destroyVertexDeclaration (VertexDeclaration *decl)
 Destroys a vertex declaration, may be overridden by certain rendering APIs.

virtual VertexBufferBindingcreateVertexBufferBinding (void)
 Creates a new VertexBufferBinding.

virtual void destroyVertexBufferBinding (VertexBufferBinding *binding)
 Destroys a VertexBufferBinding.


Static Public Methods

HardwareBufferManager & getSingleton (void)
 Override standard Singleton retrieval.

HardwareBufferManager * getSingletonPtr (void)

Protected Types

typedef std::list< VertexDeclaration * > VertexDeclarationList
typedef std::list< VertexBufferBinding * > VertexBufferBindingList
typedef std::set< HardwareVertexBuffer * > VertexBufferList
typedef std::set< HardwareIndexBuffer * > IndexBufferList

Protected Methods

virtual void destroyVertexBuffer (HardwareVertexBuffer *buf)=0
 Destroy a hardware vertex buffer, do not call direct.

virtual void destroyIndexBuffer (HardwareIndexBuffer *buf)=0
 Destroy a hardware index buffer, do not call direct.

virtual void destroyAllDeclarations (void)
virtual void destroyAllBindings (void)

Protected Attributes

VertexDeclarationList mVertexDeclarations
VertexBufferBindingList mVertexBufferBindings
VertexBufferList mVertexBuffers
IndexBufferList mIndexBuffers

Static Protected Attributes

HardwareBufferManager * ms_Singleton = 0

Friends

class HardwareVertexBufferSharedPtr
class HardwareIndexBufferSharedPtr

Detailed Description

Abstract singleton class for managing hardware buffers, a concrete instance of this will be created by the RenderSystem.

Definition at line 40 of file OgreHardwareBufferManager.h.


Member Typedef Documentation

typedef std::set<HardwareIndexBuffer*> Ogre::HardwareBufferManager::IndexBufferList [protected]
 

Definition at line 48 of file OgreHardwareBufferManager.h.

typedef std::list<VertexBufferBinding*> Ogre::HardwareBufferManager::VertexBufferBindingList [protected]
 

Definition at line 46 of file OgreHardwareBufferManager.h.

typedef std::set<HardwareVertexBuffer*> Ogre::HardwareBufferManager::VertexBufferList [protected]
 

Definition at line 47 of file OgreHardwareBufferManager.h.

typedef std::list<VertexDeclaration*> Ogre::HardwareBufferManager::VertexDeclarationList [protected]
 

Definition at line 45 of file OgreHardwareBufferManager.h.


Constructor & Destructor Documentation

Ogre::HardwareBufferManager::HardwareBufferManager  
 

Definition at line 34 of file OgreHardwareBufferManager.cpp.

Ogre::HardwareBufferManager::~HardwareBufferManager   [virtual]
 

Definition at line 38 of file OgreHardwareBufferManager.cpp.

References destroyAllBindings(), and destroyAllDeclarations().


Member Function Documentation

virtual HardwareIndexBufferSharedPtr Ogre::HardwareBufferManager::createIndexBuffer HardwareIndexBuffer::IndexType    itype,
size_t    numIndexes,
HardwareBuffer::Usage    usage,
bool    useShadowBuffer = false
[pure virtual]
 

Create a hardware index buffer.

Remarks:
Note that because buffers can be shared, they are reference counted so you do not need to worry about destroying themm this will be done automatically.
Parameters:
itype  The type in index, either 16- or 32-bit, depending on how many vertices you need to be able to address
numIndexes  The number of indexes in the buffer
usage  One or more members of the HardwareBuffer::Usage enumeration.
useShadowBuffer  If set to true, this buffer will be 'shadowed' by one stored in system memory rather than GPU or AGP memory. You should set this flag if you intend to read data back from the index buffer, because reading data from a buffer in the GPU or AGP memory is very expensive, and is in fact impossible if you specify HBU_WRITE_ONLY for the main buffer. If you use this option, all reads and writes will be done to the shadow buffer, and the shadow buffer will be synchronised with the real buffer at an appropriate time.

Implemented in Ogre::DefaultHardwareBufferManager, Ogre::D3D7HardwareBufferManager, Ogre::D3D9HardwareBufferManager, Ogre::GLDefaultHardwareBufferManager, and Ogre::GLHardwareBufferManager.

virtual HardwareVertexBufferSharedPtr Ogre::HardwareBufferManager::createVertexBuffer size_t    vertexSize,
size_t    numVerts,
HardwareBuffer::Usage    usage,
bool    useShadowBuffer = false
[pure virtual]
 

Create a hardware vertex buffer.

Remarks:
This method creates a new vertex buffer; this will act as a source of geometry data for rendering objects. Note that because the meaning of the contents of the vertex buffer depends on the usage, this method does not specify a vertex format; the user of this buffer can actually insert whatever data they wish, in any format. However, in order to use this with a RenderOperation, the data in this vertex buffer will have to be associated with a semantic element of the rendering pipeline, e.g. a position, or texture coordinates. This is done using the VertexDeclaration class, which itself contains VertexElement structures referring to the source data.
Note that because vertex buffers can be shared, they are reference counted so you do not need to worry about destroying themm this will be done automatically.
Parameters:
vertexSize  The size in bytes of each vertex in this buffer; you must calculate this based on the kind of data you expect to populate this buffer with.
numVerts  The number of vertices in this buffer.
usage  One or more members of the HardwareBuffer::Usage enumeration; you are strongly advised to use HBU_STATIC_WRITE_ONLY wherever possible, if you need to update regularly, consider HBU_DYNAMIC_WRITE_ONLY and useShadowBuffer=true.
useShadowBuffer  If set to true, this buffer will be 'shadowed' by one stored in system memory rather than GPU or AGP memory. You should set this flag if you intend to read data back from the vertex buffer, because reading data from a buffer in the GPU or AGP memory is very expensive, and is in fact impossible if you specify HBU_WRITE_ONLY for the main buffer. If you use this option, all reads and writes will be done to the shadow buffer, and the shadow buffer will be synchronised with the real buffer at an appropriate time.

Implemented in Ogre::DefaultHardwareBufferManager, Ogre::D3D9HardwareBufferManager, Ogre::GLDefaultHardwareBufferManager, and Ogre::GLHardwareBufferManager.

VertexBufferBinding * Ogre::HardwareBufferManager::createVertexBufferBinding void    [virtual]
 

Creates a new VertexBufferBinding.

Definition at line 65 of file OgreHardwareBufferManager.cpp.

References mVertexBufferBindings.

VertexDeclaration * Ogre::HardwareBufferManager::createVertexDeclaration void    [virtual]
 

Creates a vertex declaration, may be overridden by certain rendering APIs.

Reimplemented in Ogre::D3D9HardwareBufferManager, and Ogre::GLHardwareBufferManager.

Definition at line 51 of file OgreHardwareBufferManager.cpp.

References mVertexDeclarations.

void Ogre::HardwareBufferManager::destroyAllBindings void    [protected, virtual]
 

Definition at line 89 of file OgreHardwareBufferManager.cpp.

References mVertexBufferBindings.

Referenced by Ogre::D3D9HardwareBufferManager::~D3D9HardwareBufferManager(), Ogre::DefaultHardwareBufferManager::~DefaultHardwareBufferManager(), Ogre::GLDefaultHardwareBufferManager::~GLDefaultHardwareBufferManager(), Ogre::GLHardwareBufferManager::~GLHardwareBufferManager(), and ~HardwareBufferManager().

void Ogre::HardwareBufferManager::destroyAllDeclarations void    [protected, virtual]
 

Reimplemented in Ogre::D3D9HardwareBufferManager.

Definition at line 78 of file OgreHardwareBufferManager.cpp.

References mVertexDeclarations.

Referenced by Ogre::DefaultHardwareBufferManager::~DefaultHardwareBufferManager(), Ogre::GLDefaultHardwareBufferManager::~GLDefaultHardwareBufferManager(), Ogre::GLHardwareBufferManager::~GLHardwareBufferManager(), and ~HardwareBufferManager().

virtual void Ogre::HardwareBufferManager::destroyIndexBuffer HardwareIndexBuffer   buf [protected, pure virtual]
 

Destroy a hardware index buffer, do not call direct.

Implemented in Ogre::DefaultHardwareBufferManager, Ogre::D3D9HardwareBufferManager, Ogre::GLDefaultHardwareBufferManager, and Ogre::GLHardwareBufferManager.

virtual void Ogre::HardwareBufferManager::destroyVertexBuffer HardwareVertexBuffer   buf [protected, pure virtual]
 

Destroy a hardware vertex buffer, do not call direct.

Implemented in Ogre::DefaultHardwareBufferManager, Ogre::D3D9HardwareBufferManager, Ogre::GLDefaultHardwareBufferManager, and Ogre::GLHardwareBufferManager.

void Ogre::HardwareBufferManager::destroyVertexBufferBinding VertexBufferBinding   binding [virtual]
 

Destroys a VertexBufferBinding.

Definition at line 72 of file OgreHardwareBufferManager.cpp.

References mVertexBufferBindings.

void Ogre::HardwareBufferManager::destroyVertexDeclaration VertexDeclaration   decl [virtual]
 

Destroys a vertex declaration, may be overridden by certain rendering APIs.

Reimplemented in Ogre::D3D9HardwareBufferManager, and Ogre::GLHardwareBufferManager.

Definition at line 59 of file OgreHardwareBufferManager.cpp.

References mVertexDeclarations.

HardwareBufferManager & Ogre::HardwareBufferManager::getSingleton void    [static]
 

Override standard Singleton retrieval.

Remarks:
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.

This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.

Reimplemented from Ogre::Singleton< HardwareBufferManager >.

Definition at line 46 of file OgreHardwareBufferManager.cpp.

HardwareBufferManager* Ogre::Singleton< HardwareBufferManager >::getSingletonPtr void    [static, inherited]
 

Definition at line 71 of file OgreSingleton.h.


Friends And Related Function Documentation

friend class HardwareIndexBufferSharedPtr [friend]
 

Definition at line 43 of file OgreHardwareBufferManager.h.

Referenced by Ogre::GLHardwareBufferManager::createIndexBuffer(), Ogre::GLDefaultHardwareBufferManager::createIndexBuffer(), Ogre::DefaultHardwareBufferManager::createIndexBuffer(), and Ogre::D3D9HardwareBufferManager::createIndexBuffer().

friend class HardwareVertexBufferSharedPtr [friend]
 

Definition at line 42 of file OgreHardwareBufferManager.h.

Referenced by Ogre::GLHardwareBufferManager::createVertexBuffer(), Ogre::GLDefaultHardwareBufferManager::createVertexBuffer(), Ogre::DefaultHardwareBufferManager::createVertexBuffer(), and Ogre::D3D9HardwareBufferManager::createVertexBuffer().


Member Data Documentation

IndexBufferList Ogre::HardwareBufferManager::mIndexBuffers [protected]
 

Definition at line 53 of file OgreHardwareBufferManager.h.

Referenced by Ogre::DefaultHardwareBufferManager::createIndexBuffer(), and Ogre::DefaultHardwareBufferManager::destroyIndexBuffer().

HardwareBufferManager * Ogre::Singleton< HardwareBufferManager >::ms_Singleton = 0 [static, protected, inherited]
 

Definition at line 32 of file OgreHardwareBufferManager.cpp.

VertexBufferBindingList Ogre::HardwareBufferManager::mVertexBufferBindings [protected]
 

Definition at line 51 of file OgreHardwareBufferManager.h.

Referenced by createVertexBufferBinding(), destroyAllBindings(), and destroyVertexBufferBinding().

VertexBufferList Ogre::HardwareBufferManager::mVertexBuffers [protected]
 

Definition at line 52 of file OgreHardwareBufferManager.h.

Referenced by Ogre::DefaultHardwareBufferManager::createVertexBuffer(), and Ogre::DefaultHardwareBufferManager::destroyVertexBuffer().

VertexDeclarationList Ogre::HardwareBufferManager::mVertexDeclarations [protected]
 

Definition at line 50 of file OgreHardwareBufferManager.h.

Referenced by createVertexDeclaration(), Ogre::GLHardwareBufferManager::createVertexDeclaration(), Ogre::D3D9HardwareBufferManager::createVertexDeclaration(), destroyAllDeclarations(), Ogre::D3D9HardwareBufferManager::destroyAllDeclarations(), destroyVertexDeclaration(), Ogre::GLHardwareBufferManager::destroyVertexDeclaration(), and Ogre::D3D9HardwareBufferManager::destroyVertexDeclaration().


The documentation for this class was generated from the following files:

Copyright © 2002-2003 by The OGRE Team
Last modified Wed Jan 21 00:17:51 2004