fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / System / State / Base / OSGShaderStorageBufferObjStdLayoutChunk.h
blobb22a6d69e9e0fb3707711f537f4b4e7b9541730f
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 _OSGSHADERSTORAGEBUFFEROBJSTDLAYOUTCHUNK_H_
40 #define _OSGSHADERSTORAGEBUFFEROBJSTDLAYOUTCHUNK_H_
41 #ifdef __sgi
42 #pragma once
43 #endif
45 #include "OSGShaderStorageBufferObjStdLayoutChunkBase.h"
46 #include "OSGWindow.h"
48 OSG_BEGIN_NAMESPACE
50 /*! \brief ShaderStorageBufferObjStdLayoutChunk class. See \ref
51 PageSystemShaderStorageBufferObjStdLayoutChunk for a description.
54 class OSG_SYSTEM_DLLMAPPING ShaderStorageBufferObjStdLayoutChunk : public ShaderStorageBufferObjStdLayoutChunkBase
56 protected:
58 /*========================== PUBLIC =================================*/
60 public:
62 typedef ShaderStorageBufferObjStdLayoutChunkBase Inherited;
63 typedef ShaderStorageBufferObjStdLayoutChunk 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 ShaderStorageBufferObjStdLayoutChunkBase.
110 void onCreate (const ShaderStorageBufferObjStdLayoutChunk *source = NULL);
111 void onCreateAspect(const ShaderStorageBufferObjStdLayoutChunk *createAspect,
112 const ShaderStorageBufferObjStdLayoutChunk *source = NULL);
113 void onDestroy ( UInt32 uiContainerId );
115 /*---------------------------------------------------------------------*/
116 /*! \name Constructors */
117 /*! \{ */
119 ShaderStorageBufferObjStdLayoutChunk(void);
120 ShaderStorageBufferObjStdLayoutChunk(const ShaderStorageBufferObjStdLayoutChunk &source);
122 /*! \} */
123 /*---------------------------------------------------------------------*/
124 /*! \name Destructors */
125 /*! \{ */
127 virtual ~ShaderStorageBufferObjStdLayoutChunk(void);
129 /*! \} */
130 /*---------------------------------------------------------------------*/
131 /*! \name Init */
132 /*! \{ */
134 static void initMethod(InitPhase ePhase);
136 /*! \} */
138 // extension indices for used extensions;
139 static UInt32 _extVertexBufferObject;
140 static UInt32 _funcBindBuffer;
141 static UInt32 _funcMapBuffer;
142 static UInt32 _funcUnmapBuffer;
143 static UInt32 _funcBufferData;
144 static UInt32 _funcBufferSubData;
145 static UInt32 _funcGenBuffers;
146 static UInt32 _funcDeleteBuffers;
147 static UInt32 _funcGetBufferParameteriv;
150 static UInt32 _extUniformBufferObject;
151 static UInt32 _funcBindBufferBase;
153 static UInt32 _extProgramInterfaceQuery;
154 static UInt32 _extShaderStorageBufferObject;
156 /*========================== PRIVATE ================================*/
158 private:
160 friend class FieldContainer;
161 friend class ShaderStorageBufferObjStdLayoutChunkBase;
163 /*---------------------------------------------------------------------*/
164 /*! \name GL */
165 /*! \{ */
167 UInt32 handleGL (DrawEnv *pEnv,
168 UInt32 id,
169 Window::GLObjectStatusE mode,
170 UInt64 uiOptions);
172 static void handleDestroyGL(DrawEnv *pEnv,
173 UInt32 id,
174 Window::GLObjectStatusE mode );
176 /*! \} */
178 // prohibit default functions (move to 'public' if you need one)
179 void operator =(const ShaderStorageBufferObjStdLayoutChunk &source);
182 typedef ShaderStorageBufferObjStdLayoutChunk *ShaderStorageBufferObjStdLayoutChunkP;
184 OSG_END_NAMESPACE
186 #include "OSGShaderStorageBufferObjStdLayoutChunkBase.inl"
187 #include "OSGShaderStorageBufferObjStdLayoutChunk.inl"
189 #endif /* _OSGSHADERSTORAGEBUFFEROBJSTDLAYOUTCHUNK_H_ */