|
| BufferPacked (size_t internalBufferStartBytes, size_t numElements, uint32 bytesPerElement, uint32 numElementsPadding, BufferType bufferType, void *initialData, bool keepAsShadow, VaoManager *vaoManager, BufferInterface *bufferInterface) |
| Generic constructor. More...
|
|
virtual | ~BufferPacked () |
|
size_t | _getFinalBufferStart () const |
|
size_t | _getInternalBufferStart () const |
|
size_t | _getInternalNumElements () const |
|
size_t | _getInternalTotalSizeBytes () const |
|
void | _setBufferInterface (BufferInterface *bufferInterface) |
| For internal use. More...
|
|
void | _setShadowCopy (void *copy) |
| This will not delete the existing shadow copy so it can be used for other purposes if it is not needed call OGRE_FREE_SIMD( m->getShadowCopy(), MEMCATEGORY_GEOMETRY ) before calling this function. More...
|
|
void | advanceFrame () |
|
void | copyTo (BufferPacked *dstBuffer, size_t dstElemStart=0, size_t srcElemStart=0, size_t srcNumElems=std::numeric_limits< size_t >::max()) |
| Copies the contents of this buffer to another, using GPU -> GPU transfers. More...
|
|
BufferInterface * | getBufferInterface () const |
|
virtual BufferPackedTypes | getBufferPackedType () const =0 |
| Useful to query which one is the derived class. More...
|
|
BufferType | getBufferType () const |
|
uint32 | getBytesPerElement () const |
|
MappingState | getMappingState () const |
| Returns the mapping state. More...
|
|
size_t | getNumElements () const |
|
virtual BufferPacked * | getOriginalBufferType () |
| If this buffer has been reinterpreted from an UavBufferPacked, returns the original version, otherwise returns 'this'. More...
|
|
const void * | getShadowCopy () const |
|
size_t | getTotalSizeBytes () const |
|
bool | isCurrentlyMapped () const |
| Returns whether the buffer is currently mapped. More...
|
|
void *RESTRICT_ALIAS_RETURN | map (size_t elementStart, size_t elementCount, bool bAdvanceFrame=true) |
| Maps the specified region to a pointer the CPU can access. More...
|
|
AsyncTicketPtr | readRequest (size_t elementStart, size_t elementCount) |
| Async data read request. More...
|
|
void | regressFrame () |
| Performs the opposite of. More...
|
|
void | unmap (UnmapOptions unmapOption, size_t flushStartElem=0, size_t flushSizeElem=0) |
| Unmaps or flushes the region mapped with. More...
|
|
virtual void | upload (const void *data, size_t elementStart, size_t elementCount) |
| Sends the provided data to the GPU. More...
|
|
virtual | ~GpuTrackedResource () |
|
virtual bool | isTextureGpu () const |
|
Ogre::BufferPacked::BufferPacked |
( |
size_t |
internalBufferStartBytes, |
|
|
size_t |
numElements, |
|
|
uint32 |
bytesPerElement, |
|
|
uint32 |
numElementsPadding, |
|
|
BufferType |
bufferType, |
|
|
void * |
initialData, |
|
|
bool |
keepAsShadow, |
|
|
VaoManager * |
vaoManager, |
|
|
BufferInterface * |
bufferInterface |
|
) |
| |
Generic constructor.
- Parameters
-
initialData | Initial data to populate. If bufferType == BT_IMMUTABLE, can't be null. |
keepAsShadow | Keeps "intialData" as a shadow copy for reading from CPU without querying the GPU (can be useful for reconstructing buffers on device/context loss or for efficient reading of the data without streaming back from GPU.) |
If keepAsShadow is false, caller is responsible for freeing the data
If keepAsShadow is true, we're responsible for freeing the pointer. We will free the pointer using OGRE_FREE_SIMD( MEMCATEGORY_GEOMETRY ), in which case the pointer must* have been allocated using OGRE_MALLOC_SIMD( MEMCATEGORY_GEOMETRY )
If the constructor throws, then data will NOT be freed, and caller will have to do it.
- See also
- FreeOnDestructor to help you with exceptions and correctly freeing the data.
Must be false if bufferType >= BT_DYNAMIC
void Ogre::BufferPacked::copyTo |
( |
BufferPacked * |
dstBuffer, |
|
|
size_t |
dstElemStart = 0 , |
|
|
size_t |
srcElemStart = 0 , |
|
|
size_t |
srcNumElems = std::numeric_limits< size_t >::max() |
|
) |
| |
Copies the contents of this buffer to another, using GPU -> GPU transfers.
In simple terms it is similar to doing: memcpy( dstBuffer + dstElemStart, this + srcElemStart, srcNumElems );
If dst has a shadow buffer, then src must have it too.
- Parameters
-
dstBuffer | Buffer to copy to. Must be of type BT_DEFAULT |
dstElemStart | The offset for dstBuffer. It must be in the unit of measure of dstBuffer. e.g. actual offset in bytes is dstElemStart * dstBuffer->getBytesPerElement() |
srcElemStart | The offset of this buffer to start from |
srcNumElems | The number of elements to copy, in units of measure of srcBuffer. When this value is out of bounds, it gets clamped. See remarks. |