| 
    Open CASCADE Technology 7.8.0
    
   | 
 
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 | 
| 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.
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 | 
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)!
| 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 | 
Number of components per generic vertex attribute, must be 1, 2, 3, or 4.
Data type (GL_FLOAT, GL_UNSIGNED_INT, GL_UNSIGNED_BYTE etc.)
      
  | 
  protected | 
Number of vertex attributes / number of vertices.
      
  | 
  protected | 
offset to data