OGRE  1.7
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Ogre::GLESHardwareBufferManager Class Reference

GLESHardwareBufferManagerBase as a Singleton. More...

#include <OgreGLESHardwareBufferManager.h>

+ Inheritance diagram for Ogre::GLESHardwareBufferManager:
+ Collaboration diagram for Ogre::GLESHardwareBufferManager:

Public Types

enum  BufferLicenseType { BLT_MANUAL_RELEASE, BLT_AUTOMATIC_RELEASE }
 

Public Member Functions

 GLESHardwareBufferManager ()
 
 ~GLESHardwareBufferManager ()
 
virtual void _forceReleaseBufferCopies (const HardwareVertexBufferSharedPtr &sourceBuffer)
 
virtual void _forceReleaseBufferCopies (HardwareVertexBuffer *sourceBuffer)
 
virtual void _freeUnusedBufferCopies (void)
 
void _notifyIndexBufferDestroyed (HardwareIndexBuffer *buf)
 
void _notifyVertexBufferDestroyed (HardwareVertexBuffer *buf)
 
virtual void _releaseBufferCopies (bool forceFreeUnused=false)
 
void * allocateScratch (uint32 size)
 Allocator method to allow us to use a pool of memory as a scratch area for hardware buffers. More...
 
virtual
HardwareVertexBufferSharedPtr 
allocateVertexBufferCopy (const HardwareVertexBufferSharedPtr &sourceBuffer, BufferLicenseType licenseType, HardwareBufferLicensee *licensee, bool copyData=false)
 
HardwareIndexBufferSharedPtr createIndexBuffer (HardwareIndexBuffer::IndexType itype, size_t numIndexes, HardwareBuffer::Usage usage, bool useShadowBuffer=false)
 
RenderToVertexBufferSharedPtr createRenderToVertexBuffer ()
 
HardwareVertexBufferSharedPtr createVertexBuffer (size_t vertexSize, size_t numVerts, HardwareBuffer::Usage usage, bool useShadowBuffer=false)
 
virtual VertexBufferBindingcreateVertexBufferBinding (void)
 
virtual VertexDeclarationcreateVertexDeclaration (void)
 
void deallocateScratch (void *ptr)
 
virtual void destroyVertexBufferBinding (VertexBufferBinding *binding)
 
virtual void destroyVertexDeclaration (VertexDeclaration *decl)
 
const size_t getGLMapBufferThreshold () const
 Threshold after which glMapBuffer is used and not glBufferSubData. 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 registerVertexBufferSourceAndCopy (const HardwareVertexBufferSharedPtr &sourceBuffer, const HardwareVertexBufferSharedPtr &copy)
 
virtual void releaseVertexBufferCopy (const HardwareVertexBufferSharedPtr &bufferCopy)
 
void setGLMapBufferThreshold (const size_t value)
 
virtual void touchVertexBufferCopy (const HardwareVertexBufferSharedPtr &bufferCopy)
 

Static Public Member Functions

static GLenum getGLType (unsigned int type)
 Utility function to get the correct GL type based on VET's. More...
 
static GLenum getGLUsage (unsigned int usage)
 Utility function to get the correct GL usage based on HBU's. More...
 
static HardwareBufferManagergetSingleton (void)
 Override standard Singleton retrieval. More...
 
static HardwareBufferManagergetSingletonPtr (void)
 Override standard Singleton retrieval. More...
 

Protected Types

typedef multimap
< HardwareVertexBuffer
*, HardwareVertexBufferSharedPtr >
::type 
FreeTemporaryVertexBufferMap
 Map from original buffer to temporary buffers. More...
 
typedef set
< HardwareIndexBuffer * >
::type 
IndexBufferList
 
typedef map
< HardwareVertexBuffer
*, VertexBufferLicense >::type 
TemporaryVertexBufferLicenseMap
 Map from temporary buffer to details of a license. More...
 
typedef set
< VertexBufferBinding * >
::type 
VertexBufferBindingList
 
typedef set
< HardwareVertexBuffer * >
::type 
VertexBufferList
 WARNING: The following two members should place before all other members. More...
 
typedef set< VertexDeclaration * >
::type 
VertexDeclarationList
 

Protected Member Functions

virtual VertexBufferBindingcreateVertexBufferBindingImpl (void)
 Internal method for creates a new VertexBufferBinding, may be overridden by certain rendering APIs. More...
 
