OGRE  1.12.8
Object-Oriented Graphics Rendering Engine
Ogre::GL3PlusHardwareBufferManager Class Reference

Implementation of HardwareBufferManager for OpenGL. More...

#include <OgreGL3PlusHardwareBufferManager.h>

+ Inheritance diagram for Ogre::GL3PlusHardwareBufferManager:

Public Member Functions

 GL3PlusHardwareBufferManager ()
 
 ~GL3PlusHardwareBufferManager ()
 
void * allocateScratch (uint32 size)
 Allocator method to allow us to use a pool of memory as a scratch area for hardware buffers. 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=HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE, bool useShadowBuffer=false, const String &name="")
 Create a shader storage buffer. More...
 
HardwareUniformBufferSharedPtr createUniformBuffer (size_t sizeBytes, HardwareBuffer::Usage usage=HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE, bool useShadowBuffer=false, 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...
 
void deallocateScratch (void *ptr)
 
size_t getGLMapBufferThreshold () const
 Threshold after which glMapBuffer is used and not glBufferSubData. More...
 
size_t getShaderStorageBufferCount ()
 
GL3PlusStateCacheManagergetStateCacheManager ()
 
size_t getUniformBufferCount ()
 
void notifyContextDestroyed (GLContext *context)
 
void setGLMapBufferThreshold (const size_t value)
 
- Public Member Functions inherited from Ogre::HardwareBufferManager
 HardwareBufferManager ()
 
 ~HardwareBufferManager ()
 
- Public Member Functions inherited from Ogre::HardwareBufferManagerBase
 HardwareBufferManagerBase ()
 
virtual ~HardwareBufferManagerBase ()
 
void _forceReleaseBufferCopies (const HardwareVertexBufferSharedPtr &sourceBuffer)
 Internal method that forces the release of copies of a given buffer. More...
 
void _forceReleaseBufferCopies (HardwareVertexBuffer *sourceBuffer)
 Internal method that forces the release of copies of a given buffer. More...
 
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...
 
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...
 
HardwareVertexBufferSharedPtr allocateVertexBufferCopy (const HardwareVertexBufferSharedPtr &sourceBuffer, BufferLicenseType licenseType, HardwareBufferLicensee *licensee, bool copyData=false)
 Allocates a copy of a given vertex buffer. More...
 
VertexBufferBindingcreateVertexBufferBinding (void)
 Creates a new VertexBufferBinding. More...
 
VertexDeclarationcreateVertexDeclaration (void)
 Creates a new vertex declaration. More...
 
void destroyVertexBufferBinding (VertexBufferBinding *binding)
 Destroys a VertexBufferBinding. More...
 
void destroyVertexDeclaration (VertexDeclaration *decl)
 Destroys a vertex declaration. More...
 
virtual void registerVertexBufferSourceAndCopy (const HardwareVertexBufferSharedPtr &sourceBuffer, const HardwareVertexBufferSharedPtr &copy)
 Registers a vertex buffer as a copy of another. More...
 
void releaseVertexBufferCopy (const HardwareVertexBufferSharedPtr &bufferCopy)
 Manually release a vertex buffer copy for others to subsequently use. More...
 
void touchVertexBufferCopy (const HardwareVertexBufferSharedPtr &bufferCopy)
 Tell engine that the vertex buffer copy intent to reuse. More...
 
- Public Member Functions inherited from Ogre::Singleton< HardwareBufferManager >
 Singleton (void)
 
 ~Singleton (void)
 

Static Public Member Functions

static GLenum getGLType (VertexElementType type)
 Utility function to get the correct GL type based on VET's. More...
 
- Static Public Member Functions inherited from Ogre::HardwareBufferManager
static HardwareBufferManagergetSingleton (void)
 Get the singleton instance. More...
 
static HardwareBufferManagergetSingletonPtr (void)
 Get the singleton instance. More...
 
- Static Public Member Functions inherited from Ogre::Singleton< HardwareBufferManager >
static HardwareBufferManagergetSingleton (void)
 Get the singleton instance. More...
 
static HardwareBufferManagergetSingletonPtr (void)
 Get the singleton instance. More...
 

Additional Inherited Members

- Public Types inherited from Ogre::HardwareBufferManagerBase
enum  BufferLicenseType { BLT_MANUAL_RELEASE, BLT_AUTOMATIC_RELEASE }
 

Detailed Description

Implementation of HardwareBufferManager for OpenGL.

Constructor & Destructor Documentation

◆ GL3PlusHardwareBufferManager()

Ogre::GL3PlusHardwareBufferManager::GL3PlusHardwareBufferManager ( )

◆ ~GL3PlusHardwareBufferManager()

Ogre::GL3PlusHardwareBufferManager::~GL3PlusHardwareBufferManager ( )

Member Function Documentation

◆ createVertexBuffer()

HardwareVertexBufferSharedPtr Ogre::GL3PlusHardwareBufferManager::createVertexBuffer ( size_t  vertexSize,
size_t  numVerts,
HardwareBuffer::Usage  usage,
bool  useShadowBuffer = false 
)
virtual

Creates a vertex buffer.

Implements Ogre::HardwareBufferManagerBase.

◆ createIndexBuffer()

HardwareIndexBufferSharedPtr Ogre::GL3PlusHardwareBufferManager::createIndexBuffer ( HardwareIndexBuffer::IndexType  itype,
size_t  numIndexes,
HardwareBuffer::Usage  usage,
bool  useShadowBuffer = false 
)
virtual

Create a hardware vertex buffer.

Implements Ogre::HardwareBufferManagerBase.

◆ createUniformBuffer()

HardwareUniformBufferSharedPtr Ogre::GL3PlusHardwareBufferManager::createUniformBuffer ( size_t  sizeBytes,
HardwareBuffer::Usage  usage = HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE,
bool  useShadowBuffer = false,
const String name = "" 
)
virtual

Create a uniform buffer.

Reimplemented from Ogre::HardwareBufferManagerBase.

◆ createShaderStorageBuffer()

HardwareUniformBufferSharedPtr Ogre::GL3PlusHardwareBufferManager::createShaderStorageBuffer ( size_t  sizeBytes,
HardwareBuffer::Usage  usage = HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE,
bool  useShadowBuffer = false,
const String name = "" 
)

Create a shader storage buffer.

◆ createCounterBuffer()

HardwareCounterBufferSharedPtr Ogre::GL3PlusHardwareBufferManager::createCounterBuffer ( size_t  sizeBytes,
HardwareBuffer::Usage  usage,
bool  useShadowBuffer,
const String name = "" 
)
virtual

Create a counter buffer.

Reimplemented from Ogre::HardwareBufferManagerBase.

◆ createRenderToVertexBuffer()

RenderToVertexBufferSharedPtr Ogre::GL3PlusHardwareBufferManager::createRenderToVertexBuffer ( )
virtual

Create a render to vertex buffer.

Reimplemented from Ogre::HardwareBufferManagerBase.

◆ getUniformBufferCount()

size_t Ogre::GL3PlusHardwareBufferManager::getUniformBufferCount ( )
inline

◆ getShaderStorageBufferCount()

size_t Ogre::GL3PlusHardwareBufferManager::getShaderStorageBufferCount ( )
inline

◆ getGLType()

static GLenum Ogre::GL3PlusHardwareBufferManager::getGLType ( VertexElementType  type)
static

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

◆ getStateCacheManager()

GL3PlusStateCacheManager* Ogre::GL3PlusHardwareBufferManager::getStateCacheManager ( )

◆ notifyContextDestroyed()

void Ogre::GL3PlusHardwareBufferManager::notifyContextDestroyed ( GLContext context)

◆ allocateScratch()

void* Ogre::GL3PlusHardwareBufferManager::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.

◆ deallocateScratch()

void Ogre::GL3PlusHardwareBufferManager::deallocateScratch ( void *  ptr)
See also
allocateScratch

◆ getGLMapBufferThreshold()

size_t Ogre::GL3PlusHardwareBufferManager::getGLMapBufferThreshold ( ) const

Threshold after which glMapBuffer is used and not glBufferSubData.

◆ setGLMapBufferThreshold()

void Ogre::GL3PlusHardwareBufferManager::setGLMapBufferThreshold ( const size_t  value)

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