Open CASCADE Technology 7.8.2.dev
|
Buffer Object - is a general storage object for arbitrary data (see sub-classes). More...
#include <OpenGl_Buffer.hxx>
Public Member Functions | |
OpenGl_Buffer () | |
Create uninitialized buffer. | |
virtual | ~OpenGl_Buffer () |
Destroy object. | |
virtual unsigned int | GetTarget () const =0 |
Return buffer target. | |
virtual bool | IsVirtual () const |
Return TRUE if this is a virtual (for backward compatibility) VBO object. | |
bool | IsValid () const |
unsigned int | GetComponentsNb () const |
Standard_Integer | GetElemsNb () const |
void | SetElemsNb (Standard_Integer theNbElems) |
Overrides the number of vertex attributes / number of vertexes. It is up to user specifying this number correct (e.g. below initial value)! | |
unsigned int | GetDataType () const |
Standard_Byte * | GetDataOffset () const |
virtual bool | Create (const Handle< OpenGl_Context > &theGlCtx) |
Creates buffer object name (id) if not yet generated. Data should be initialized by another method. | |
virtual void | Release (OpenGl_Context *theGlCtx) override |
Destroy object - will release GPU memory if any. | |
virtual void | Bind (const Handle< OpenGl_Context > &theGlCtx) const |
Bind this buffer object. | |
virtual void | Unbind (const Handle< OpenGl_Context > &theGlCtx) const |
Unbind this buffer object. | |
bool | Init (const Handle< OpenGl_Context > &theGlCtx, const unsigned int theComponentsNb, const Standard_Integer theElemsNb, const float *theData) |
Notice that buffer object will be unbound after this call. | |
bool | Init (const Handle< OpenGl_Context > &theGlCtx, const unsigned int theComponentsNb, const Standard_Integer theElemsNb, const unsigned int *theData) |
Notice that buffer object will be unbound after this call. | |
bool | Init (const Handle< OpenGl_Context > &theGlCtx, const unsigned int theComponentsNb, const Standard_Integer theElemsNb, const unsigned short *theData) |
Notice that buffer object will be unbound after this call. | |
bool | Init (const Handle< OpenGl_Context > &theGlCtx, const unsigned int theComponentsNb, const Standard_Integer theElemsNb, const Standard_Byte *theData) |
Notice that buffer object will be unbound after this call. | |
bool | SubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, const float *theData) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call. | |
bool | GetSubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, float *theData) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData(). | |
bool | SubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, const unsigned int *theData) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call. | |
bool | GetSubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, unsigned int *theData) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData(). | |
bool | SubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, const unsigned short *theData) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call. | |
bool | GetSubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, unsigned short *theData) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData(). | |
bool | SubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, const Standard_Byte *theData) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call. | |
bool | GetSubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, Standard_Byte *theData) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData(). | |
Public Member Functions inherited from OpenGl_Resource | |
OpenGl_Resource () | |
Empty constructor. | |
virtual | ~OpenGl_Resource () |
Destructor. Inheritors should call Clean (NULL) within it. | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. | |
virtual | ~Standard_Transient () |
Destructor must be virtual. | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. | |
Standard_Integer | GetRefCount () const noexcept |
Get the reference counter of this object. | |
void | IncrementRefCounter () noexcept |
Increments the reference counter of this object. | |
Standard_Integer | DecrementRefCounter () noexcept |
Decrements the reference counter of this object; returns the decremented value. | |
virtual void | Delete () const |
Memory deallocator for transient classes. | |
Static Public Member Functions | |
static TCollection_AsciiString | FormatTarget (unsigned int theTarget) |
Format VBO target enumeration value. | |
Static Public Member Functions inherited from Standard_Transient | |
static constexpr const char * | get_type_name () |
Returns a type descriptor about this object. | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. | |
Static Public Attributes | |
static const unsigned int | NO_BUFFER = 0 |
Helpful constants. | |
advanced methods | |
Standard_Byte * | myOffset |
offset to data | |
unsigned int | myBufferId |
VBO name (index) | |
unsigned int | myComponentsNb |
Number of components per generic vertex attribute, must be 1, 2, 3, or 4. | |
Standard_Integer | myElemsNb |
Number of vertex attributes / number of vertices. | |
unsigned int | myDataType |
Data type (GL_FLOAT, GL_UNSIGNED_INT, GL_UNSIGNED_BYTE etc.) | |
static size_t | sizeOfGlType (unsigned int theType) |
virtual Standard_Size | EstimatedDataSize () const override |
Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules. | |
virtual bool | init (const Handle< OpenGl_Context > &theGlCtx, const unsigned int theComponentsNb, const Standard_Integer theElemsNb, const void *theData, const unsigned int theDataType, const Standard_Integer theStride) |
Initialize buffer with new data. | |
bool | init (const Handle< OpenGl_Context > &theGlCtx, const unsigned int theComponentsNb, const Standard_Integer theElemsNb, const void *theData, const unsigned int theDataType) |
Initialize buffer with new data. | |
virtual bool | subData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, const void *theData, const unsigned int theDataType) |
Update part of the buffer with new data. | |
virtual bool | getSubData (const Handle< OpenGl_Context > &theGlCtx, const Standard_Integer theElemFrom, const Standard_Integer theElemsNb, void *theData, const unsigned int theDataType) |
Read back buffer sub-range. | |
virtual void | DumpJson (Standard_OStream &theOStream, Standard_Integer theDepth=-1) const override |
Dumps the content of me into the stream. | |
void | BindBufferBase (const Handle< OpenGl_Context > &theGlCtx, unsigned int theIndex) |
Binds a buffer object to an indexed buffer target. Wrapper for glBindBufferBase(). | |
void | UnbindBufferBase (const Handle< OpenGl_Context > &theGlCtx, unsigned int theIndex) |
Unbinds a buffer object from an indexed buffer target. Wrapper for glBindBufferBase(). | |
void | BindBufferRange (const Handle< OpenGl_Context > &theGlCtx, unsigned int theIndex, const intptr_t theOffset, const size_t theSize) |
Binds a buffer object to an indexed buffer target with specified offset and size. Wrapper for glBindBufferRange(). | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. | |
Buffer Object - is a general storage object for arbitrary data (see sub-classes).
OpenGl_Buffer::OpenGl_Buffer | ( | ) |
Create uninitialized buffer.
|
virtual |
Destroy object.
|
virtual |
Bind this buffer object.
|
protected |
Binds a buffer object to an indexed buffer target. Wrapper for glBindBufferBase().
theGlCtx | [in] active OpenGL context |
theIndex | [in] index to bind |
|
protected |
Binds a buffer object to an indexed buffer target with specified offset and size. Wrapper for glBindBufferRange().
theGlCtx | [in] active OpenGL context |
theIndex | [in] index to bind ( |
theOffset | [in] offset within the buffer ( |
theSize | [in] sub-section length starting from offset |
|
virtual |
Creates buffer object name (id) if not yet generated. Data should be initialized by another method.
Reimplemented in OpenGl_TextureBuffer.
|
overridevirtual |
Dumps the content of me into the stream.
Reimplemented from OpenGl_Resource.
Reimplemented in OpenGl_IndexBuffer.
|
inlineoverridevirtual |
Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules.
Implements OpenGl_Resource.
|
static |
Format VBO target enumeration value.
|
inline |
|
inline |
|
inline |
|
inline |
bool OpenGl_Buffer::GetSubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
float * | theData ) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData().
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [out] destination pointer to float data. |
bool OpenGl_Buffer::GetSubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
Standard_Byte * | theData ) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData().
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [out] destination pointer to Standard_Byte data. |
bool OpenGl_Buffer::GetSubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
unsigned int * | theData ) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData().
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [out] destination pointer to unsigned int data. |
bool OpenGl_Buffer::GetSubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
unsigned short * | theData ) |
Read back buffer sub-range. Notice that buffer object will be unbound after this call. Function reads portion of data from this buffer object using glGetBufferSubData().
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [out] destination pointer to unsigned short data. |
|
virtual |
Read back buffer sub-range.
|
pure virtual |
Return buffer target.
Implemented in OpenGl_IndexBuffer, OpenGl_TextureBuffer, OpenGl_UniformBuffer, and OpenGl_VertexBuffer.
bool OpenGl_Buffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const unsigned int | theComponentsNb, | ||
const Standard_Integer | theElemsNb, | ||
const float * | theData ) |
Notice that buffer object will be unbound after this call.
theComponentsNb | [in] specifies the number of components per generic vertex attribute; must be 1, 2, 3, or 4; |
theElemsNb | [in] elements count; |
theData | [in] pointer to float data (vertices/normals etc.). |
bool OpenGl_Buffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const unsigned int | theComponentsNb, | ||
const Standard_Integer | theElemsNb, | ||
const Standard_Byte * | theData ) |
Notice that buffer object will be unbound after this call.
theComponentsNb | [in] specifies the number of components per generic vertex attribute; must be 1, 2, 3, or 4; |
theElemsNb | [in] elements count; |
theData | [in] pointer to Standard_Byte data (indices/colors etc.). |
bool OpenGl_Buffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const unsigned int | theComponentsNb, | ||
const Standard_Integer | theElemsNb, | ||
const unsigned int * | theData ) |
Notice that buffer object will be unbound after this call.
theComponentsNb | [in] specifies the number of components per generic vertex attribute; must be 1, 2, 3, or 4; |
theElemsNb | [in] elements count; |
theData | [in] pointer to unsigned int data (indices etc.). |
bool OpenGl_Buffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const unsigned int | theComponentsNb, | ||
const Standard_Integer | theElemsNb, | ||
const unsigned short * | theData ) |
Notice that buffer object will be unbound after this call.
theComponentsNb | [in] specifies the number of components per generic vertex attribute; must be 1, 2, 3, or 4; |
theElemsNb | [in] elements count; |
theData | [in] pointer to unsigned short data (indices etc.). |
|
inline |
Initialize buffer with new data.
|
virtual |
Initialize buffer with new data.
|
inline |
|
inlinevirtual |
Return TRUE if this is a virtual (for backward compatibility) VBO object.
|
overridevirtual |
Destroy object - will release GPU memory if any.
Implements OpenGl_Resource.
Reimplemented in OpenGl_TextureBuffer.
|
inline |
Overrides the number of vertex attributes / number of vertexes. It is up to user specifying this number correct (e.g. below initial value)!
|
static |
bool OpenGl_Buffer::SubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
const float * | theData ) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call.
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [in] pointer to float data. |
bool OpenGl_Buffer::SubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
const Standard_Byte * | theData ) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call.
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [in] pointer to Standard_Byte data. |
bool OpenGl_Buffer::SubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
const unsigned int * | theData ) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call.
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [in] pointer to unsigned int data. |
bool OpenGl_Buffer::SubData | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const Standard_Integer | theElemFrom, | ||
const Standard_Integer | theElemsNb, | ||
const unsigned short * | theData ) |
Notice that buffer object will be unbound after this call. Function replaces portion of data within this buffer object using glBufferSubData(). The buffer object should be initialized before call.
theElemFrom | [in] element id from which replace buffer data (>=0); |
theElemsNb | [in] elements count (theElemFrom + theElemsNb <= GetElemsNb()); |
theData | [in] pointer to unsigned short data. |
|
virtual |
Update part of the buffer with new data.
|
virtual |
Unbind this buffer object.
|
protected |
Unbinds a buffer object from an indexed buffer target. Wrapper for glBindBufferBase().
theGlCtx | [in] active OpenGL context |
theIndex | [in] index to bind |
|
protected |
VBO name (index)
|
protected |
Number of components per generic vertex attribute, must be 1, 2, 3, or 4.
|
protected |
Data type (GL_FLOAT, GL_UNSIGNED_INT, GL_UNSIGNED_BYTE etc.)
|
protected |
Number of vertex attributes / number of vertices.
|
protected |
offset to data
|
static |
Helpful constants.