virtual VertexDeclarationcreateVertexDeclarationImpl (void)
 Internal method for creates a new vertex declaration, may be overridden by certain rendering APIs. More...
 
virtual void destroyAllBindings (void)
 Internal method for destroys all vertex buffer bindings. More...
 
virtual void destroyAllDeclarations (void)
 Internal method for destroys all vertex declarations. More...
 
virtual void destroyVertexBufferBindingImpl (VertexBufferBinding *binding)
 Internal method for destroys a VertexBufferBinding, may be overridden by certain rendering APIs. More...
 
virtual void destroyVertexDeclarationImpl (VertexDeclaration *decl)
 Internal method for destroys a vertex declaration, may be overridden by certain rendering APIs. More...
 
virtual
HardwareVertexBufferSharedPtr 
makeBufferCopy (const HardwareVertexBufferSharedPtr &source, HardwareBuffer::Usage usage, bool useShadowBuffer)
 Creates a new buffer as a copy of the source, does not copy data. More...
 

Protected Attributes

FreeTemporaryVertexBufferMap mFreeTempVertexBufferMap
 Map of current available temp buffers. More...
 
HardwareBufferManagerBasemImpl
 
IndexBufferList mIndexBuffers
 
TemporaryVertexBufferLicenseMap mTempVertexBufferLicenses
 Map of currently licensed temporary buffers. More...
 
size_t mUnderUsedFrameCount
 Number of frames elapsed since temporary buffers utilization was above half the available. More...
 
VertexBufferBindingList mVertexBufferBindings
 
VertexBufferList mVertexBuffers
 
VertexDeclarationList mVertexDeclarations
 

Static Protected Attributes

static const size_t EXPIRED_DELAY_FRAME_THRESHOLD
 Frame delay for BLT_AUTOMATIC_RELEASE temporary buffers. More...
 
static HardwareBufferManagerms_Singleton
 
static const size_t UNDER_USED_FRAME_THRESHOLD
 Number of frames to wait before free unused temporary buffers. More...
 

Detailed Description

Member Typedef Documentation

Map from original buffer to temporary buffers.

Definition at line 187 of file OgreHardwareBufferManager.h.

Definition at line 120 of file OgreHardwareBufferManager.h.

Map from temporary buffer to details of a license.

Definition at line 191 of file OgreHardwareBufferManager.h.

WARNING: The following two members should place before all other members.

Members destruct order is very important here, because destructing other members will cause notify back to this class, and then will access to this two members.

Definition at line 119 of file OgreHardwareBufferManager.h.

Member Enumeration Documentation

Enumerator
BLT_MANUAL_RELEASE 

Licensee will only release buffer when it says so.

BLT_AUTOMATIC_RELEASE 

Licensee can have license revoked.

Definition at line 153 of file OgreHardwareBufferManager.h.

Constructor & Destructor Documentation

Ogre::GLESHardwareBufferManager::GLESHardwareBufferManager ( )
inline

Definition at line 89 of file OgreGLESHardwareBufferManager.h.

Ogre::GLESHardwareBufferManager::~GLESHardwareBufferManager ( )
inline

Definition at line 94 of file OgreGLESHardwareBufferManager.h.

References OGRE_DELETE.

Member Function Documentation

virtual void Ogre::HardwareBufferManager::_forceReleaseBufferCopies ( const HardwareVertexBufferSharedPtr sourceBuffer)
inlinevirtualinherited
virtual void Ogre::HardwareBufferManager::_forceReleaseBufferCopies ( HardwareVertexBuffer sourceBuffer)
inlinevirtualinherited
virtual void Ogre::HardwareBufferManager::_freeUnusedBufferCopies ( void  )
inlinevirtualinherited
void Ogre::HardwareBufferManager::_notifyIndexBufferDestroyed ( HardwareIndexBuffer buf)
inlineinherited
void Ogre::HardwareBufferManager::_notifyVertexBufferDestroyed ( HardwareVertexBuffer buf)
inlineinherited
virtual void Ogre::HardwareBufferManager::_releaseBufferCopies ( bool  forceFreeUnused = false)
inlinevirtualinherited
void* Ogre::GLESHardwareBufferManager::allocateScratch ( uint32  size)
inline

Allocator method to allow us to use a pool of memory as a scratch area for hardware buffers.

