fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / System / State / Base / OSGShaderStorageBufferObjRefChunk.h
blob9b60f60e145e1b6614633b8de5cdd5e72aac9469
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 _OSGSHADERSTORAGEBUFFEROBJREFCHUNK_H_
40 #define _OSGSHADERSTORAGEBUFFEROBJREFCHUNK_H_
41 #ifdef __sgi
42 #pragma once
43 #endif
45 #include "OSGShaderStorageBufferObjRefChunkBase.h"
46 #include "OSGWindow.h"
48 OSG_BEGIN_NAMESPACE
50 /*! \brief ShaderStorageBufferObjRefChunk class. See \ref
51 PageSystemShaderStorageBufferObjRefChunk for a description.
54 class OSG_SYSTEM_DLLMAPPING ShaderStorageBufferObjRefChunk : public ShaderStorageBufferObjRefChunkBase
56 protected:
58 /*========================== PUBLIC =================================*/
60 public:
62 typedef ShaderStorageBufferObjRefChunkBase Inherited;
63 typedef ShaderStorageBufferObjRefChunk 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 ShaderStorageBufferObjRefChunkBase.
110 void onCreate (const ShaderStorageBufferObjRefChunk *source = NULL);
111 void onCreateAspect(const ShaderStorageBufferObjRefChunk *createAspect,
112 const ShaderStorageBufferObjRefChunk *source = NULL);
113 void onDestroy ( UInt32 uiContainerId );
115 /*---------------------------------------------------------------------*/
116 /*! \name Constructors */
117 /*! \{ */
119 ShaderStorageBufferObjRefChunk(void);
120 ShaderStorageBufferObjRefChunk(const ShaderStorageBufferObjRefChunk &source);
122 /*! \} */
123 /*---------------------------------------------------------------------*/
124 /*! \name Destructors */
125 /*! \{ */
127 virtual ~ShaderStorageBufferObjRefChunk(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;
142 static UInt32 _extUniformBufferObject;
143 static UInt32 _funcBindBufferBase;
145 static UInt32 _extShaderStorageBufferObject;
147 /*========================== PRIVATE ================================*/
149 private:
151 friend class FieldContainer;
152 friend class ShaderStorageBufferObjRefChunkBase;
154 // prohibit default functions (move to 'public' if you need one)
155 void operator =(const ShaderStorageBufferObjRefChunk &source);
158 typedef ShaderStorageBufferObjRefChunk *ShaderStorageBufferObjRefChunkP;
160 OSG_END_NAMESPACE
162 #include "OSGShaderStorageBufferObjRefChunkBase.inl"
163 #include "OSGShaderStorageBufferObjRefChunk.inl"
165 #endif /* _OSGSHADERSTORAGEBUFFEROBJREFCHUNK_H_ */