OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GLExtensions.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 #ifndef OSG_GLEXTENSIONS
15 #define OSG_GLEXTENSIONS 1
16 
17 #include <osg/Export>
18 #include <osg/GLDefines>
19 
20 #include <stdlib.h>
21 #include <string.h>
22 #include <string>
23 
24 
25 namespace osg {
26 
31 extern OSG_EXPORT float getGLVersionNumber();
32 
35 extern OSG_EXPORT bool isExtensionInExtensionString(const char *extension, const char *extensionString);
36 
41 extern OSG_EXPORT bool isGLExtensionSupported(unsigned int contextID, const char *extension);
42 
47 extern OSG_EXPORT bool isGLExtensionOrVersionSupported(unsigned int contextID, const char *extension, float requiredGlVersion);
48 
56 extern OSG_EXPORT void* getGLExtensionFuncPtr(const char *funcName);
57 
66 extern OSG_EXPORT void setGLExtensionDisableString(const std::string& disableString);
67 
69 extern OSG_EXPORT std::string& getGLExtensionDisableString();
70 
76 inline void* getGLExtensionFuncPtr(const char *funcName, const char *fallbackFuncName)
77 {
78  void* ptr = getGLExtensionFuncPtr(funcName);
79  return (ptr!=0) ? ptr : getGLExtensionFuncPtr(fallbackFuncName);
80 }
81 
87 inline void* getGLExtensionFuncPtr(const char *funcName1, const char *funcName2, const char *funcName3)
88 {
89  void* ptr = getGLExtensionFuncPtr(funcName1);
90  return (ptr!=0) ? ptr : getGLExtensionFuncPtr(funcName2, funcName3);
91 }
92 
93 template<typename T, typename R>
94 bool convertPointer(T& dest, R src)
95 {
96  memcpy(&dest, &src, sizeof(src));
97  return src!=0;
98 }
99 
100 template<typename T, typename R>
102 {
103  T dest;
104  memcpy(&dest, &src, sizeof(src));
105  return dest;
106 }
107 
108 template<typename T>
109 bool setGLExtensionFuncPtr(T& t, const char* str1)
110 {
112 }
113 
114 template<typename T>
115 bool setGLExtensionFuncPtr(T& t, const char* str1, const char* str2)
116 {
117  return convertPointer(t, osg::getGLExtensionFuncPtr(str1, str2));
118 }
119 
120 template<typename T>
121 bool setGLExtensionFuncPtr(T& t, const char* str1, const char* str2, const char* str3)
122 {
123  return convertPointer(t, osg::getGLExtensionFuncPtr(str1, str2, str3));
124 }
125 
128 {
129  public:
130  GLExtensions(unsigned int contextID);
131 
138  static GLExtensions* Get(unsigned int contextID,bool createIfNotInitalized);
139 
143  static void Set(unsigned int contextID, GLExtensions* extensions);
144 
145  // C++-friendly convenience wrapper methods
146  GLuint getCurrentProgram() const;
147  bool getProgramInfoLog( GLuint program, std::string& result ) const;
148  bool getShaderInfoLog( GLuint shader, std::string& result ) const;
149  bool getAttribLocation( const char* attribName, GLuint& slot ) const;
150  bool getFragDataLocation( const char* fragDataName, GLuint& slot) const;
151 
152 
153  float glVersion;
155 
171 
172  void (GL_APIENTRY * glDrawBuffers)(GLsizei n, const GLenum *bufs);
173  void (GL_APIENTRY * glAttachShader)(GLuint program, GLuint shader);
174  void (GL_APIENTRY * glBindAttribLocation)(GLuint program, GLuint index, const GLchar *name);
175  void (GL_APIENTRY * glCompileShader)(GLuint shader);
176  GLuint (GL_APIENTRY * glCreateProgram)(void);
177  GLuint (GL_APIENTRY * glCreateShader)(GLenum type);
178  void (GL_APIENTRY * glDeleteProgram)(GLuint program);
179  void (GL_APIENTRY * glDeleteObjectARB)(GLuint program);
180  void (GL_APIENTRY * glDeleteShader)(GLuint shader);
181  void (GL_APIENTRY * glDetachShader)(GLuint program, GLuint shader);
182  void (GL_APIENTRY * glDisableVertexAttribArray)(GLuint index);
183  void (GL_APIENTRY * glEnableVertexAttribArray)(GLuint index);
184  void (GL_APIENTRY * glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
185  void (GL_APIENTRY * glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
186  void (GL_APIENTRY * glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
187  GLint (GL_APIENTRY * glGetAttribLocation)(GLuint program, const GLchar *name);
188  void (GL_APIENTRY * glGetProgramiv)(GLuint program, GLenum pname, GLint *params);
189  void (GL_APIENTRY * glGetObjectParameterivARB)(GLuint program, GLenum pname, GLint *params);
190  void (GL_APIENTRY * glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
191  void (GL_APIENTRY * glGetInfoLogARB)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
192  void (GL_APIENTRY * glGetShaderiv)(GLuint shader, GLenum pname, GLint *params);
193  void (GL_APIENTRY * glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
194  void (GL_APIENTRY * glGetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
195  GLint (GL_APIENTRY * glGetUniformLocation)(GLuint program, const GLchar *name);
196  void (GL_APIENTRY * glGetUniformfv)(GLuint program, GLint location, GLfloat *params);
197  void (GL_APIENTRY * glGetUniformiv)(GLuint program, GLint location, GLint *params);
198  void (GL_APIENTRY * glGetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params);
199  void (GL_APIENTRY * glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params);
200  void (GL_APIENTRY * glGetVertexAttribiv)(GLuint index, GLenum pname, GLint *params);
201  void (GL_APIENTRY * glGetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid* *pointer);
202  GLboolean (GL_APIENTRY * glIsProgram)(GLuint program);
203  GLboolean (GL_APIENTRY * glIsShader)(GLuint shader);
204  void (GL_APIENTRY * glLinkProgram)(GLuint program);
205  void (GL_APIENTRY * glShaderSource)(GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
206  void (GL_APIENTRY * glUseProgram)(GLuint program);
207  void (GL_APIENTRY * glUniform1f)(GLint location, GLfloat v0);
208  void (GL_APIENTRY * glUniform2f)(GLint location, GLfloat v0, GLfloat v1);
209  void (GL_APIENTRY * glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
210  void (GL_APIENTRY * glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
211  void (GL_APIENTRY * glUniform1i)(GLint location, GLint v0);
212  void (GL_APIENTRY * glUniform2i)(GLint location, GLint v0, GLint v1);
213  void (GL_APIENTRY * glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2);
214  void (GL_APIENTRY * glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
215  void (GL_APIENTRY * glUniform1fv)(GLint location, GLsizei count, const GLfloat *value);
216  void (GL_APIENTRY * glUniform2fv)(GLint location, GLsizei count, const GLfloat *value);
217  void (GL_APIENTRY * glUniform3fv)(GLint location, GLsizei count, const GLfloat *value);
218  void (GL_APIENTRY * glUniform4fv)(GLint location, GLsizei count, const GLfloat *value);
219  void (GL_APIENTRY * glUniform1iv)(GLint location, GLsizei count, const GLint *value);
220  void (GL_APIENTRY * glUniform2iv)(GLint location, GLsizei count, const GLint *value);
221  void (GL_APIENTRY * glUniform3iv)(GLint location, GLsizei count, const GLint *value);
222  void (GL_APIENTRY * glUniform4iv)(GLint location, GLsizei count, const GLint *value);
223  void (GL_APIENTRY * glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
224  void (GL_APIENTRY * glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
225  void (GL_APIENTRY * glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
226  void (GL_APIENTRY * glValidateProgram)(GLuint program);
227  void (GL_APIENTRY * glVertexAttrib1d)(GLuint index, GLdouble x);
228  void (GL_APIENTRY * glVertexAttrib1dv)(GLuint index, const GLdouble *v);
229  void (GL_APIENTRY * glVertexAttrib1f)(GLuint index, GLfloat x);
230  void (GL_APIENTRY * glVertexAttrib1fv)(GLuint index, const GLfloat *v);
231  void (GL_APIENTRY * glVertexAttrib1s)(GLuint index, GLshort x);
232  void (GL_APIENTRY * glVertexAttrib1sv)(GLuint index, const GLshort *v);
233  void (GL_APIENTRY * glVertexAttrib2d)(GLuint index, GLdouble x, GLdouble y);
234  void (GL_APIENTRY * glVertexAttrib2dv)(GLuint index, const GLdouble *v);
235  void (GL_APIENTRY * glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y);
236  void (GL_APIENTRY * glVertexAttrib2fv)(GLuint index, const GLfloat *v);
237  void (GL_APIENTRY * glVertexAttrib2s)(GLuint index, GLshort x, GLshort y);
238  void (GL_APIENTRY * glVertexAttrib2sv)(GLuint index, const GLshort *v);
239  void (GL_APIENTRY * glVertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
240  void (GL_APIENTRY * glVertexAttrib3dv)(GLuint index, const GLdouble *v);
241  void (GL_APIENTRY * glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
242  void (GL_APIENTRY * glVertexAttrib3fv)(GLuint index, const GLfloat *v);
243  void (GL_APIENTRY * glVertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z);
244  void (GL_APIENTRY * glVertexAttrib3sv)(GLuint index, const GLshort *v);
245  void (GL_APIENTRY * glVertexAttrib4Nbv)(GLuint index, const GLbyte *v);
246  void (GL_APIENTRY * glVertexAttrib4Niv)(GLuint index, const GLint *v);
247  void (GL_APIENTRY * glVertexAttrib4Nsv)(GLuint index, const GLshort *v);
248  void (GL_APIENTRY * glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
249  void (GL_APIENTRY * glVertexAttrib4Nubv)(GLuint index, const GLubyte *v);
250  void (GL_APIENTRY * glVertexAttrib4Nuiv)(GLuint index, const GLuint *v);
251  void (GL_APIENTRY * glVertexAttrib4Nusv)(GLuint index, const GLushort *v);
252  void (GL_APIENTRY * glVertexAttrib4bv)(GLuint index, const GLbyte *v);
253  void (GL_APIENTRY * glVertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
254  void (GL_APIENTRY * glVertexAttrib4dv)(GLuint index, const GLdouble *v);
255  void (GL_APIENTRY * glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
256  void (GL_APIENTRY * glVertexAttrib4fv)(GLuint index, const GLfloat *v);
257  void (GL_APIENTRY * glVertexAttrib4iv)(GLuint index, const GLint *v);
258  void (GL_APIENTRY * glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
259  void (GL_APIENTRY * glVertexAttrib4sv)(GLuint index, const GLshort *v);
260  void (GL_APIENTRY * glVertexAttrib4ubv)(GLuint index, const GLubyte *v);
261  void (GL_APIENTRY * glVertexAttrib4uiv)(GLuint index, const GLuint *v);
262  void (GL_APIENTRY * glVertexAttrib4usv)(GLuint index, const GLushort *v);
263  void (GL_APIENTRY * glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
264  void (GL_APIENTRY * glVertexAttribDivisor)(GLuint index, GLuint divisor);
265  void (GL_APIENTRY * glUniformMatrix2x3fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value );
266  void (GL_APIENTRY * glUniformMatrix3x2fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value );
267  void (GL_APIENTRY * glUniformMatrix2x4fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value );
268  void (GL_APIENTRY * glUniformMatrix4x2fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value );
269  void (GL_APIENTRY * glUniformMatrix3x4fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value );
270  void (GL_APIENTRY * glUniformMatrix4x3fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value );
271  void (GL_APIENTRY * glClipControl)( GLenum origin, GLenum depthMode );
272  void (GL_APIENTRY * glProgramParameteri)( GLuint program, GLenum pname, GLint value );
273  void (GL_APIENTRY * glPatchParameteri)( GLenum pname, GLint value );
274  void (GL_APIENTRY * glPatchParameterfv)( GLenum pname, const GLfloat* values );
275  void (GL_APIENTRY * glGetUniformuiv)( GLuint program, GLint location, GLuint* params );
276  void (GL_APIENTRY * glBindFragDataLocation)( GLuint program, GLuint color, const GLchar* name );
277  GLint (GL_APIENTRY * glGetFragDataLocation)( GLuint program, const GLchar* name );
278  void (GL_APIENTRY * glUniform1ui)( GLint location, GLuint v0 );
279  void (GL_APIENTRY * glUniform2ui)( GLint location, GLuint v0, GLuint v1 );
280  void (GL_APIENTRY * glUniform3ui)( GLint location, GLuint v0, GLuint v1, GLuint v2 );
281  void (GL_APIENTRY * glUniform4ui)( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 );
282  void (GL_APIENTRY * glUniform1uiv)( GLint location, GLsizei count, const GLuint *value );
283  void (GL_APIENTRY * glUniform2uiv)( GLint location, GLsizei count, const GLuint *value );
284  void (GL_APIENTRY * glUniform3uiv)( GLint location, GLsizei count, const GLuint *value );
285  void (GL_APIENTRY * glUniform4uiv)( GLint location, GLsizei count, const GLuint *value );
286  GLuint (GL_APIENTRY * glGetHandleARB) (GLenum pname);
287  void (GL_APIENTRY * glGetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
288  void (GL_APIENTRY * glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
289  void (GL_APIENTRY * glGetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
290  GLuint (GL_APIENTRY * glGetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName);
291  void (GL_APIENTRY * glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
292  void (GL_APIENTRY * glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
293  void (GL_APIENTRY * glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
294  void (GL_APIENTRY * glGetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
295  void (GL_APIENTRY * glProgramBinary)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
296  void (GL_APIENTRY * glUniform1d)(GLint location, GLdouble v0);
297  void (GL_APIENTRY * glUniform2d)(GLint location, GLdouble v0, GLdouble v1);
298  void (GL_APIENTRY * glUniform3d)(GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
299  void (GL_APIENTRY * glUniform4d)(GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
300  void (GL_APIENTRY * glUniform1dv)(GLint location, GLsizei count, const GLdouble *value);
301  void (GL_APIENTRY * glUniform2dv)(GLint location, GLsizei count, const GLdouble *value);
302  void (GL_APIENTRY * glUniform3dv)(GLint location, GLsizei count, const GLdouble *value);
303  void (GL_APIENTRY * glUniform4dv)(GLint location, GLsizei count, const GLdouble *value);
304  void (GL_APIENTRY * glUniformMatrix2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
305  void (GL_APIENTRY * glUniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
306  void (GL_APIENTRY * glUniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
307  void (GL_APIENTRY * glUniformMatrix2x3dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble* value );
308  void (GL_APIENTRY * glUniformMatrix3x2dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble* value );
309  void (GL_APIENTRY * glUniformMatrix2x4dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble* value );
310  void (GL_APIENTRY * glUniformMatrix4x2dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble* value );
311  void (GL_APIENTRY * glUniformMatrix3x4dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble* value );
312  void (GL_APIENTRY * glUniformMatrix4x3dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble* value );
313  void (GL_APIENTRY * glGetActiveAtomicCounterBufferiv)( GLuint program, GLuint bufferIndex, GLenum pname, GLint* params );
314  void (GL_APIENTRY * glDispatchCompute)( GLuint numGroupsX, GLuint numGroupsY, GLuint numGroupsZ );
315 
316  // Buffer Object extensions
322 
323  void (GL_APIENTRY * glGenBuffers) (GLsizei n, GLuint *buffers);
324  void (GL_APIENTRY * glBindBuffer) (GLenum target, GLuint buffer);
325  void (GL_APIENTRY * glBufferData) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
326  void (GL_APIENTRY * glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
327  void (GL_APIENTRY * glDeleteBuffers) (GLsizei n, const GLuint *buffers);
328  GLboolean (GL_APIENTRY * glIsBuffer) (GLuint buffer);
329  void (GL_APIENTRY * glGetBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
330  GLvoid* (GL_APIENTRY * glMapBuffer) (GLenum target, GLenum access);
331  GLvoid* (GL_APIENTRY * glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
332  GLboolean (GL_APIENTRY * glUnmapBuffer) (GLenum target);
333  void (GL_APIENTRY * glGetBufferParameteriv) (GLenum target, GLenum pname, GLint *params);
334  void (GL_APIENTRY * glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid* *params);
335  void (GL_APIENTRY * glBindBufferRange) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
336  void (GL_APIENTRY * glBindBufferBase) (GLenum target, GLuint index, GLuint buffer);
337  void (GL_APIENTRY * glTexBuffer) (GLenum target, GLenum internalFormat, GLuint buffer);
338 
339  void (GL_APIENTRY * glMemoryBarrier)( GLbitfield barriers );
340 
341  // BlendFunc extensions
343  void (GL_APIENTRY * glBlendFuncSeparate) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) ;
344 
345  void (GL_APIENTRY * glBlendFunci) (GLuint buf, GLenum src, GLenum dst);
346  void (GL_APIENTRY * glBlendFuncSeparatei) (GLuint buf, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) ;
347 
348 
349  // Vertex Array extensions
357 
358  void (GL_APIENTRY * glSecondaryColor3ubv) (const GLubyte* coord);
359  void (GL_APIENTRY * glSecondaryColor3fv) (const GLfloat* coord);
360 
361  void (GL_APIENTRY * glFogCoordfv) (const GLfloat* coord);
362 
363  void (GL_APIENTRY * glMultiTexCoord1f) (GLenum target,GLfloat coord);
364  void (GL_APIENTRY * glMultiTexCoord1fv) (GLenum target,const GLfloat* coord);
365  void (GL_APIENTRY * glMultiTexCoord2fv) (GLenum target,const GLfloat* coord);
366  void (GL_APIENTRY * glMultiTexCoord3fv) (GLenum target,const GLfloat* coord);
367  void (GL_APIENTRY * glMultiTexCoord4fv) (GLenum target,const GLfloat* coord);
368 
369  void (GL_APIENTRY * glMultiTexCoord1d) (GLenum target,GLdouble coord);
370  void (GL_APIENTRY * glMultiTexCoord1dv) (GLenum target,const GLdouble* coord);
371  void (GL_APIENTRY * glMultiTexCoord2dv) (GLenum target,const GLdouble* coord);
372  void (GL_APIENTRY * glMultiTexCoord3dv) (GLenum target,const GLdouble* coord);
373  void (GL_APIENTRY * glMultiTexCoord4dv) (GLenum target,const GLdouble* coord);
374 
375  // Occlusion Query extensions
376  void (GL_APIENTRY * glGenOcclusionQueries) ( GLsizei n, GLuint *ids );
377  void (GL_APIENTRY * glDeleteOcclusionQueries) ( GLsizei n, const GLuint *ids );
378  GLboolean (GL_APIENTRY * glIsOcclusionQuery) ( GLuint id );
379  void (GL_APIENTRY * glBeginOcclusionQuery) ( GLuint id );
380  void (GL_APIENTRY * glEndOcclusionQuery) ();
381  void (GL_APIENTRY * glGetOcclusionQueryiv) ( GLuint id, GLenum pname, GLint *params );
382  void (GL_APIENTRY * glGetOcclusionQueryuiv) ( GLuint id, GLenum pname, GLuint *params );
383 
384  void (GL_APIENTRY * glGetQueryiv) (GLenum target, GLenum pname, GLint *params);
385  void (GL_APIENTRY * glGenQueries) (GLsizei n, GLuint *ids);
386  void (GL_APIENTRY * glBeginQuery) (GLenum target, GLuint id);
387  void (GL_APIENTRY * glEndQuery) (GLenum target);
388  void (GL_APIENTRY * glQueryCounter) (GLuint id, GLenum target);
389  GLboolean (GL_APIENTRY * glIsQuery) (GLuint id);
390  void (GL_APIENTRY * glDeleteQueries) (GLsizei n, const GLuint *ids);
391  void (GL_APIENTRY * glGetQueryObjectiv) (GLuint id, GLenum pname, GLint *params);
392  void (GL_APIENTRY * glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint *params);
393  void (GL_APIENTRY * glGetQueryObjectui64v) (GLuint id, GLenum pname, GLuint64 *params);
394  void (GL_APIENTRY * glGetInteger64v) (GLenum pname, GLint64 *params);
395 
396 
397  // SampleMaski functionality
401 
402  void (GL_APIENTRY * glSampleMaski) (GLuint maskNumber, GLbitfield mask);
403 
404  // Vertex/Fragment Programs
407 
408  void (GL_APIENTRY * glBindProgram) (GLenum target, GLuint id);
409  void (GL_APIENTRY * glGenPrograms) (GLsizei n, GLuint *programs);
410  void (GL_APIENTRY * glDeletePrograms) (GLsizei n, GLuint *programs);
411  void (GL_APIENTRY * glProgramString) (GLenum target, GLenum format, GLsizei len, const void *string);
412  void (GL_APIENTRY * glProgramLocalParameter4fv) (GLenum target, GLuint index, const GLfloat *params);
413 
414 
415  // Texture Extensions
441 
442  bool isTexStorage2DSupported() const { return glTexStorage2D != 0; }
443  bool isCompressedTexImage2DSupported() const { return glCompressedTexImage2D!=0; }
444  bool isCompressedTexSubImage2DSupported() const { return glCompressedTexSubImage2D!=0; }
445  bool isBindImageTextureSupported() const { return glBindImageTexture!=0; }
448  bool isNonPowerOfTwoTextureSupported(GLenum filter) const
449  {
450  return (filter==GL_LINEAR || filter==GL_NEAREST) ?
451  isNonPowerOfTwoTextureNonMipMappedSupported :
452  isNonPowerOfTwoTextureMipMappedSupported;
453  }
454 
455  void (GL_APIENTRY * glTexStorage2D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
456  void (GL_APIENTRY * glCompressedTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
457  void (GL_APIENTRY * glCompressedTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
458  void (GL_APIENTRY * glGetCompressedTexImage) (GLenum target, GLint level, GLvoid *data);
459  void (GL_APIENTRY * glTexImage2DMultisample) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
460  void (GL_APIENTRY * glTexParameterIiv) (GLenum target, GLenum pname, const GLint* data);
461  void (GL_APIENTRY * glTexParameterIuiv) (GLenum target, GLenum pname, const GLuint* data);
462  void (GL_APIENTRY * glBindImageTexture) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
463 
464  // Texture3D extensions
468  bool isCompressedTexImage3DSupported() const { return glCompressedTexImage3D!=0; }
469  bool isCompressedTexSubImage3DSupported() const { return glCompressedTexSubImage3D!=0; }
470 
471  void (GL_APIENTRY * glTexImage3D) ( GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
472  void (GL_APIENTRY * glTexSubImage3D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
473  void (GL_APIENTRY * glCopyTexSubImage3D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height );
474  void (GL_APIENTRY * glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
475  void (GL_APIENTRY * glCompressedTexSubImage3D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
476 
477  // Texture2DArray extensions
480  GLint max2DSize;
481 
482 
483  // Blending
489 
490  void (GL_APIENTRY * glBlendColor) (GLclampf red , GLclampf green , GLclampf blue , GLclampf alpha);
491  void (GL_APIENTRY * glBlendEquation)(GLenum mode);
492  void (GL_APIENTRY * glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha);
493  void (GL_APIENTRY * glBlendEquationi)(GLuint buf, GLenum mode);
494  void (GL_APIENTRY * glBlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
495 
496 
497  // glEnablei/glDisabeli
498  void (GL_APIENTRY * glEnablei) (GLenum capability, GLuint buf);
499  void (GL_APIENTRY * glDisablei) (GLenum capability, GLuint buf);
500 
501 
502  // Stencil
507 
508  void (GL_APIENTRY * glActiveStencilFace) (GLenum face);
509  void (GL_APIENTRY * glStencilOpSeparate) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
510  void (GL_APIENTRY * glStencilMaskSeparate) (GLenum face, GLuint mask);
511  void (GL_APIENTRY * glStencilFuncSeparate) (GLenum face, GLenum func, GLint ref, GLuint mask);
512  void (GL_APIENTRY * glStencilFuncSeparateATI) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
513 
514 
515  // ColorMask
516  void (GL_APIENTRY * glColorMaski)(GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
517 
518 
519  // ClampColor
521  void (GL_APIENTRY * glClampColor) (GLenum target, GLenum mode);
522 
523 
524  // PrimitiveRestartIndex
525  void (GL_APIENTRY * glPrimitiveRestartIndex) ( GLuint index );
526 
527 
528  // Mutlisample
531 
532  void (GL_APIENTRY * glSampleCoverage) (GLclampf value, GLboolean invert);
533 
534 
535  // Point
539 
540  void (GL_APIENTRY * glPointParameteri) (GLenum pname, GLint param);
541  void (GL_APIENTRY * glPointParameterf) (GLenum pname, GLfloat param);
542  void (GL_APIENTRY * glPointParameterfv) (GLenum pname, const GLfloat *params);
543 
544 
545  // FrameBuferObject
548  bool isRenderbufferMultisampleSupported() const { return glRenderbufferStorageMultisample != 0; }
549  bool isRenderbufferMultisampleCoverageSupported() const { return glRenderbufferStorageMultisampleCoverageNV != 0; }
550 
551  void (GL_APIENTRY * glBindRenderbuffer) (GLenum, GLuint);
552  void (GL_APIENTRY * glDeleteRenderbuffers) (GLsizei n, const GLuint *renderbuffers);
553  void (GL_APIENTRY * glGenRenderbuffers) (GLsizei, GLuint *);
554  void (GL_APIENTRY * glRenderbufferStorage) (GLenum, GLenum, GLsizei, GLsizei);
555  void (GL_APIENTRY * glRenderbufferStorageMultisample) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
556  void (GL_APIENTRY * glRenderbufferStorageMultisampleCoverageNV) (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
557  void (GL_APIENTRY * glBindFramebuffer) (GLenum, GLuint);
558  void (GL_APIENTRY * glDeleteFramebuffers) (GLsizei n, const GLuint *framebuffers);
559  void (GL_APIENTRY * glGenFramebuffers) (GLsizei, GLuint *);
560  GLenum (GL_APIENTRY * glCheckFramebufferStatus) (GLenum);
561 
562  void (GL_APIENTRY * glFramebufferTexture1D) (GLenum, GLenum, GLenum, GLuint, GLint);
563  void (GL_APIENTRY * glFramebufferTexture2D) (GLenum, GLenum, GLenum, GLuint, GLint);
564  void (GL_APIENTRY * glFramebufferTexture3D) (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
565  void (GL_APIENTRY * glFramebufferTexture) (GLenum, GLenum, GLint, GLint);
566  void (GL_APIENTRY * glFramebufferTextureLayer) (GLenum, GLenum, GLuint, GLint, GLint);
567  void (GL_APIENTRY * glFramebufferTextureFace)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face );
568  void (GL_APIENTRY * glFramebufferRenderbuffer) (GLenum, GLenum, GLenum, GLuint);
569 
570  void (GL_APIENTRY * glGenerateMipmap) (GLenum);
571  void (GL_APIENTRY * glBlitFramebuffer) (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
572  void (GL_APIENTRY * glGetRenderbufferParameteriv) (GLenum, GLenum, GLint*);
573 
574 
575  // Sync
576  GLsync (GL_APIENTRY * glFenceSync) (GLenum condition, GLbitfield flags);
577  GLboolean (GL_APIENTRY * glIsSync) (GLsync sync);
578  void (GL_APIENTRY * glDeleteSync) (GLsync sync);
579  GLenum (GL_APIENTRY * glClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);
580  void (GL_APIENTRY * glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);
581  void (GL_APIENTRY * glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
582 
583 
584  // Transform feedback
585  void (GL_APIENTRY * glBeginTransformFeedback) (GLenum primitiveMode);
586  void (GL_APIENTRY * glEndTransformFeedback) (void);
587  void (GL_APIENTRY * glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
588  void (GL_APIENTRY * glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
589  void (GL_APIENTRY * glBindTransformFeedback) (GLenum target, GLuint id);
590  void (GL_APIENTRY * glDeleteTransformFeedbacks) (GLsizei n, const GLuint *ids);
591  void (GL_APIENTRY * glGenTransformFeedbacks) (GLsizei n, GLuint *ids);
592  GLboolean (GL_APIENTRY * glIsTransformFeedback) (GLuint id);
593  void (GL_APIENTRY * glPauseTransformFeedback) (void);
594  void (GL_APIENTRY * glResumeTransformFeedback) (void);
595  void (GL_APIENTRY * glDrawTransformFeedback) (GLenum mode, GLuint id);
596  void (GL_APIENTRY * glDrawTransformFeedbackStream) (GLenum mode, GLuint id, GLuint stream);
597  void (GL_APIENTRY * glDrawTransformFeedbackInstanced) (GLenum mode, GLuint id, GLsizei instancecount);
598  void (GL_APIENTRY * glDrawTransformFeedbackStreamInstanced) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
599  void (GL_APIENTRY * glCreateTransformFeedbacks) (GLsizei n, GLuint *ids);
600  void (GL_APIENTRY * glTransformFeedbackBufferBase) (GLuint xfb, GLuint index, GLuint buffer);
601  void (GL_APIENTRY * glTransformFeedbackBufferRange) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size);
602  void (GL_APIENTRY * glGetTransformFeedbackiv) (GLuint xfb, GLenum pname, GLint *param);
603  void (GL_APIENTRY * glGetTransformFeedbacki_v) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
604  void (GL_APIENTRY * glGetTransformFeedbacki64_v) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
605 
606  // Vertex Array Object
607  void (GL_APIENTRY * glDeleteVertexArrays) (GLsizei size,const GLuint *handles);
608  void (GL_APIENTRY * glGenVertexArrays) (GLsizei size, GLuint *handles);
609  GLboolean (GL_APIENTRY * glIsVertexArray) (GLuint handle);
610  void (GL_APIENTRY * glBindVertexArray) (GLuint handle);
611 
612 };
613 
614 
615 }
616 
617 #endif
bool isTextureMultisampleSupported
Definition: GLExtensions.h:399
bool isTextureCompressionPVRTC4BPPSupported
Definition: GLExtensions.h:422
bool isSecondaryColorSupported
Definition: GLExtensions.h:350
#define OSG_EXPORT
Definition: Export.h:43
char GLchar
Definition: GLDefines.h:45
GLint GLint GLint v2
Definition: GLExtensions.h:213
OSG_EXPORT void setGLExtensionDisableString(const std::string &disableString)
GLenum GLint value
Definition: GLExtensions.h:272
GLenum GLsizei const void * string
Definition: GLExtensions.h:411
const GLdouble * coord
Definition: GLExtensions.h:370
bool isTextureIntegerEXTSupported
Definition: GLExtensions.h:439
GLenum GLdouble * params
Definition: GLExtensions.h:198
GLuint uniformBlockIndex
Definition: GLExtensions.h:291
GLintptr GLsizeiptr GLvoid * data
Definition: GLExtensions.h:329
bool isTextureCompressionPVRTC2BPPSupported
Definition: GLExtensions.h:421
GLdouble GLdouble GLdouble z
Definition: GLExtensions.h:239
const GLfloat * v
Definition: GLExtensions.h:230
GLsizei const GLchar *const * varyings
Definition: GLExtensions.h:587
GLint GLenum internalFormat
Definition: GLU.h:71
const GLushort * v
Definition: GLExtensions.h:251
GLsizei const GLuint * uniformIndices
Definition: GLExtensions.h:288
bool isNonPowerOfTwoTextureSupported(GLenum filter) const
Definition: GLExtensions.h:448
bool isTransformFeedbackSupported
Definition: GLExtensions.h:321
bool isMultisampleFilterHintSupported
Definition: GLExtensions.h:530
GLenum GLvoid ** pointer
Definition: GLExtensions.h:201
bool areTessellationShadersSupported
Definition: GLExtensions.h:162
GLint GLenum GLsizei width
Definition: GLExtensions.h:456
GLint GLenum GLsizei GLsizei GLsizei depth
Definition: GLU.h:71
bool isFragmentShaderSupported
Definition: GLExtensions.h:159
GLsizei GLsizei GLenum * binaryFormat
Definition: GLExtensions.h:294
GLdouble GLdouble y
Definition: GLExtensions.h:233
GLint GLenum type
Definition: GLExtensions.h:263
bool isTextureCompressionS3TCSupported
Definition: GLExtensions.h:420
GLdouble GLdouble GLdouble GLdouble w
Definition: GLExtensions.h:253
const GLfloat * values
Definition: GLExtensions.h:274
GLint GLint GLint GLint zoffset
Definition: GLExtensions.h:472
ptrdiff_t GLsizeiptr
Definition: GLDefines.h:621
GLenum const GLint * data
Definition: GLExtensions.h:460
const GLfloat * coord
Definition: GLExtensions.h:364
GLenum GLuint GLint * param
Definition: GLExtensions.h:603
bool isRenderbufferMultisampleSupported() const
Definition: GLExtensions.h:548
GLfloat GLfloat GLfloat GLfloat v3
Definition: GLExtensions.h:210
GLfloat GLfloat GLfloat GLfloat w
Definition: GLExtensions.h:255
const GLuint * v
Definition: GLExtensions.h:250
const GLbyte * v
Definition: GLExtensions.h:245
bool isTextureStorageEnabled
Definition: GLExtensions.h:440
bool isTextureFilterAnisotropicSupported
Definition: GLExtensions.h:417
bool setGLExtensionFuncPtr(T &t, const char *str1)
Definition: GLExtensions.h:109
bool isPackedDepthStencilSupported
Definition: GLExtensions.h:547
GLenum const GLvoid GLsizei length
Definition: GLExtensions.h:295
GLbitfield GLuint64 timeout
Definition: GLExtensions.h:579
bool isNonPowerOfTwoTextureMipMappedSupported
Definition: GLExtensions.h:446
GLint GLuint * params
Definition: GLExtensions.h:275
bool isTextureCompressionPVRTCSupported
Definition: GLExtensions.h:426
bool isRenderbufferMultisampleCoverageSupported() const
Definition: GLExtensions.h:549
GLuint GLuint uniformBlockBinding
Definition: GLExtensions.h:293
OSG_EXPORT std::string & getGLExtensionDisableString()
GLuint GLuint numGroupsZ
Definition: GLExtensions.h:314
bool isCompressedTexSubImage3DSupported() const
Definition: GLExtensions.h:469
bool isBlendFuncSeparateSupported
Definition: GLExtensions.h:342
GLint GLint GLint GLint GLsizei GLsizei GLsizei GLenum GLsizei imageSize
Definition: GLExtensions.h:475
GLshort GLshort GLshort GLshort w
Definition: GLExtensions.h:258
GLint GLvoid * data
Definition: GLExtensions.h:458
bool isBufferObjectSupported
Definition: GLExtensions.h:317
bool isTextureMultisampledSupported
Definition: GLExtensions.h:432
bool isMultiTexturingSupported
Definition: GLExtensions.h:416
bool isTextureCompressionETC2Supported
Definition: GLExtensions.h:424
GLsizei const GLdouble * value
Definition: GLExtensions.h:300
OSG_EXPORT void * getGLExtensionFuncPtr(const char *funcName)
GLuint GLuint GLsizei instancecount
Definition: GLExtensions.h:598
GLenum GLint ref
Definition: GLExtensions.h:511
bool isTexStorage2DSupported() const
Definition: GLExtensions.h:442
GLuint const GLchar * name
Definition: GLExtensions.h:174
GLintptr GLsizeiptr size
Definition: GLExtensions.h:326
bool isClientStorageSupported
Definition: GLExtensions.h:438
GLsizei GLenum GLsizei width
Definition: GLExtensions.h:455
GLint GLenum GLsizei width
Definition: GLU.h:71
GLuint GLuint stream
Definition: GLExtensions.h:596
T convertPointerType(R src)
Definition: GLExtensions.h:101
GLsizei const GLchar ** uniformNames
Definition: GLExtensions.h:287
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei imageSize
Definition: GLExtensions.h:474
GLenum GLuint64 * params
Definition: GLExtensions.h:393
bool isBlendEquationSupported
Definition: GLExtensions.h:485
bool isTextureCompressionARBSupported
Definition: GLExtensions.h:419
bool isBindImageTextureSupported() const
Definition: GLExtensions.h:445
double GLdouble
Definition: GL.h:159
GLsizei GLint GLsizei width
Definition: GLExtensions.h:459
typedef void(GL_APIENTRY *GLTexImage3DProc)(GLenum target
GLenum GLsizei GLsizei GLint * values
Definition: GLExtensions.h:581
GLuint GLuint GLintptr GLsizei size
Definition: GLExtensions.h:601
const GLuint * renderbuffers
Definition: GLExtensions.h:552
GLuint GLuint GLuint GLuint v3
Definition: GLExtensions.h:281
bool isTextureCompressionETCSupported
Definition: GLExtensions.h:423
GLsizei GLsizei GLchar * source
Definition: GLExtensions.h:194
GLenum GLvoid ** params
Definition: GLExtensions.h:334
bool isUniformBufferObjectSupported
Definition: GLExtensions.h:164
GLint GLint GLint GLint GLint GLint y
Definition: GLExtensions.h:473
bool isFrameBufferObjectSupported
Definition: GLExtensions.h:546
bool isShaderAtomicCountersSupported
Definition: GLExtensions.h:167
OSG_EXPORT bool isGLExtensionSupported(unsigned int contextID, const char *extension)
GLint GLint v1
Definition: GLExtensions.h:212
const GLuint * handles
Definition: GLExtensions.h:607
bool isCompressedTexSubImage2DSupported() const
Definition: GLExtensions.h:444
GLint GLfloat * params
Definition: GLExtensions.h:196
const GLuint * buffers
Definition: GLExtensions.h:327
GLuint GLsizei GLsizei GLsizei GLenum * type
Definition: GLExtensions.h:588
bool isGeometryShader4Supported
Definition: GLExtensions.h:161
bool isSeparateStencilSupported
Definition: GLExtensions.h:506
bool isTextureBorderClampSupported
Definition: GLExtensions.h:429
OSG_EXPORT bool isExtensionInExtensionString(const char *extension, const char *extensionString)
const GLint * v
Definition: GLExtensions.h:246
GLsizei GLboolean const GLfloat * value
Definition: GLExtensions.h:223
bool preferGenerateMipmapSGISForPowerOfTwo
Definition: GLExtensions.h:431
const GLenum * bufs
Definition: GLExtensions.h:172
GLuint GLuint GLuint v2
Definition: GLExtensions.h:280
GLuint GLsizei GLsizei GLchar * uniformName
Definition: GLExtensions.h:289
bool isTextureCompressionRGTCSupported
Definition: GLExtensions.h:425
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: GLU.h:71
GLint GLint GLint GLint v3
Definition: GLExtensions.h:214
GLenum GLuint GLint64 * param
Definition: GLExtensions.h:604
GLint level
Definition: GLU.h:71
bool isOcclusionQuerySupported
Definition: GLExtensions.h:353
bool isVertexShaderSupported
Definition: GLExtensions.h:158
bool isGenerateMipMapSupported
Definition: GLExtensions.h:430
GLint GLenum GLsizei GLsizei height
Definition: GLU.h:71
const GLchar * name
Definition: GLExtensions.h:187
GLfloat GLfloat GLfloat v2
Definition: GLExtensions.h:209
bool convertPointer(T &dest, R src)
Definition: GLExtensions.h:94
bool isARBTimerQuerySupported
Definition: GLExtensions.h:356
const GLubyte * v
Definition: GLExtensions.h:249
bool isCompressedTexImage3DSupported() const
Definition: GLExtensions.h:468
GLenum GLint * param
Definition: GLExtensions.h:602
GLuint const GLfloat * params
Definition: GLExtensions.h:412
#define GL_APIENTRY
Definition: GL.h:118
bool isARBOcclusionQuerySupported
Definition: GLExtensions.h:354
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: GLExtensions.h:471
GLubyte GLubyte GLubyte z
Definition: GLExtensions.h:248
bool isTextureMirroredRepeatSupported
Definition: GLExtensions.h:427
GLsizei const GLfloat * value
Definition: GLExtensions.h:215
bool isVertexProgramSupported
Definition: GLExtensions.h:405
GLuint GLuint v1
Definition: GLExtensions.h:279
bool isTexture2DArraySupported
Definition: GLExtensions.h:478
const GLuint * ids
Definition: GLExtensions.h:377
GLenum const GLuint * data
Definition: GLExtensions.h:461
ptrdiff_t GLintptr
Definition: GLDefines.h:622
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: GLU.h:71
bool isFragmentProgramSupported
Definition: GLExtensions.h:406
GLsizei const GLchar ** string
Definition: GLExtensions.h:205
const GLchar * uniformBlockName
Definition: GLExtensions.h:290
bool isTextureMaxLevelSupported
Definition: GLExtensions.h:435
bool isPointParametersSupported
Definition: GLExtensions.h:536
Definition: AlphaFunc.h:19
const GLshort * v
Definition: GLExtensions.h:232
bool isGpuShaderFp64Supported
Definition: GLExtensions.h:166
GLenum GLenum sfactorAlpha
Definition: GLExtensions.h:343
GLsizeiptr const GLvoid GLenum usage
Definition: GLExtensions.h:325
bool _isTextureStorageEnabled
Definition: GLExtensions.h:437
GLsizei const GLuint * value
Definition: GLExtensions.h:282
bool isPointSpriteCoordOriginSupported
Definition: GLExtensions.h:538
GLfloat GLfloat GLfloat z
Definition: GLExtensions.h:241
bool isCompressedTexImage2DSupported() const
Definition: GLExtensions.h:443
bool isShaderObjectsSupported
Definition: GLExtensions.h:157
GLsizei const GLint * value
Definition: GLExtensions.h:219
GLdouble GLdouble GLdouble GLdouble v3
Definition: GLExtensions.h:299
GLsizei GLsizei GLuint * obj
Definition: GLExtensions.h:186
bool isTextureSwizzleSupported
Definition: GLExtensions.h:418
GLint GLenum GLsizei GLsizei GLsizei GLint border
Definition: GLU.h:71
GLsizei GLboolean const GLdouble * value
Definition: GLExtensions.h:304
bool isShadowAmbientSupported
Definition: GLExtensions.h:434
GLfloat GLfloat v1
Definition: GLExtensions.h:208
bool isNonPowerOfTwoTextureNonMipMappedSupported
Definition: GLExtensions.h:447
GLint GLint GLint yoffset
Definition: GLExtensions.h:457
GLuint GLsizei GLsizei GLchar * uniformBlockName
Definition: GLExtensions.h:292
OSG_EXPORT bool isGLExtensionOrVersionSupported(unsigned int contextID, const char *extension, float requiredGlVersion)
GLenum GLfloat * params
Definition: GLExtensions.h:199
GLuint GLsizei GLsizei GLint GLenum * type
Definition: GLExtensions.h:184
GLfloat GLfloat y
Definition: GLExtensions.h:235
const GLdouble * v
Definition: GLExtensions.h:228
GLenum GLuint * params
Definition: GLExtensions.h:382
bool isGetProgramBinarySupported
Definition: GLExtensions.h:165
struct __GLsync * GLsync
Definition: GLDefines.h:610
const GLfloat * params
Definition: GLExtensions.h:542
GLsizei GLsizei * length
Definition: GLExtensions.h:190
GLint GLbitfield flags
Definition: GLExtensions.h:576
GLint GLint * params
Definition: GLExtensions.h:197
bool isTextureEdgeClampSupported
Definition: GLExtensions.h:428
bool isStencilTwoSidedSupported
Definition: GLExtensions.h:504
OSG_EXPORT float getGLVersionNumber()
GLenum GLuint texture
Definition: GLExtensions.h:567
bool isBlendEquationSeparateSupported
Definition: GLExtensions.h:486
const GLuint * framebuffers
Definition: GLExtensions.h:558
GLuint GLuint GLintptr GLsizeiptr size
Definition: GLExtensions.h:335
GLuint GLsizei instancecount
Definition: GLExtensions.h:597
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format
Definition: GLU.h:71