This is because glMapBuffer is incredibly inefficient, seemingly no matter what options we give it. So for the period of lock/unlock, we will instead allocate a section of a local memory pool, and use glBufferSubDataARB / glGetBufferSubDataARB instead.

Definition at line 116 of file OgreGLESHardwareBufferManager.h.

virtual HardwareVertexBufferSharedPtr Ogre::HardwareBufferManager::allocateVertexBufferCopy ( const HardwareVertexBufferSharedPtr sourceBuffer,
BufferLicenseType  licenseType,
HardwareBufferLicensee licensee,
bool  copyData = false 
)
inlinevirtualinherited
HardwareIndexBufferSharedPtr Ogre::HardwareBufferManager::createIndexBuffer ( HardwareIndexBuffer::IndexType  itype,
size_t  numIndexes,
HardwareBuffer::Usage  usage,
bool  useShadowBuffer = false 
)
inlinevirtualinherited
RenderToVertexBufferSharedPtr Ogre::HardwareBufferManager::createRenderToVertexBuffer ( void  )
inlinevirtualinherited
HardwareVertexBufferSharedPtr Ogre::HardwareBufferManager::createVertexBuffer ( size_t  vertexSize,
size_t  numVerts,
HardwareBuffer::Usage  usage,
bool  useShadowBuffer = false 
)
inlinevirtualinherited
virtual VertexBufferBinding* Ogre::HardwareBufferManager::createVertexBufferBinding ( void  )
inlinevirtualinherited
virtual VertexBufferBinding* Ogre::HardwareBufferManagerBase::createVertexBufferBindingImpl ( void  )
protectedvirtualinherited

Internal method for creates a new VertexBufferBinding, may be overridden by certain rendering APIs.

virtual VertexDeclaration* Ogre::HardwareBufferManager::createVertexDeclaration ( void  )
inlinevirtualinherited
virtual VertexDeclaration* Ogre::HardwareBufferManagerBase::createVertexDeclarationImpl ( void  )
protectedvirtualinherited

Internal method for creates a new vertex declaration, may be overridden by certain rendering APIs.

Reimplemented in Ogre::D3D10HardwareBufferManagerBase, Ogre::D3D11HardwareBufferManagerBase, and Ogre::D3D9HardwareBufferManagerBase.

void Ogre::GLESHardwareBufferManager::deallocateScratch ( void *  ptr)
inline
See also
allocateScratch

Definition at line 122 of file OgreGLESHardwareBufferManager.h.

virtual void Ogre::HardwareBufferManagerBase::destroyAllBindings ( void  )
protectedvirtualinherited

Internal method for destroys all vertex buffer bindings.

virtual void Ogre::HardwareBufferManagerBase::destroyAllDeclarations ( void  )
protectedvirtualinherited

Internal method for destroys all vertex declarations.

virtual void Ogre::HardwareBufferManager::destroyVertexBufferBinding ( VertexBufferBinding binding)
inlinevirtualinherited
virtual void Ogre::HardwareBufferManagerBase::destroyVertexBufferBindingImpl ( VertexBufferBinding binding)
protectedvirtualinherited

Internal method for destroys a VertexBufferBinding, may be overridden by certain rendering APIs.

virtual void Ogre::HardwareBufferManager::destroyVertexDeclaration ( VertexDeclaration decl)
inlinevirtualinherited
virtual void Ogre::HardwareBufferManagerBase::destroyVertexDeclarationImpl ( VertexDeclaration decl)
protectedvirtualinherited

Internal method for destroys a vertex declaration, may be overridden by certain rendering APIs.

Reimplemented in Ogre::D3D10HardwareBufferManagerBase, Ogre::D3D11HardwareBufferManagerBase, and Ogre::D3D9HardwareBufferManagerBase.

const size_t Ogre::GLESHardwareBufferManager::getGLMapBufferThreshold ( ) const
inline

Threshold after which glMapBuffer is used and not glBufferSubData.

Definition at line 128 of file OgreGLESHardwareBufferManager.h.

static GLenum Ogre::GLESHardwareBufferManager::getGLType ( unsigned int  type)
inlinestatic

Utility function to get the correct GL type based on VET's.

Definition at line 106 of file OgreGLESHardwareBufferManager.h.

References Ogre::GLESHardwareBufferManagerBase::getGLType().

