changed: gcc8 base update
[opensg.git] / Source / System / State / Base / OSGUniformBufferObjStd140Chunk.h
blobf761f8608490b38729a5dfd24dd0c8811577d556
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 #ifndef _OSGUNIFORMBUFFEROBJSTD140CHUNK_H_
40 #define _OSGUNIFORMBUFFEROBJSTD140CHUNK_H_
41 #ifdef __sgi
42 #pragma once
43 #endif
45 #include "OSGUniformBufferObjStd140ChunkBase.h"
46 #include "OSGWindow.h"
48 OSG_BEGIN_NAMESPACE
50 /*! \brief UniformBufferObjStd140Chunk class. See \ref
51 PageSystemUniformBufferObjStd140Chunk for a description.
54 class OSG_SYSTEM_DLLMAPPING UniformBufferObjStd140Chunk : public UniformBufferObjStd140ChunkBase
56 protected:
58 /*========================== PUBLIC =================================*/
60 public:
62 typedef UniformBufferObjStd140ChunkBase Inherited;
63 typedef UniformBufferObjStd140Chunk Self;
65 /*---------------------------------------------------------------------*/
66 /*! \name Sync */
67 /*! \{ */
69 virtual void changed(ConstFieldMaskArg whichField,
70 UInt32 origin,
71 BitVector details );
73 /*! \} */
74 /*---------------------------------------------------------------------*/
75 /*! \name Output */
76 /*! \{ */
78 virtual void dump( UInt32 uiIndent = 0,
79 const BitVector bvFlags = 0) const;
81 /*! \} */
82 /*---------------------------------------------------------------------*/
83 /*! \name State */
84 /*! \{ */
86 virtual void activate (DrawEnv *pEnv,
87 UInt32 index = 0);
89 virtual void changeFrom (DrawEnv *pEnv,
90 StateChunk *pOld,
91 UInt32 index = 0);
93 virtual void deactivate (DrawEnv *pEnv,
94 UInt32 index = 0);
96 /*! \} */
97 /*---------------------------------------------------------------------*/
98 /*! \name OpenGL handling */
99 /*! \{ */
101 virtual void validate (DrawEnv *pEnv);
102 virtual Int32 getOpenGLId (DrawEnv *pEnv);
104 /*! \} */
105 /*========================= PROTECTED ===============================*/
107 protected:
108 // Variables should all be in UniformBufferObjStd140ChunkBase.
110 void onCreate (const UniformBufferObjStd140Chunk *source = NULL);
111 void onCreateAspect(const UniformBufferObjStd140Chunk *createAspect,
112 const UniformBufferObjStd140Chunk *source = NULL);
113 void onDestroy ( UInt32 uiContainerId );
115 /*---------------------------------------------------------------------*/
116 /*! \name Constructors */
117 /*! \{ */
119 UniformBufferObjStd140Chunk(void);
120 UniformBufferObjStd140Chunk(const UniformBufferObjStd140Chunk &source);
122 /*! \} */
123 /*---------------------------------------------------------------------*/
124 /*! \name Destructors */
125 /*! \{ */
127 virtual ~UniformBufferObjStd140Chunk(void);
129 /*! \} */
130 /*---------------------------------------------------------------------*/
131 /*! \name Init */
132 /*! \{ */
134 static void initMethod(InitPhase ePhase);
136 /*! \} */
138 // extension indices for used extensions;
139 static UInt32 _extVertexBufferObject;
141 static UInt32 _funcBindBuffer;
142 static UInt32 _funcMapBuffer;
143 static UInt32 _funcUnmapBuffer;
144 static UInt32 _funcBufferData;
145 static UInt32 _funcBufferSubData;
146 static UInt32 _funcGenBuffers;
147 static UInt32 _funcDeleteBuffers;
148 static UInt32 _funcGetBufferParameteriv;
151 static UInt32 _extUniformBufferObject;
153 static UInt32 _funcBindBufferBase;
155 /*========================== PRIVATE ================================*/
157 private:
159 friend class FieldContainer;
160 friend class UniformBufferObjStd140ChunkBase;
162 /*---------------------------------------------------------------------*/
163 /*! \name GL */
164 /*! \{ */
166 UInt32 handleGL (DrawEnv *pEnv,
167 UInt32 id,
168 Window::GLObjectStatusE mode,
169 UInt64 uiOptions);
171 static void handleDestroyGL(DrawEnv *pEnv,
172 UInt32 id,
173 Window::GLObjectStatusE mode );
175 /*! \} */
177 // prohibit default functions (move to 'public' if you need one)
178 void operator =(const UniformBufferObjStd140Chunk &source);
181 typedef UniformBufferObjStd140Chunk *UniformBufferObjStd140ChunkP;
183 OSG_END_NAMESPACE
185 #include "OSGUniformBufferObjStd140ChunkBase.inl"
186 #include "OSGUniformBufferObjStd140Chunk.inl"
188 #endif /* _OSGUNIFORMBUFFEROBJSTD140CHUNK_H_ */