![]() |
OGRE 1.12.10
Object-Oriented Graphics Rendering Engine
|
Abstract class defining common features of hardware buffers. More...
#include <OgreHardwareBuffer.h>
Public Types | |
enum | LockOptions { HBL_NORMAL , HBL_DISCARD , HBL_READ_ONLY , HBL_NO_OVERWRITE , HBL_WRITE_ONLY } |
Locking options. More... | |
typedef int | Usage |
enum | UsageEnum { HBU_STATIC = HBU_GPU_TO_CPU , HBU_DYNAMIC = HBU_CPU_ONLY , HBU_WRITE_ONLY = HBU_DETAIL_WRITE_ONLY , HBU_DISCARDABLE = 8 , HBU_STATIC_WRITE_ONLY = HBU_GPU_ONLY , HBU_DYNAMIC_WRITE_ONLY = HBU_CPU_TO_GPU , HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE = HBU_CPU_TO_GPU } |
Rather use HardwareBufferUsage. More... | |
Public Member Functions | |
HardwareBuffer (Usage usage, bool systemMemory, bool useShadowBuffer) | |
Constructor, to be called by HardwareBufferManager only. | |
virtual | ~HardwareBuffer () |
virtual void | _updateFromShadow (void) |
Updates the real buffer from the shadow buffer, if required. | |
virtual void | copyData (HardwareBuffer &srcBuffer) |
Copy all data from another buffer into this one. | |
virtual void | copyData (HardwareBuffer &srcBuffer, size_t srcOffset, size_t dstOffset, size_t length, bool discardWholeBuffer=false) |
Copy data from another buffer into this one. | |
size_t | getSizeInBytes (void) const |
Returns the size of this buffer in bytes. | |
Usage | getUsage (void) const |
Returns the Usage flags with which this buffer was created. | |
bool | hasShadowBuffer (void) const |
Returns whether this buffer has a system memory shadow for quicker reading. | |
bool | isLocked (void) const |
Returns whether or not this buffer is currently locked. | |
bool | isSystemMemory (void) const |
Returns whether this buffer is held in system memory. | |
void * | lock (LockOptions options) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
virtual void * | lock (size_t offset, size_t length, LockOptions options) |
Lock the buffer for (potentially) reading / writing. | |
virtual void | readData (size_t offset, size_t length, void *pDest)=0 |
Reads data from the buffer and places it in the memory pointed to by pDest. | |
void | suppressHardwareUpdate (bool suppress) |
Pass true to suppress hardware upload of shadow buffer changes. | |
virtual void | unlock (void) |
Releases the lock on this buffer. | |
virtual void | writeData (size_t offset, size_t length, const void *pSource, bool discardWholeBuffer=false)=0 |
Writes data to the buffer from an area of system memory; note that you must ensure that your buffer is big enough. | |
Abstract class defining common features of hardware buffers.
Rather use HardwareBufferUsage.
Enumerator | |
---|---|
HBU_STATIC | same as HBU_GPU_TO_CPU |
HBU_DYNAMIC | same as HBU_CPU_ONLY |
HBU_WRITE_ONLY | |
HBU_DISCARDABLE |
|
HBU_STATIC_WRITE_ONLY | same as HBU_GPU_ONLY |
HBU_DYNAMIC_WRITE_ONLY | same as HBU_CPU_TO_GPU |
HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE |
|
Locking options.
|
inline |
Constructor, to be called by HardwareBufferManager only.
|
inlinevirtual |
|
inlinevirtual |
Lock the buffer for (potentially) reading / writing.
offset | The byte offset from the start of the buffer to lock |
length | The size of the area to lock, in bytes |
options | Locking options |
Reimplemented in Ogre::DefaultHardwareVertexBuffer, Ogre::DefaultHardwareIndexBuffer, Ogre::DefaultHardwareUniformBuffer, Ogre::HardwarePixelBuffer, Ogre::HardwarePixelBuffer, Ogre::D3D11HardwareIndexBuffer, Ogre::D3D11HardwareUniformBuffer, and Ogre::D3D11HardwareVertexBuffer.
References OgreAssert.
Referenced by Ogre::HardwareBufferLockGuard::lock(), and Ogre::HardwareBufferLockGuard::lock().
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Releases the lock on this buffer.
Reimplemented in Ogre::DefaultHardwareVertexBuffer, Ogre::DefaultHardwareIndexBuffer, Ogre::DefaultHardwareUniformBuffer, Ogre::D3D11HardwareIndexBuffer, Ogre::D3D11HardwareUniformBuffer, and Ogre::D3D11HardwareVertexBuffer.
References OgreAssert.
Referenced by Ogre::HardwareBufferLockGuard::unlock().
|
pure virtual |
Reads data from the buffer and places it in the memory pointed to by pDest.
offset | The byte offset from the start of the buffer to read |
length | The size of the area to read, in bytes |
pDest | The area of memory in which to place the data, must be large enough to accommodate the data! |
Implemented in Ogre::DefaultHardwareVertexBuffer, Ogre::DefaultHardwareIndexBuffer, Ogre::DefaultHardwareUniformBuffer, Ogre::HardwarePixelBuffer, Ogre::D3D11HardwareBuffer, Ogre::D3D11HardwareIndexBuffer, Ogre::D3D11HardwareUniformBuffer, Ogre::D3D11HardwareVertexBuffer, Ogre::D3D9HardwareIndexBuffer, Ogre::D3D9HardwareVertexBuffer, Ogre::GLHardwareIndexBuffer, Ogre::GLHardwareVertexBuffer, Ogre::GL3PlusHardwareIndexBuffer, Ogre::GL3PlusHardwareUniformBuffer, Ogre::GL3PlusHardwareVertexBuffer, Ogre::GLES2HardwareIndexBuffer, Ogre::GLES2HardwareUniformBuffer, Ogre::GLES2HardwareVertexBuffer, Ogre::MetalHardwareIndexBuffer, and Ogre::MetalHardwareVertexBuffer.
|
pure virtual |
Writes data to the buffer from an area of system memory; note that you must ensure that your buffer is big enough.
offset | The byte offset from the start of the buffer to start writing |
length | The size of the data to write to, in bytes |
pSource | The source of the data to be written |
discardWholeBuffer | If true, this allows the driver to discard the entire buffer when writing, such that DMA stalls can be avoided; use if you can. |
Implemented in Ogre::DefaultHardwareVertexBuffer, Ogre::DefaultHardwareIndexBuffer, Ogre::DefaultHardwareUniformBuffer, Ogre::HardwarePixelBuffer, Ogre::D3D11HardwareBuffer, Ogre::D3D11HardwareIndexBuffer, Ogre::D3D11HardwareUniformBuffer, Ogre::D3D11HardwareVertexBuffer, Ogre::D3D9HardwareIndexBuffer, Ogre::D3D9HardwareVertexBuffer, Ogre::GLHardwareIndexBuffer, Ogre::GLHardwareVertexBuffer, Ogre::GL3PlusHardwareIndexBuffer, Ogre::GL3PlusHardwareUniformBuffer, Ogre::GL3PlusHardwareVertexBuffer, Ogre::GLES2HardwareIndexBuffer, Ogre::GLES2HardwareUniformBuffer, Ogre::GLES2HardwareVertexBuffer, Ogre::MetalHardwareIndexBuffer, and Ogre::MetalHardwareVertexBuffer.
|
inlinevirtual |
Copy data from another buffer into this one.
srcBuffer | The buffer from which to read the copied data |
srcOffset | Offset in the source buffer at which to start reading |
dstOffset | Offset in the destination buffer to start writing |
length | Length of the data to copy, in bytes. |
discardWholeBuffer | If true, will discard the entire contents of this buffer before copying |
Reimplemented in Ogre::D3D11HardwareBuffer, Ogre::D3D11HardwareIndexBuffer, Ogre::D3D11HardwareUniformBuffer, Ogre::D3D11HardwareVertexBuffer, Ogre::GL3PlusHardwareIndexBuffer, Ogre::GL3PlusHardwareUniformBuffer, Ogre::GL3PlusHardwareVertexBuffer, Ogre::GLES2HardwareIndexBuffer, Ogre::GLES2HardwareUniformBuffer, Ogre::GLES2HardwareVertexBuffer, Ogre::MetalHardwareIndexBuffer, and Ogre::MetalHardwareVertexBuffer.
|
inlinevirtual |
Copy all data from another buffer into this one.
Updates the real buffer from the shadow buffer, if required.
Reimplemented in Ogre::D3D11HardwareBuffer, Ogre::GLHardwareIndexBuffer, Ogre::GLHardwareVertexBuffer, Ogre::GL3PlusHardwareIndexBuffer, Ogre::GL3PlusHardwareVertexBuffer, Ogre::GLES2HardwareIndexBuffer, Ogre::GLES2HardwareVertexBuffer, Ogre::MetalHardwareIndexBuffer, and Ogre::MetalHardwareVertexBuffer.
Returns the size of this buffer in bytes.
Returns the Usage flags with which this buffer was created.
Returns whether this buffer is held in system memory.
Returns whether this buffer has a system memory shadow for quicker reading.
Returns whether or not this buffer is currently locked.
Pass true to suppress hardware upload of shadow buffer changes.