static GLenum Ogre::GLESHardwareBufferManager::getGLUsage ( unsigned int  usage)
inlinestatic

Utility function to get the correct GL usage based on HBU's.

Definition at line 102 of file OgreGLESHardwareBufferManager.h.

References Ogre::GLESHardwareBufferManagerBase::getGLUsage().

static HardwareBufferManager& Ogre::HardwareBufferManager::getSingleton ( void  )
staticinherited

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.
static HardwareBufferManager* Ogre::HardwareBufferManager::getSingletonPtr ( void  )
staticinherited

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.
virtual HardwareVertexBufferSharedPtr Ogre::HardwareBufferManagerBase::makeBufferCopy ( const HardwareVertexBufferSharedPtr source,
HardwareBuffer::Usage  usage,
bool  useShadowBuffer 
)
protectedvirtualinherited

Creates a new buffer as a copy of the source, does not copy data.

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

Definition at line 95 of file OgreMemoryAllocatedObject.h.

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

Definition at line 101 of file OgreMemoryAllocatedObject.h.

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

Definition at line 107 of file OgreMemoryAllocatedObject.h.

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

Definition at line 112 of file OgreMemoryAllocatedObject.h.

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

Definition at line 118 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 67 of file OgreMemoryAllocatedObject.h.

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

Definition at line 72 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 78 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 85 of file OgreMemoryAllocatedObject.h.

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

Definition at line 90 of file OgreMemoryAllocatedObject.h.

virtual void Ogre::HardwareBufferManager::registerVertexBufferSourceAndCopy ( const HardwareVertexBufferSharedPtr sourceBuffer,
const HardwareVertexBufferSharedPtr copy 
)
inlinevirtualinherited
virtual void Ogre::HardwareBufferManager::releaseVertexBufferCopy ( const HardwareVertexBufferSharedPtr bufferCopy)
inlinevirtualinherited
void Ogre::GLESHardwareBufferManager::setGLMapBufferThreshold ( const size_t  value)
inline

Definition at line 132 of file OgreGLESHardwareBufferManager.h.

virtual void Ogre::HardwareBufferManager::touchVertexBufferCopy ( const HardwareVertexBufferSharedPtr bufferCopy)
inlinevirtualinherited

Member Data Documentation

const size_t Ogre::HardwareBufferManagerBase::EXPIRED_DELAY_FRAME_THRESHOLD
staticprotectedinherited

Frame delay for BLT_AUTOMATIC_RELEASE temporary buffers.

Definition at line 199 of file OgreHardwareBufferManager.h.

FreeTemporaryVertexBufferMap Ogre::HardwareBufferManagerBase::mFreeTempVertexBufferMap
protectedinherited

Map of current available temp buffers.

Definition at line 189 of file OgreHardwareBufferManager.h.

IndexBufferList Ogre::HardwareBufferManagerBase::mIndexBuffers
protectedinherited

Definition at line 122 of file OgreHardwareBufferManager.h.

HardwareBufferManager * Ogre::Singleton< HardwareBufferManager >::ms_Singleton
staticprotectedinherited

Definition at line 75 of file OgreSingleton.h.

TemporaryVertexBufferLicenseMap Ogre::HardwareBufferManagerBase::mTempVertexBufferLicenses
protectedinherited

Map of currently licensed temporary buffers.

Definition at line 193 of file OgreHardwareBufferManager.h.

size_t Ogre::HardwareBufferManagerBase::mUnderUsedFrameCount
protectedinherited

Number of frames elapsed since temporary buffers utilization was above half the available.

Definition at line 195 of file OgreHardwareBufferManager.h.

VertexBufferBindingList Ogre::HardwareBufferManagerBase::mVertexBufferBindings
protectedinherited

Definition at line 128 of file OgreHardwareBufferManager.h.

VertexBufferList Ogre::HardwareBufferManagerBase::mVertexBuffers
protectedinherited

Definition at line 121 of file OgreHardwareBufferManager.h.

VertexDeclarationList Ogre::HardwareBufferManagerBase::mVertexDeclarations
protectedinherited

Definition at line 127 of file OgreHardwareBufferManager.h.

const size_t Ogre::HardwareBufferManagerBase::UNDER_USED_FRAME_THRESHOLD
staticprotectedinherited

Number of frames to wait before free unused temporary buffers.

Definition at line 197 of file OgreHardwareBufferManager.h.


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