OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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:
+ Collaboration diagram for Ogre::VertexBufferBinding:

Public Types

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

Public Member Functions

 VertexBufferBinding ()
 Constructor, should not be called direct, use HardwareBufferManager::createVertexBufferBinding. More...
 
virtual ~VertexBufferBinding ()
 
virtual void closeGaps (BindingIndexMap &bindingIndexMap)
 Remove any gaps in the bindings. More...
 
virtual const
VertexBufferBindingMap
getBindings (void) const
 Gets a read-only version of the buffer bindings. More...
 
virtual const
HardwareVertexBufferSharedPtr
getBuffer (unsigned short index) const
 Gets the buffer bound to the given source index. More...
 
virtual size_t getBufferCount (void) const
 
virtual bool getHasInstanceData () const
 Returns true if this binding has an element that contains instance data. More...
 
virtual unsigned short getLastBoundIndex (void) const
 Gets the last bound index. More...
 
virtual unsigned short getNextIndex (void) const
 Gets the highest index which has already been set, plus 1. More...
 
virtual bool hasGaps (void) const
 Check whether any gaps in the bindings. More...
 
virtual bool isBufferBound (unsigned short index) const
 Gets whether a buffer is bound to the given source index. More...
 
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 *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
virtual void setBinding (unsigned short index, const HardwareVertexBufferSharedPtr &buffer)
 Set a binding, associating a vertex buffer with a given index. More...
 
virtual void unsetAllBindings (void)
 Removes all the bindings. More...
 
virtual void unsetBinding (unsigned short index)
 Removes an existing binding. More...
 

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 521 of file OgreHardwareVertexBuffer.h.

Member Typedef Documentation

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

Definition at line 525 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

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
bindingIndexMapTo 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
inlinevirtual

Definition at line 556 of file OgreHardwareVertexBuffer.h.

virtual bool Ogre::VertexBufferBinding::getHasInstanceData ( ) const
virtual

Returns true if this binding has an element that contains instance data.

virtual unsigned short Ogre::VertexBufferBinding::getLastBoundIndex ( void  ) const
virtual

Gets the last bound index.

virtual unsigned short Ogre::VertexBufferBinding::getNextIndex ( void  ) const
inlinevirtual

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 563 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.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

Definition at line 91 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 527 of file OgreHardwareVertexBuffer.h.

unsigned short Ogre::VertexBufferBinding::mHighIndex
mutableprotected

Definition at line 528 of file OgreHardwareVertexBuffer.h.


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