Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

Ogre::VertexBufferBinding Class Reference

Records the state of all the vertex buffer bindings required to provide a vertex declaration with the input data it needs for the vertex elements. More...

#include <OgreHardwareVertexBuffer.h>

Inheritance diagram for Ogre::VertexBufferBinding:

Inheritance graph
[legend]
List of all members.

Public Types

typedef std::map< unsigned
short, HardwareVertexBufferSharedPtr
VertexBufferBindingMap
 Defines the vertex buffer bindings used as source for vertex declarations.
typedef std::map< ushort,
ushort
BindingIndexMap

Public Member Functions

 VertexBufferBinding ()
 Constructor, should not be called direct, use HardwareBufferManager::createVertexBufferBinding.
virtual ~VertexBufferBinding ()
virtual void setBinding (unsigned short index, const HardwareVertexBufferSharedPtr &buffer)
 Set a binding, associating a vertex buffer with a given index.
virtual void unsetBinding (unsigned short index)
 Removes an existing binding.
virtual void unsetAllBindings (void)
 Removes all the bindings.
virtual const VertexBufferBindingMapgetBindings (void) const
 Gets a read-only version of the buffer bindings.
virtual const HardwareVertexBufferSharedPtrgetBuffer (unsigned short index) const
 Gets the buffer bound to the given source index.
virtual bool isBufferBound (unsigned short index) const
 Gets whether a buffer is bound to the given source index.
virtual size_t getBufferCount (void) const
virtual unsigned short getNextIndex (void) const
 Gets the highest index which has already been set, plus 1.
virtual unsigned short getLastBoundIndex (void) const
 Gets the last bound index.
virtual bool hasGaps (void) const
 Check whether any gaps in the bindings.
virtual void closeGaps (BindingIndexMap &bindingIndexMap)
 Remove any gaps in the bindings.
 AllocatedObject ()
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info
void * operator new (size_t sz)
void * operator new (size_t sz, void *ptr)
 placement operator new
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
void * operator new[] (size_t sz)
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr, const char *, int, const char *)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr, const char *, int, const char *)

Protected Attributes

VertexBufferBindingMap mBindingMap
unsigned short mHighIndex

Detailed Description

Records the state of all the vertex buffer bindings required to provide a vertex declaration with the input data it needs for the vertex elements.

Remarks:
Why do we have this binding list rather than just have VertexElement referring to the vertex buffers direct? Well, in the underlying APIs, binding the vertex buffers to an index (or 'stream') is the way that vertex data is linked, so this structure better reflects the realities of that. In addition, by separating the vertex declaration from the list of vertex buffer bindings, it becomes possible to reuse bindings between declarations and vice versa, giving opportunities to reduce the state changes required to perform rendering.
Like the other classes in this functional area, these binding maps should be created and destroyed using the HardwareBufferManager.

Definition at line 466 of file OgreHardwareVertexBuffer.h.


Member Typedef Documentation

typedef std::map<ushort, ushort> Ogre::VertexBufferBinding::BindingIndexMap
 

Definition at line 514 of file OgreHardwareVertexBuffer.h.

typedef std::map<unsigned short, HardwareVertexBufferSharedPtr> Ogre::VertexBufferBinding::VertexBufferBindingMap
 

Defines the vertex buffer bindings used as source for vertex declarations.

Definition at line 470 of file OgreHardwareVertexBuffer.h.


Constructor & Destructor Documentation

Ogre::VertexBufferBinding::VertexBufferBinding  ) 
 

Constructor, should not be called direct, use HardwareBufferManager::createVertexBufferBinding.

virtual Ogre::VertexBufferBinding::~VertexBufferBinding  )  [virtual]
 


Member Function Documentation

Ogre::AllocatedObject< GeometryAllocPolicy >::AllocatedObject  )  [explicit, inherited]
 

Definition at line 55 of file OgreMemoryAllocatedObject.h.

virtual void Ogre::VertexBufferBinding::closeGaps BindingIndexMap bindingIndexMap  )  [virtual]
 

Remove any gaps in the bindings.

Remarks:
This is useful if you've removed vertex buffer from this vertex buffer bindings and want to remove any gaps in the bindings. Note, however, that if this bindings is already being used with a VertexDeclaration, you will need to alter that too. This method is mainly useful when reorganising buffers manually.
Parameters:
bindingIndexMap To be retrieve the binding index map that used to translation old index to new index; will be cleared by this method before fill-in.

virtual const VertexBufferBindingMap& Ogre::VertexBufferBinding::getBindings void   )  const [virtual]
 

