OGRE
1.10.12
Object-Oriented Graphics Rendering Engine
|
Implementation of HardwareBufferManager for OpenGL. More...
#include <OgreGL3PlusHardwareBufferManager.h>
Public Types | |
enum | BufferLicenseType { BLT_MANUAL_RELEASE, BLT_AUTOMATIC_RELEASE } |
Public Member Functions | |
GL3PlusHardwareBufferManagerBase () | |
~GL3PlusHardwareBufferManagerBase () | |
virtual void | _forceReleaseBufferCopies (const HardwareVertexBufferSharedPtr &sourceBuffer) |
Internal method that forces the release of copies of a given buffer. More... | |
virtual void | _forceReleaseBufferCopies (HardwareVertexBuffer *sourceBuffer) |
Internal method that forces the release of copies of a given buffer. More... | |
virtual void | _freeUnusedBufferCopies (void) |
Free all unused vertex buffer copies. More... | |
void | _notifyCounterBufferDestroyed (HardwareCounterBuffer *buf) |
Notification that at hardware counter buffer has been destroyed. More... | |
void | _notifyIndexBufferDestroyed (HardwareIndexBuffer *buf) |
Notification that a hardware index buffer has been destroyed. More... | |
void | _notifyUniformBufferDestroyed (HardwareUniformBuffer *buf) |
Notification that at hardware uniform buffer has been destroyed. More... | |
void | _notifyVertexBufferDestroyed (HardwareVertexBuffer *buf) |
Notification that a hardware vertex buffer has been destroyed. More... | |
virtual void | _releaseBufferCopies (bool forceFreeUnused=false) |
Internal method for releasing all temporary buffers which have been allocated using BLT_AUTOMATIC_RELEASE; is called by OGRE. More... | |
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) |
Allocates a copy of a given vertex buffer. More... | |
HardwareCounterBufferSharedPtr | createCounterBuffer (size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String &name="") |
Create a counter buffer. More... | |
HardwareIndexBufferSharedPtr | createIndexBuffer (HardwareIndexBuffer::IndexType itype, size_t numIndexes, HardwareBuffer::Usage usage, bool useShadowBuffer=false) |
Create a hardware vertex buffer. More... | |
RenderToVertexBufferSharedPtr | createRenderToVertexBuffer () |
Create a render to vertex buffer. More... | |
HardwareUniformBufferSharedPtr | createShaderStorageBuffer (size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String &name="") |
Create a shader storage buffer. More... | |
HardwareUniformBufferSharedPtr | createUniformBuffer (size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String &name="") |
Create a uniform buffer. More... | |
HardwareVertexBufferSharedPtr | createVertexBuffer (size_t vertexSize, size_t numVerts, HardwareBuffer::Usage usage, bool useShadowBuffer=false) |
Creates a vertex buffer. More... | |
virtual VertexBufferBinding * | createVertexBufferBinding (void) |
Creates a new VertexBufferBinding. More... | |
virtual VertexDeclaration * | createVertexDeclaration (void) |
Creates a new vertex declaration. More... | |
void | deallocateScratch (void *ptr) |
virtual void | destroyVertexBufferBinding (VertexBufferBinding *binding) |
Destroys a VertexBufferBinding. More... | |
virtual void | destroyVertexDeclaration (VertexDeclaration *decl) |
Destroys a vertex declaration. More... | |
size_t | getGLMapBufferThreshold () const |
Threshold after which glMapBuffer is used and not glBufferSubData. More... | |
GL3PlusStateCacheManager * | getStateCacheManager () |
void | notifyContextDestroyed (GLContext *context) |
virtual void | registerVertexBufferSourceAndCopy (const HardwareVertexBufferSharedPtr &sourceBuffer, const HardwareVertexBufferSharedPtr ©) |
Registers a vertex buffer as a copy of another. More... | |
virtual void | releaseVertexBufferCopy (const HardwareVertexBufferSharedPtr &bufferCopy) |
Manually release a vertex buffer copy for others to subsequently use. More... | |
void | setGLMapBufferThreshold (const size_t value) |
virtual void | touchVertexBufferCopy (const HardwareVertexBufferSharedPtr &bufferCopy) |
Tell engine that the vertex buffer copy intent to reuse. More... | |
Static Public Member Functions | |
static GLenum | getGLType (VertexElementType type) |
Utility function to get the correct GL type based on VET's. More... | |
Implementation of HardwareBufferManager for OpenGL.
|
inherited |
Ogre::GL3PlusHardwareBufferManagerBase::GL3PlusHardwareBufferManagerBase | ( | ) |
Ogre::GL3PlusHardwareBufferManagerBase::~GL3PlusHardwareBufferManagerBase | ( | ) |
|
virtual |
Creates a vertex buffer.
Implements Ogre::HardwareBufferManagerBase.
|
virtual |
Create a hardware vertex buffer.
Implements Ogre::HardwareBufferManagerBase.
|
virtual |
Create a uniform buffer.
Implements Ogre::HardwareBufferManagerBase.
HardwareUniformBufferSharedPtr Ogre::GL3PlusHardwareBufferManagerBase::createShaderStorageBuffer | ( | size_t | sizeBytes, |
HardwareBuffer::Usage | usage, | ||
bool | useShadowBuffer, | ||
const String & | name = "" |
||
) |
Create a shader storage buffer.
|
virtual |
Create a counter buffer.
Implements Ogre::HardwareBufferManagerBase.
|
virtual |
Create a render to vertex buffer.
Implements Ogre::HardwareBufferManagerBase.
|
static |
Utility function to get the correct GL type based on VET's.
Referenced by Ogre::GL3PlusHardwareBufferManager::getGLType().
GL3PlusStateCacheManager* Ogre::GL3PlusHardwareBufferManagerBase::getStateCacheManager | ( | ) |
void Ogre::GL3PlusHardwareBufferManagerBase::notifyContextDestroyed | ( | GLContext * | context | ) |
void* Ogre::GL3PlusHardwareBufferManagerBase::allocateScratch | ( | uint32 | size | ) |
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.
void Ogre::GL3PlusHardwareBufferManagerBase::deallocateScratch | ( | void * | ptr | ) |
size_t Ogre::GL3PlusHardwareBufferManagerBase::getGLMapBufferThreshold | ( | ) | const |
Threshold after which glMapBuffer is used and not glBufferSubData.
void Ogre::GL3PlusHardwareBufferManagerBase::setGLMapBufferThreshold | ( | const size_t | value | ) |
|
virtualinherited |
Creates a new vertex declaration.
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::createVertexDeclaration().
|
virtualinherited |
Destroys a vertex declaration.
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::destroyVertexDeclaration().
|
virtualinherited |
Creates a new VertexBufferBinding.
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::createVertexBufferBinding().
|
virtualinherited |
Destroys a VertexBufferBinding.
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::destroyVertexBufferBinding().
|
virtualinherited |
Registers a vertex buffer as a copy of another.
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::registerVertexBufferSourceAndCopy().
|
virtualinherited |
Allocates a copy of a given vertex buffer.
sourceBuffer | The source buffer to use as a copy. |
licenseType | The type of license required on this buffer - automatic release causes this class to release licenses every frame so that they can be reallocated anew. |
licensee | Pointer back to the class requesting the copy, which must implement HardwareBufferLicense in order to be notified when the license expires. |
copyData | If true , the current data is copied as well as the structure of the buffer/ |
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::allocateVertexBufferCopy().
|
virtualinherited |
Manually release a vertex buffer copy for others to subsequently use.
bufferCopy | The buffer copy. The caller is expected to delete or at least no longer use this reference, since another user may well begin to modify the contents of the buffer. |
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::releaseVertexBufferCopy().
|
virtualinherited |
Tell engine that the vertex buffer copy intent to reuse.
bufferCopy | The buffer copy. The caller is expected to keep this buffer copy for use. |
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::touchVertexBufferCopy().
|
virtualinherited |
Free all unused vertex buffer copies.
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::_freeUnusedBufferCopies().
|
virtualinherited |
Internal method for releasing all temporary buffers which have been allocated using BLT_AUTOMATIC_RELEASE; is called by OGRE.
forceFreeUnused | If true , free all unused temporary buffers. If false , auto detect and free all unused temporary buffers based on temporary buffers utilization. |
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::_releaseBufferCopies().
|
virtualinherited |
Internal method that forces the release of copies of a given buffer.
sourceBuffer | The source buffer as a shared pointer. Any buffer copies created from the source buffer are deleted. |
Reimplemented in Ogre::HardwareBufferManager.
Referenced by Ogre::HardwareBufferManager::_forceReleaseBufferCopies().
|
virtualinherited |
Internal method that forces the release of copies of a given buffer.
sourceBuffer | The source buffer as a pointer. Any buffer copies created from the source buffer are deleted. |
Reimplemented in Ogre::HardwareBufferManager.
|
inherited |
Notification that a hardware vertex buffer has been destroyed.
Referenced by Ogre::HardwareBufferManager::_notifyVertexBufferDestroyed().
|
inherited |
Notification that a hardware index buffer has been destroyed.
Referenced by Ogre::HardwareBufferManager::_notifyIndexBufferDestroyed().
|
inherited |
Notification that at hardware uniform buffer has been destroyed.
Referenced by Ogre::HardwareBufferManager::_notifyUniformBufferDestroyed().
|
inherited |
Notification that at hardware counter buffer has been destroyed.
Referenced by Ogre::HardwareBufferManager::_notifyConterBufferDestroyed().