Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::glShaderBuffer Class Referencefinal

Base class for shader uniform blocks. More...

#include <glShaderBuffer.h>

+ Inheritance diagram for Divide::glShaderBuffer:

Public Member Functions

 glShaderBuffer (GFXDevice &context, const ShaderBufferDescriptor &descriptor)
 
bool bindByteRange (U8 bindIndex, BufferRange range, I32 readIndex=-1)
 
const glBufferImpl_uptr & bufferImpl () const noexcept
 
LockableBuffergetBufferImpl () override final
 
- Public Member Functions inherited from Divide::ShaderBuffer
 ShaderBuffer (GFXDevice &context, const ShaderBufferDescriptor &descriptor)
 
void readData (BufferRange range, std::pair< bufferPtr, size_t > outData)
 
void readBytes (BufferRange range, std::pair< bufferPtr, size_t > outData)
 
BufferLock clearData (BufferRange range)
 
BufferLock clearBytes (BufferRange range)
 
BufferLock writeData (BufferRange range, const bufferPtr data)
 
BufferLock writeBytes (BufferRange range, const bufferPtr data)
 
BufferUpdateUsage getUpdateUsage () const noexcept
 
BufferUpdateFrequency getUpdateFrequency () const noexcept
 
FORCE_INLINE I32 getStartIndex (const bool read) const noexcept
 
FORCE_INLINE size_t getStartOffset (const bool read) const noexcept
 
FORCE_INLINE U32 getPrimitiveCount () const noexcept
 
FORCE_INLINE size_t getPrimitiveSize () const noexcept
 
FORCE_INLINE BufferUsageType getUsage () const noexcept
 
FORCE_INLINE BufferLock writeData (const bufferPtr data)
 
FORCE_INLINE BufferLock clearData ()
 
virtual LockableBuffergetBufferImpl ()=0
 
 PROPERTY_R (size_t, alignedBufferSize, 0u)
 
 PROPERTY_R (size_t, alignmentRequirement, sizeof(U32))
 
 PROPERTY_R (string, name)
 
 PROPERTY_R (U64, lastWrittenFrame, 0u)
 
 PROPERTY_R (U64, lastReadFrame, 0u)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 
- Public Member Functions inherited from Divide::GraphicsResource
virtual ~GraphicsResource ()
 
GFXDevicecontext () const noexcept
 
U64 nameHash () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::NonMovable
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 
- Public Member Functions inherited from Divide::RingBufferSeparateWrite
 RingBufferSeparateWrite (U16 queueLength, bool separateReadWrite, bool writeAhead=true) noexcept
 
virtual ~RingBufferSeparateWrite ()=default
 
virtual void resize (U16 queueLength)
 
U16 queueLength () const noexcept
 
I32 queueWriteIndex () const noexcept
 
I32 queueReadIndex () const noexcept
 
I32 incQueue () noexcept
 
I32 decQueue () noexcept
 

Protected Member Functions

void readBytesInternal (BufferRange range, std::pair< bufferPtr, size_t > outData) override
 
BufferLock writeBytesInternal (BufferRange range, const bufferPtr data) override
 
virtual void readBytesInternal (BufferRange range, std::pair< bufferPtr, size_t > outData)=0
 
virtual BufferLock writeBytesInternal (BufferRange range, const bufferPtr data)=0
 
- Protected Member Functions inherited from Divide::GraphicsResource
 GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash)
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 

Private Attributes

glBufferImpl_uptr _bufferImpl { nullptr }
 

Additional Inherited Members

- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 
- Static Public Member Functions inherited from Divide::ShaderBuffer
static size_t AlignmentRequirement (BufferUsageType usage) noexcept
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 
- Protected Attributes inherited from Divide::ShaderBuffer
BufferParams _params
 
size_t _maxSize { 0u }
 
U64 _lastWriteFrameNumber { 0u }
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 
- Protected Attributes inherited from Divide::GraphicsResource
GFXDevice_context
 

Detailed Description

Base class for shader uniform blocks.

Definition at line 44 of file glShaderBuffer.h.

Constructor & Destructor Documentation

◆ glShaderBuffer()

Divide::glShaderBuffer::glShaderBuffer ( GFXDevice context,
const ShaderBufferDescriptor descriptor 
)

Definition at line 16 of file glShaderBuffer.cpp.

Member Function Documentation

◆ bindByteRange()

bool Divide::glShaderBuffer::bindByteRange ( U8  bindIndex,
BufferRange  range,
I32  readIndex = -1 
)

Definition at line 66 of file glShaderBuffer.cpp.

◆ bufferImpl()

const glBufferImpl_uptr & Divide::glShaderBuffer::bufferImpl ( ) const
inlinenoexcept

Definition at line 49 of file glShaderBuffer.h.

◆ getBufferImpl()

LockableBuffer * Divide::glShaderBuffer::getBufferImpl ( )
finaloverridevirtual

Implements Divide::ShaderBuffer.

Definition at line 104 of file glShaderBuffer.cpp.

◆ readBytesInternal()

void Divide::glShaderBuffer::readBytesInternal ( BufferRange  range,
std::pair< bufferPtr, size_t >  outData 
)
overrideprotectedvirtual

Implements Divide::ShaderBuffer.

Definition at line 60 of file glShaderBuffer.cpp.

◆ writeBytesInternal()

BufferLock Divide::glShaderBuffer::writeBytesInternal ( BufferRange  range,
const bufferPtr  data 
)
overrideprotectedvirtual

Implements Divide::ShaderBuffer.

Definition at line 55 of file glShaderBuffer.cpp.

Member Data Documentation

◆ _bufferImpl

glBufferImpl_uptr Divide::glShaderBuffer::_bufferImpl { nullptr }
private

Definition at line 58 of file glShaderBuffer.h.


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