Gets a read-only version of the buffer bindings.

virtual const HardwareVertexBufferSharedPtr& Ogre::VertexBufferBinding::getBuffer unsigned short  index  )  const [virtual]
 

Gets the buffer bound to the given source index.

virtual size_t Ogre::VertexBufferBinding::getBufferCount void   )  const [virtual]
 

Definition at line 501 of file OgreHardwareVertexBuffer.h.

virtual unsigned short Ogre::VertexBufferBinding::getLastBoundIndex void   )  const [virtual]
 

Gets the last bound index.

virtual unsigned short Ogre::VertexBufferBinding::getNextIndex void   )  const [virtual]
 

Gets the highest index which has already been set, plus 1.

Remarks:
This is to assist in binding the vertex buffers such that there are not gaps in the list.

Definition at line 508 of file OgreHardwareVertexBuffer.h.

virtual bool Ogre::VertexBufferBinding::hasGaps void   )  const [virtual]
 

Check whether any gaps in the bindings.

virtual bool Ogre::VertexBufferBinding::isBufferBound unsigned short  index  )  const [virtual]
 

Gets whether a buffer is bound to the given source index.

void Ogre::AllocatedObject< GeometryAllocPolicy >::operator delete void *  ptr,
const char *  ,
int  ,
const char * 
[inherited]
 

Definition at line 101 of file OgreMemoryAllocatedObject.h.

void Ogre::AllocatedObject< GeometryAllocPolicy >::operator delete void *  ptr,
void * 
[inherited]
 

Definition at line 95 of file OgreMemoryAllocatedObject.h.

void Ogre::AllocatedObject< GeometryAllocPolicy >::operator delete void *  ptr  )  [inherited]
 

Definition at line 89 of file OgreMemoryAllocatedObject.h.

void Ogre::AllocatedObject< GeometryAllocPolicy >::operator delete[] void *  ptr,
const char *  ,
int  ,
const char * 
[inherited]
 

Definition at line 112 of file OgreMemoryAllocatedObject.h.

void Ogre::AllocatedObject< GeometryAllocPolicy >::operator delete[] void *  ptr  )  [inherited]
 

Definition at line 106 of file OgreMemoryAllocatedObject.h.

void* Ogre::AllocatedObject< GeometryAllocPolicy >::operator new size_t  sz,
void *  ptr
[inherited]
 

placement operator new

Definition at line 73 of file OgreMemoryAllocatedObject.h.

void* Ogre::AllocatedObject< GeometryAllocPolicy >::operator new size_t  sz  )  [inherited]
 

Definition at line 67 of file OgreMemoryAllocatedObject.h.

void* Ogre::AllocatedObject< GeometryAllocPolicy >::operator new size_t  sz,
const char *  file,
int  line,
const char *  func
[inherited]
 

operator new, with debug line info

Definition at line 62 of file OgreMemoryAllocatedObject.h.

void* Ogre::AllocatedObject< GeometryAllocPolicy >::operator new[] size_t  sz  )  [inherited]
 

Definition at line 84 of file OgreMemoryAllocatedObject.h.

void* Ogre::AllocatedObject< GeometryAllocPolicy >::operator new[] size_t  sz,
const char *  file,
int  line,
const char *  func
[inherited]
 

array operator new, with debug line info

Definition at line 79 of file OgreMemoryAllocatedObject.h.

virtual void Ogre::VertexBufferBinding::setBinding unsigned short  index,
const HardwareVertexBufferSharedPtr buffer
[virtual]
 

Set a binding, associating a vertex buffer with a given index.

Remarks:
If the index is already associated with a vertex buffer, the association will be replaced. This may cause the old buffer to be destroyed if nothing else is referring to it. You should assign bindings from 0 and not leave gaps, although you can bind them in any order.

virtual void Ogre::VertexBufferBinding::unsetAllBindings void   )  [virtual]
 

Removes all the bindings.

virtual void Ogre::VertexBufferBinding::unsetBinding unsigned short  index  )  [virtual]
 

Removes an existing binding.


Member Data Documentation

VertexBufferBindingMap Ogre::VertexBufferBinding::mBindingMap [protected]
 

Definition at line 472 of file OgreHardwareVertexBuffer.h.

unsigned short Ogre::VertexBufferBinding::mHighIndex [mutable, protected]
 

Definition at line 473 of file OgreHardwareVertexBuffer.h.


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

Copyright © 2008 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sat Apr 11 13:48:22 2009