File indexing completed on 2026-05-31 08:30:59
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef OpenGl_VertexBuffer_HeaderFile
0016 #define OpenGl_VertexBuffer_HeaderFile
0017
0018 #include <OpenGl_Buffer.hxx>
0019 #include <Graphic3d_Buffer.hxx>
0020
0021
0022
0023 class OpenGl_VertexBuffer : public OpenGl_Buffer
0024 {
0025 public:
0026
0027 Standard_EXPORT OpenGl_VertexBuffer();
0028
0029
0030 Standard_EXPORT virtual ~OpenGl_VertexBuffer();
0031
0032
0033 Standard_EXPORT virtual unsigned int GetTarget() const Standard_OVERRIDE;
0034
0035
0036 Standard_EXPORT void BindVertexAttrib(const Handle(OpenGl_Context)& theGlCtx,
0037 const unsigned int theAttribLoc) const;
0038
0039
0040 Standard_EXPORT void UnbindVertexAttrib(const Handle(OpenGl_Context)& theGlCtx,
0041 const unsigned int theAttribLoc) const;
0042
0043
0044
0045
0046
0047 void BindAttribute(const Handle(OpenGl_Context)& theCtx,
0048 const Graphic3d_TypeOfAttribute theMode) const
0049 {
0050 if (IsValid())
0051 {
0052 Bind(theCtx);
0053 bindAttribute(theCtx, theMode, static_cast<int>(myComponentsNb), myDataType, 0, myOffset);
0054 }
0055 }
0056
0057
0058
0059
0060 void UnbindAttribute(const Handle(OpenGl_Context)& theCtx,
0061 const Graphic3d_TypeOfAttribute theMode) const
0062 {
0063 if (IsValid())
0064 {
0065 Unbind(theCtx);
0066 unbindAttribute(theCtx, theMode);
0067 }
0068 }
0069
0070 public:
0071
0072
0073 Standard_EXPORT static void bindAttribute(const Handle(OpenGl_Context)& theGlCtx,
0074 const Graphic3d_TypeOfAttribute theMode,
0075 const Standard_Integer theNbComp,
0076 const unsigned int theDataType,
0077 const Standard_Integer theStride,
0078 const void* theOffset);
0079
0080
0081
0082 Standard_EXPORT static void unbindAttribute(const Handle(OpenGl_Context)& theGlCtx,
0083 const Graphic3d_TypeOfAttribute theMode);
0084
0085 private:
0086
0087 Standard_EXPORT static void bindFixed(const Handle(OpenGl_Context)& theGlCtx,
0088 const Graphic3d_TypeOfAttribute theMode,
0089 const Standard_Integer theNbComp,
0090 const unsigned int theDataType,
0091 const Standard_Integer theStride,
0092 const void* theOffset);
0093
0094
0095 Standard_EXPORT static void unbindFixed(const Handle(OpenGl_Context)& theGlCtx,
0096 const Graphic3d_TypeOfAttribute theMode);
0097
0098
0099 Standard_EXPORT static void unbindFixedColor(const Handle(OpenGl_Context)& theCtx);
0100
0101 public:
0102
0103 Standard_EXPORT virtual bool HasColorAttribute() const;
0104
0105
0106 Standard_EXPORT virtual bool HasNormalAttribute() const;
0107
0108
0109
0110 Standard_EXPORT virtual void BindAllAttributes(const Handle(OpenGl_Context)& theGlCtx) const;
0111
0112
0113 Standard_EXPORT virtual void BindPositionAttribute(const Handle(OpenGl_Context)& theGlCtx) const;
0114
0115
0116 Standard_EXPORT virtual void UnbindAllAttributes(const Handle(OpenGl_Context)& theGlCtx) const;
0117
0118 public:
0119 DEFINE_STANDARD_RTTIEXT(OpenGl_VertexBuffer, OpenGl_Buffer)
0120 };
0121
0122 DEFINE_STANDARD_HANDLE(OpenGl_VertexBuffer, OpenGl_Buffer)
0123
0124 #endif