OGRE-Next  3.0.0
Object-Oriented Graphics Rendering Engine
Ogre::ReadOnlyBufferPacked Class Reference

Represents the best way to access read-only data. More...

#include <OgreReadOnlyBufferPacked.h>

+ Inheritance diagram for Ogre::ReadOnlyBufferPacked:

Public Member Functions

 ReadOnlyBufferPacked (size_t internalBufferStartBytes, size_t numElements, uint32 bytesPerElement, uint32 numElementsPadding, BufferType bufferType, void *initialData, bool keepAsShadow, VaoManager *vaoManager, BufferInterface *bufferInterface, PixelFormatGpu pf)
 
BufferPackedTypes getBufferPackedType () const override
 Useful to query which one is the derived class. More...
 
- Public Member Functions inherited from Ogre::TexBufferPacked
 TexBufferPacked (size_t internalBufferStartBytes, size_t numElements, uint32 bytesPerElement, uint32 numElementsPadding, BufferType bufferType, void *initialData, bool keepAsShadow, VaoManager *vaoManager, BufferInterface *bufferInterface, PixelFormatGpu pf)
 
virtual void _bindBufferDirectly (uint16 slot, size_t offset, size_t sizeBytes)
 To be overriden only by GL3+. More...
 
virtual void bindBufferCS (uint16 slot, size_t offset=0, size_t sizeBytes=0)=0
 
virtual void bindBufferDS (uint16 slot, size_t offset=0, size_t sizeBytes=0)=0
 
virtual void bindBufferGS (uint16 slot, size_t offset=0, size_t sizeBytes=0)=0
 
virtual void bindBufferHS (uint16 slot, size_t offset=0, size_t sizeBytes=0)=0
 
virtual void bindBufferPS (uint16 slot, size_t offset=0, size_t sizeBytes=0)=0
 
virtual void bindBufferVS (uint16 slot, size_t offset=0, size_t sizeBytes=0)=0
 Binds the texture buffer to the given slot in the Vertex/Pixel/Geometry/Hull/Domain/Compute Shader. More...
 
BufferPackedTypes getBufferPackedType () const override
 Useful to query which one is the derived class. More...
 
PixelFormatGpu getPixelFormat () const
 
- Public Member Functions inherited from 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. 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...
 
BufferInterfacegetBufferInterface () const
 
BufferType getBufferType () const
 
uint32 getBytesPerElement () const
 
MappingState getMappingState () const
 Returns the mapping state. More...
 
size_t getNumElements () const
 
virtual BufferPackedgetOriginalBufferType ()
 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...
 
- Public Member Functions inherited from Ogre::GpuTrackedResource
virtual ~GpuTrackedResource ()
 
virtual bool isTextureGpu () const
 

Detailed Description

Represents the best way to access read-only data.

But how it is implemented depends largely on which HW/API it is running on:

  • Buffer<> aka texture buffer in D3D11 on D3D10+ HW
  • samplerBuffer aka texture buffer in GL3 on GL3/D3D10 HW
  • SSBO aka UAV buffer in GL4 on GL4/D3D11 HW
  • SSBO aka UAV buffer in Vulkan
  • Metal doesn't matter, there are no differences between TexBuffer & UavBuffer, however we consume the slots reserved for tex buffers.

In short, it either behaves as a TexBufferPacked or as an UavBufferPacked (but read only) depending on HW and API being used.

Constructor & Destructor Documentation

◆ ReadOnlyBufferPacked()

Ogre::ReadOnlyBufferPacked::ReadOnlyBufferPacked ( size_t  internalBufferStartBytes,
size_t  numElements,
uint32  bytesPerElement,
uint32  numElementsPadding,
BufferType  bufferType,
void *  initialData,
bool  keepAsShadow,
VaoManager vaoManager,
BufferInterface bufferInterface,
PixelFormatGpu  pf 
)
inline

Member Function Documentation

◆ getBufferPackedType()

BufferPackedTypes Ogre::ReadOnlyBufferPacked::getBufferPackedType ( ) const
inlineoverridevirtual

Useful to query which one is the derived class.

Implements Ogre::BufferPacked.

Reimplemented in Ogre::MetalReadOnlyBufferPacked, and Ogre::MetalTexBufferPacked.

References Ogre::BP_TYPE_READONLY.


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