HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RE_OGLExt.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: RE_OGLExt.h (C++)
7  *
8  * COMMENTS: Cross-platform wrapper for OpenGL extensions
9  *
10  */
11 
12 #ifndef __RE_OGLExt_h__
13 #define __RE_OGLExt_h__
14 
15 #include <UT/UT_Assert.h>
16 #include "RE_API.h"
17 #include "RE_OGL.h"
18 #include "RE_Extension.h"
19 
20 class UT_StringSet;
21 class UT_String;
22 class re_ExtData;
23 
25 {
26 public:
27  RE_OGLExt();
28  ~RE_OGLExt();
29 
30  // NB: You must have a valid OpenGL context set before calling initialize()
31  // initialize() must be called at least once before using anything else
32  void initialize();
33 
34 
36  {
37  UT_ASSERT( theInitializedOnce && myExtensions );
38  return (myExtensions[ext]);
39  }
40 
41  // returns true if the
42  bool hasExtensionName( const char *ext_name );
43 
44  // returns true if Houdini uses this GL extension in some way.
45  bool usesExtension( const char *glextname);
46 
47  // Returns the GL extension(s) that make up Houdini extension 'hou_ext'.
48  int getNumGLExtensionsRequired(RE_Extension ext);
49  void getGLExtensionRequired(RE_Extension hou_ext, int index,
50  UT_String &glext);
51 
52  // Returns the core OpenGL version that this extension was rolled into.
53  // If it is still not part of the core, false is returned.
54  bool getCoreVersion(RE_Extension ext,
55  int &glmajor, int &glminor) const;
56 
57  //
58  // These function pointer names should be copied out of glext.h and into
59  // RE_OGL.h, prefixed with an 'RE_'. Use RE_ versions in this file.
60  // Note that some GL types have been typedef-ed to RE_<type>, such as
61  // RE_GLchar and RE_GLintptrARB - see the top of the RE_OGL.h header.
62  // All GL_* defines for the extension must be copied into RE_OGL.h.
63  //
64 
65  // RE_EXT_BLEND_COLOR
66  PFNGLBLENDCOLORPROC glBlendColor;
67 
68  // RE_EXT_BLEND_MINMAX
69  PFNGLBLENDEQUATIONPROC glBlendEquation;
70 
71  // RE_EXT_BLEND_SEPARATE
72  PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
73 
74  // RE_EXT_TEXTURE_3D
75  PFNGLTEXIMAGE3DPROC glTexImage3D;
76  PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
77  PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
78 
79  // RE_EXT_MULTI_TEXTURE
80  PFNGLACTIVETEXTUREPROC glActiveTexture;
81 
82  // RE_EXT_SHADERS
83  PFNGLATTACHSHADERPROC glAttachShader;
84  PFNGLCREATEPROGRAMPROC glCreateProgram;
85  PFNGLCREATESHADERPROC glCreateShader;
86  PFNGLDELETEPROGRAMPROC glDeleteProgram;
87  PFNGLDELETESHADERPROC glDeleteShader;
88  PFNGLDETACHSHADERPROC glDetachShader;
89  PFNGLUSEPROGRAMPROC glUseProgram;
90  PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
91  PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
92  PFNGLISPROGRAMPROC glIsProgram;
93  PFNGLSHADERSOURCEPROC glShaderSource;
94  PFNGLCOMPILESHADERPROC glCompileShader;
95  PFNGLLINKPROGRAMPROC glLinkProgram;
96  PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
97  PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
98  PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
99  PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
100  PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
101  PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
102  PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
103  PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
104  PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv;
105  PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv;
106  PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv;
107  PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv;
108  PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
109  PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
110  PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
111  PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
112  PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
113  PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
114  PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
115  PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
116  PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
117  PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
118  PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
119  PFNGLUNIFORM1FVPROC glUniform1fv;
120  PFNGLUNIFORM2FVPROC glUniform2fv;
121  PFNGLUNIFORM3FVPROC glUniform3fv;
122  PFNGLUNIFORM4FVPROC glUniform4fv;
123  PFNGLUNIFORM1DVPROC glUniform1dv;
124  PFNGLUNIFORM2DVPROC glUniform2dv;
125  PFNGLUNIFORM3DVPROC glUniform3dv;
126  PFNGLUNIFORM4DVPROC glUniform4dv;
127  PFNGLUNIFORM1FPROC glUniform1f;
128  PFNGLUNIFORM2FPROC glUniform2f;
129  PFNGLUNIFORM3FPROC glUniform3f;
130  PFNGLUNIFORM4FPROC glUniform4f;
131  PFNGLUNIFORM1IVPROC glUniform1iv;
132  PFNGLUNIFORM2IVPROC glUniform2iv;
133  PFNGLUNIFORM3IVPROC glUniform3iv;
134  PFNGLUNIFORM4IVPROC glUniform4iv;
135  PFNGLUNIFORM1UIVPROC glUniform1uiv;
136  PFNGLUNIFORM2UIVPROC glUniform2uiv;
137  PFNGLUNIFORM3UIVPROC glUniform3uiv;
138  PFNGLUNIFORM4UIVPROC glUniform4uiv;
139  PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
140  PFNGLGETUNIFORMFVPROC glGetUniformfv;
141  PFNGLGETUNIFORMIVPROC glGetUniformiv;
142  PFNGLGETUNIFORMDVPROC glGetUniformdv;
143  PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
144  PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
145  PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
146  PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
147  PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
148  PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
149  PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
150  PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
151  PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
152  PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
153  PFNGLGETSHADERIVPROC glGetShaderiv;
154  PFNGLGETPROGRAMIVPROC glGetProgramiv;
155  PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
156  PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
157  PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
158  PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
159  PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
160  PFNGLGETSHADERSOURCEPROC glGetShaderSource;
161  PFNGLVALIDATEPROGRAMPROC glValidateProgram;
162 
163  // 3.0 core shaders
164  PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
165  PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
166 
167  // RE_EXT_GEOMETRY_SHADER
168  PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
169 
170  // RE_EXT_TESS_SHADER
171  PFNGLPATCHPARAMETERIPROC glPatchParameteri;
172  PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
173 
174  // RE_EXT_SEPARATE_SHADERS
175  PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
176  PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
177  PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
178  PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
179  PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
180  PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
181  PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
182  PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
183  PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
184  PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
185  PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
186  PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
187  PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
188  PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
189  PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
190  PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
191  PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
192  PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
193  PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
194  PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
195  PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
196  PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
197  PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
198  PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
199  PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
200  PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
201  PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
202  PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
203  PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
204  PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
205  PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
206  PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
207  PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
208  PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
209  PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
210  PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
211  PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
212  PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
213  PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
214  PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
215  PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
216  PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
217  PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
218  PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
219  PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
220  PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
221  PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
222  PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
223  PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
224  PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
225  PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
226  PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
227  PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
228  PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
229  PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
230  PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
231  PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
232  PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
233  PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
234  PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
235 
236  // RE_EXT_PROGRAM_INTERFACE_QUERY
237  PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
238  PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
239  PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
240  PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
241  PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
242  PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
243  // RE_EXT_TRANSFORM_FEEDBACK
244  PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
245  PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
246  PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
247  PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
248 
249  // RE_EXT_TRANSFORM_FEEDBACK_STREAM
250  PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed;
251  PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed;
252  PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv;
253  PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
254 
255  // RE_FRAME_BUFFER_OBJECT
256  PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
257  PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
258  PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
259  PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
260  PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
261  PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
262  PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
263  PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
264  PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
265 
266  PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
267  PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
268  PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
269  PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
270  PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
271  PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC
273  PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
274  PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
275  PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC
277  PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
278 
279  PFNGLDRAWBUFFERSPROC glDrawBuffers;
280 
281  // core GL 3.0
282  PFNGLCLEARBUFFERIVPROC glClearBufferiv;
283  PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
284  PFNGLCLEARBUFFERFVPROC glClearBufferfv;
285  PFNGLCLEARBUFFERFIPROC glClearBufferfi;
286 
287  // RE_EXT_BUFFER_STORAGE
288  PFNGLBUFFERSTORAGEPROC glBufferStorage;
289  PFNGLMEMORYBARRIERPROC glMemoryBarrier;
290 
291  // RE_EXT_MULTI_BIND
292  PFNGLBINDBUFFERSBASEPROC glBindBuffersBase;
293  PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange;
294  PFNGLBINDTEXTURESPROC glBindTextures;
295  PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
296  // TODO: once the parent extensions are added, add these methods.
297  //PFNGLBINDSAMPLERSPROC glBindSamplers;
298  //PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
299 
300  // RE_EXT_VERTEX_BUFFER_OBJECT
301  // RE_EXT_PIXEL_BUFFER_OBJECT
302  PFNGLGENBUFFERSPROC glGenBuffers;
303  PFNGLBINDBUFFERPROC glBindBuffer;
304  PFNGLBUFFERDATAPROC glBufferData;
305  PFNGLDELETEBUFFERSPROC glDeleteBuffers;
306  PFNGLBUFFERSUBDATAPROC glBufferSubData;
307  PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
309  PFNGLUNMAPBUFFERPROC glUnmapBuffer;
311  PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
312  PFNGLISBUFFERPROC glIsBuffer;
313 
314  // RE_EXT_VERTEX_ARRAY_OBJECT
315  PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
316  PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
317  PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
318  PFNGLISVERTEXARRAYPROC glIsVertexArray;
319 
320  // RE_EXT_DRAW_INSTANCED
321  PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
322  PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
323 
324  // RE_EXT_INSTANCED_ARRAYS
325  PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
326 
327  // RE_EXT_OCCLUSION_QUERY
328  PFNGLGENQUERIESPROC glGenQueries;
329  PFNGLDELETEQUERIESPROC glDeleteQueries;
330  PFNGLISQUERYPROC glIsQuery;
331  PFNGLBEGINQUERYPROC glBeginQuery;
332  PFNGLENDQUERYPROC glEndQuery;
333  PFNGLGETQUERYIVPROC glGetQueryiv;
334  PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
335  PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
336 
337  // RE_EXT_TIMER_QUERY
338  PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
339  PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
340  PFNGLQUERYCOUNTERPROC glQueryCounter;
341 
342  // RE_EXT_TEXTURE_MULTISAMPLE
343  PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
344  PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
345  PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
346  PFNGLSAMPLEMASKIPROC glSampleMaski;
347 
348  // RE_EXT_UNIFORM_BUFFER
349  PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
350  PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
351  PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
352  PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
353  PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
354  PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
355  PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
356  PFNGLBINDBUFFERBASEPROC glBindBufferBase;
357  PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
358  PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
359 
360  // RE_EXT_TEXTURE_BUFFER
361  PFNGLTEXBUFFERPROC glTexBuffer;
362 
363  // RE_EXT_IMAGE_LOAD_STORE
364  PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
365 
366  // RE_EXT_COMPUTE_SHADER
367  PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
368  PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
369 
370  // RE_EXT_SHADER_STORAGE_BUFFER
371  PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
372 
373  // RE_EXT_TEXTURE_BINDLESS
374  PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB;
375  PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB;
376  PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB;
377  PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
378  PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB;
379  PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB;
380  PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB;
381  PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB;
382  PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB;
383  PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB;
384  PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB;
385  PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB;
386  PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB;
387  PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB;
388  PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB;
389  PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB;
390 
391  // RE_EXT_PRIMITIVE_RESTART
392  PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
393 
394  // RE_EXT_ELEMENTS_BASE_VERTEX
395  PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
396  PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
397  PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC
399  PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
400 
401  // RE_EXT_ELEMENTS_BASE_INSTANCE
402  PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC
404  PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC
406  PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC
408 
409  // RE_EXT_SYNC
410  PFNGLFENCESYNCPROC glFenceSync;
411  PFNGLISSYNCPROC glIsSync;
412  PFNGLDELETESYNCPROC glDeleteSync;
413  PFNGLWAITSYNCPROC glWaitSync;
414  PFNGLGETINTEGER64VPROC glGetInteger64v;
415  PFNGLGETSYNCIVPROC glGetSynciv;
416  PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
417 
418  // RE_EXT_CONDITIONAL_RENDER
419  PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
420  PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
421 
422  // GL 1.2
423  PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
424 
425  // RE_EXT_SAMPLE_SHADING
426  PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
427 
428  // RE_EXT_DEBUG_OUTPUT
429  PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
430  PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
431  PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
432  PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
433 
434  // RE_EXT_DIRECT_STATE_ACCESS (add as needed)
435  RE_PFNGLBINDMULTITEXTUREEXTPROC glBindMultiTextureEXT;
436 
437  // RE_EXT_DEBUG_KRONOS
438  PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
439  PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
440  PFNGLOBJECTLABELPROC glObjectLabel;
441  PFNGLGETOBJECTLABELPROC glGetObjectLabel;
442  PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
443  PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
444 
445  PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus;
446 
447 #ifdef WIN32
448  RE_PFNWGLSWAPINTERVALPROC wglSwapIntervalEXT;
449  RE_PFNWGLGETEXTENSIONSSTRINGPROC wglGetExtensionsStringEXT;
450 #elif !defined(MBSD_COCOA)
451  RE_PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;
452 #endif
453 
455 
456  // Only RE_Render should ever call these, and only to work around driver
457  // issues.
458  void enableExtension( RE_Extension ext );
459  void disableExtension( RE_Extension ext );
460 
461  static void *getExtFunction(void *a_out_handle, const char *symbol);
462 
463 private:
464  void setupTheExtensions();
465  void checkExtensions(re_ExtData *exts,
466  const UT_StringSet &syms);
467  bool *myExtensions;
468  UT_StringSet *myGLExtensionTable;
469  static bool theInitializedOnce;
470 };
471 
472 #endif // __RE_OGLExt_h__
PFNGLVALIDATEPROGRAMPROC glValidateProgram
Definition: RE_OGLExt.h:161
PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv
Definition: RE_OGLExt.h:240
PFNGLFENCESYNCPROC glFenceSync
Definition: RE_OGLExt.h:410
PFNGLOBJECTLABELPROC glObjectLabel
Definition: RE_OGLExt.h:440
PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D
Definition: RE_OGLExt.h:260
PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB
Definition: RE_OGLExt.h:385
PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB
Definition: RE_OGLExt.h:378
PFNGLTEXBUFFERPROC glTexBuffer
Definition: RE_OGLExt.h:361
PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender
Definition: RE_OGLExt.h:420
PFNGLCLEARBUFFERFVPROC glClearBufferfv
Definition: RE_OGLExt.h:284
PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation
Definition: RE_OGLExt.h:164
PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer
Definition: RE_OGLExt.h:274
PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv
Definition: RE_OGLExt.h:204
PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB
Definition: RE_OGLExt.h:389
PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer
Definition: RE_OGLExt.h:262
PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv
Definition: RE_OGLExt.h:104
PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d
Definition: RE_OGLExt.h:203
PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex
Definition: RE_OGLExt.h:396
PFNGLBUFFERSTORAGEPROC glBufferStorage
Definition: RE_OGLExt.h:288
PFNGLDETACHSHADERPROC glDetachShader
Definition: RE_OGLExt.h:88
PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings
Definition: RE_OGLExt.h:246
PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui
Definition: RE_OGLExt.h:213
PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB
Definition: RE_OGLExt.h:375
PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv
Definition: RE_OGLExt.h:111
PFNGLBEGINQUERYPROC glBeginQuery
Definition: RE_OGLExt.h:331
PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv
Definition: RE_OGLExt.h:196
PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture
Definition: RE_OGLExt.h:263
PFNGLQUERYCOUNTERPROC glQueryCounter
Definition: RE_OGLExt.h:340
PFNGLBINDVERTEXARRAYPROC glBindVertexArray
Definition: RE_OGLExt.h:315
PFNGLBUFFERSUBDATAPROC glBufferSubData
Definition: RE_OGLExt.h:306
PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation
Definition: RE_OGLExt.h:165
PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream
Definition: RE_OGLExt.h:253
PFNGLGETQUERYIVPROC glGetQueryiv
Definition: RE_OGLExt.h:333
#define RE_API
Definition: RE_API.h:10
PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv
Definition: RE_OGLExt.h:232
PFNGLPROGRAMPARAMETERIPROC glProgramParameteri
Definition: RE_OGLExt.h:168
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample
Definition: RE_OGLExt.h:272
PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray
Definition: RE_OGLExt.h:156
PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv
Definition: RE_OGLExt.h:99
PFNGLBUFFERDATAPROC glBufferData
Definition: RE_OGLExt.h:304
PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv
Definition: RE_OGLExt.h:96
PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv
Definition: RE_OGLExt.h:117
PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample
Definition: RE_OGLExt.h:344
PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv
Definition: RE_OGLExt.h:221
PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender
Definition: RE_OGLExt.h:419
PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i
Definition: RE_OGLExt.h:183
PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f
Definition: RE_OGLExt.h:209
PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB
Definition: RE_OGLExt.h:381
PFNGLCREATESHADERPROC glCreateShader
Definition: RE_OGLExt.h:85
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus
Definition: RE_OGLExt.h:259
PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i
Definition: RE_OGLExt.h:191
PFNGLUNIFORM1FVPROC glUniform1fv
Definition: RE_OGLExt.h:119
PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance
Definition: RE_OGLExt.h:403
PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv
Definition: RE_OGLExt.h:335
PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines
Definition: RE_OGLExt.h:180
PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv
Definition: RE_OGLExt.h:144
PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced
Definition: RE_OGLExt.h:321
PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers
Definition: RE_OGLExt.h:256
PFNGLGETUNIFORMINDICESPROC glGetUniformIndices
Definition: RE_OGLExt.h:349
PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv
Definition: RE_OGLExt.h:101
PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv
Definition: RE_OGLExt.h:353
PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv
Definition: RE_OGLExt.h:148
PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB
Definition: RE_OGLExt.h:374
PFNGLDISPATCHCOMPUTEPROC glDispatchCompute
Definition: RE_OGLExt.h:367
PFNGLDELETESYNCPROC glDeleteSync
Definition: RE_OGLExt.h:412
PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance
Definition: RE_OGLExt.h:405
PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback
Definition: RE_OGLExt.h:431
PFNGLSAMPLEMASKIPROC glSampleMaski
Definition: RE_OGLExt.h:346
PFNGLPOPDEBUGGROUPPROC glPopDebugGroup
Definition: RE_OGLExt.h:439
PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv
Definition: RE_OGLExt.h:115
PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer
Definition: RE_OGLExt.h:157
PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB
Definition: RE_OGLExt.h:379
PFNGLUNIFORM2FPROC glUniform2f
Definition: RE_OGLExt.h:128
PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect
Definition: RE_OGLExt.h:368
PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv
Definition: RE_OGLExt.h:192
PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui
Definition: RE_OGLExt.h:205
PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv
Definition: RE_OGLExt.h:106
PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv
Definition: RE_OGLExt.h:216
PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB
Definition: RE_OGLExt.h:380
PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange
Definition: RE_OGLExt.h:293
PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName
Definition: RE_OGLExt.h:351
PFNGLISVERTEXARRAYPROC glIsVertexArray
Definition: RE_OGLExt.h:318
PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB
Definition: RE_OGLExt.h:387
void *APIENTRYP PFNGLMAPBUFFERRANGEPROC(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
Definition: glcorearb.h:1299
PFNGLDELETESHADERPROC glDeleteShader
Definition: RE_OGLExt.h:87
PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv
Definition: RE_OGLExt.h:186
PFNGLPATCHPARAMETERIPROC glPatchParameteri
Definition: RE_OGLExt.h:171
PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv
Definition: RE_OGLExt.h:224
PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert
Definition: RE_OGLExt.h:430
PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui
Definition: RE_OGLExt.h:197
PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding
Definition: RE_OGLExt.h:371
PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv
Definition: RE_OGLExt.h:188
PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f
Definition: RE_OGLExt.h:193
PFNGLGETUNIFORMDVPROC glGetUniformdv
Definition: RE_OGLExt.h:142
PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv
Definition: RE_OGLExt.h:190
PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB
Definition: RE_OGLExt.h:382
PFNGLGETINTEGERI_VPROC glGetIntegeri_v
Definition: RE_OGLExt.h:358
PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i
Definition: RE_OGLExt.h:207
PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer
Definition: RE_OGLExt.h:269
PFNGLCLIENTWAITSYNCPROC glClientWaitSync
Definition: RE_OGLExt.h:416
PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui
Definition: RE_OGLExt.h:189
PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv
Definition: RE_OGLExt.h:102
PFNGLLINKPROGRAMPROC glLinkProgram
Definition: RE_OGLExt.h:95
PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline
Definition: RE_OGLExt.h:233
PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv
Definition: RE_OGLExt.h:112
PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl
Definition: RE_OGLExt.h:429
PFNGLMAPBUFFERRANGEPROC glMapBufferRange
Definition: RE_OGLExt.h:310
PFNGLISQUERYPROC glIsQuery
Definition: RE_OGLExt.h:330
PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog
Definition: RE_OGLExt.h:90
PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName
Definition: RE_OGLExt.h:239
PFNGLGENBUFFERSPROC glGenBuffers
Definition: RE_OGLExt.h:302
PFNGLDELETEPROGRAMPROC glDeleteProgram
Definition: RE_OGLExt.h:86
PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv
Definition: RE_OGLExt.h:103
PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d
Definition: RE_OGLExt.h:195
PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv
Definition: RE_OGLExt.h:225
PFNGLMAPBUFFERPROC glMapBuffer
Definition: RE_OGLExt.h:308
PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv
Definition: RE_OGLExt.h:118
PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray
Definition: RE_OGLExt.h:155
PFNGLGETSHADERIVPROC glGetShaderiv
Definition: RE_OGLExt.h:153
PFNGLUNIFORM4DVPROC glUniform4dv
Definition: RE_OGLExt.h:126
PFNGLUNIFORM1IVPROC glUniform1iv
Definition: RE_OGLExt.h:131
PFNGLBINDBUFFERBASEPROC glBindBufferBase
Definition: RE_OGLExt.h:356
PFNGLISRENDERBUFFERPROC glIsRenderbuffer
Definition: RE_OGLExt.h:268
PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel
Definition: RE_OGLExt.h:443
PFNGLMEMORYBARRIERPROC glMemoryBarrier
Definition: RE_OGLExt.h:289
PFNGLGENQUERIESPROC glGenQueries
Definition: RE_OGLExt.h:328
PFNGLBINDBUFFERSBASEPROC glBindBuffersBase
Definition: RE_OGLExt.h:292
PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB
Definition: RE_OGLExt.h:377
PFNGLGETUNIFORMFVPROC glGetUniformfv
Definition: RE_OGLExt.h:140
PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv
Definition: RE_OGLExt.h:98
PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline
Definition: RE_OGLExt.h:181
PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v
Definition: RE_OGLExt.h:339
PFNGLBLENDEQUATIONPROC glBlendEquation
Definition: RE_OGLExt.h:69
PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB
Definition: RE_OGLExt.h:376
PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers
Definition: RE_OGLExt.h:267
PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB
Definition: RE_OGLExt.h:388
PFNGLBINDIMAGETEXTUREPROC glBindImageTexture
Definition: RE_OGLExt.h:364
PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer
Definition: RE_OGLExt.h:264
PFNGLUNIFORM2IVPROC glUniform2iv
Definition: RE_OGLExt.h:132
PFNGLUNIFORM3DVPROC glUniform3dv
Definition: RE_OGLExt.h:125
PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline
Definition: RE_OGLExt.h:178
PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv
Definition: RE_OGLExt.h:350
PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv
Definition: RE_OGLExt.h:146
PFNGLGENVERTEXARRAYSPROC glGenVertexArrays
Definition: RE_OGLExt.h:317
PFNGLUNIFORM4IVPROC glUniform4iv
Definition: RE_OGLExt.h:134
PFNGLUNIFORM1FPROC glUniform1f
Definition: RE_OGLExt.h:127
PFNGLUNIFORM3UIVPROC glUniform3uiv
Definition: RE_OGLExt.h:137
PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup
Definition: RE_OGLExt.h:438
PFNGLISSYNCPROC glIsSync
Definition: RE_OGLExt.h:411
PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback
Definition: RE_OGLExt.h:244
PFNGLBLENDCOLORPROC glBlendColor
Definition: RE_OGLExt.h:66
PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv
Definition: RE_OGLExt.h:345
PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d
Definition: RE_OGLExt.h:187
PFNGLDRAWBUFFERSPROC glDrawBuffers
Definition: RE_OGLExt.h:279
PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv
Definition: RE_OGLExt.h:105
PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv
Definition: RE_OGLExt.h:194
PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer
Definition: RE_OGLExt.h:159
PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv
Definition: RE_OGLExt.h:223
PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding
Definition: RE_OGLExt.h:355
PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv
Definition: RE_OGLExt.h:202
PFNGLSHADERSOURCEPROC glShaderSource
Definition: RE_OGLExt.h:93
RE_PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI
Definition: RE_OGLExt.h:451
PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog
Definition: RE_OGLExt.h:432
PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex
Definition: RE_OGLExt.h:238
PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv
Definition: RE_OGLExt.h:198
PFNGLUNIFORM2UIVPROC glUniform2uiv
Definition: RE_OGLExt.h:136
PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv
Definition: RE_OGLExt.h:206
PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog
Definition: RE_OGLExt.h:91
PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv
Definition: RE_OGLExt.h:116
PFNGLISFRAMEBUFFERPROC glIsFramebuffer
Definition: RE_OGLExt.h:258
PFNGLDELETEQUERIESPROC glDeleteQueries
Definition: RE_OGLExt.h:329
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate
Definition: RE_OGLExt.h:72
PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv
Definition: RE_OGLExt.h:145
PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv
Definition: RE_OGLExt.h:177
PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib
Definition: RE_OGLExt.h:149
PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample
Definition: RE_OGLExt.h:343
PFNGLTEXIMAGE3DPROC glTexImage3D
Definition: RE_OGLExt.h:75
OPENVDB_API void initialize()
Global registration of basic types.
Definition: logging.h:318
PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv
Definition: RE_OGLExt.h:231
PFNGLUNIFORM4FVPROC glUniform4fv
Definition: RE_OGLExt.h:122
PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer
Definition: RE_OGLExt.h:158
PFNGLCOMPILESHADERPROC glCompileShader
Definition: RE_OGLExt.h:94
PFNGLUNIFORM4UIVPROC glUniform4uiv
Definition: RE_OGLExt.h:138
PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName
Definition: RE_OGLExt.h:354
void *APIENTRYP PFNGLMAPBUFFERPROC(GLenum target, GLenum access)
Definition: glcorearb.h:666
PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage
Definition: RE_OGLExt.h:270
PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex
Definition: RE_OGLExt.h:392
PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f
Definition: RE_OGLExt.h:185
PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform
Definition: RE_OGLExt.h:150
bool hasExtension(RE_Extension ext)
Definition: RE_OGLExt.h:35
PFNGLUNIFORM1UIVPROC glUniform1uiv
Definition: RE_OGLExt.h:135
PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex
Definition: RE_OGLExt.h:352
RE_PFNGLBINDMULTITEXTUREEXTPROC glBindMultiTextureEXT
Definition: RE_OGLExt.h:435
PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv
Definition: RE_OGLExt.h:212
PFNGLCLEARBUFFERFIPROC glClearBufferfi
Definition: RE_OGLExt.h:285
PFNGLCLEARBUFFERUIVPROC glClearBufferuiv
Definition: RE_OGLExt.h:283
PFNGLGETINTEGER64VPROC glGetInteger64v
Definition: RE_OGLExt.h:414
PFNGLENDQUERYPROC glEndQuery
Definition: RE_OGLExt.h:332
PFNGLISBUFFERPROC glIsBuffer
Definition: RE_OGLExt.h:312
PFNGLBINDBUFFERPROC glBindBuffer
Definition: RE_OGLExt.h:303
PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv
Definition: RE_OGLExt.h:252
PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv
Definition: RE_OGLExt.h:230
PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D
Definition: RE_OGLExt.h:261
PFNGLBINDTEXTURESPROC glBindTextures
Definition: RE_OGLExt.h:294
PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D
Definition: RE_OGLExt.h:76
PFNGLUNIFORM4FPROC glUniform4f
Definition: RE_OGLExt.h:130
PFNGLGETPROGRAMIVPROC glGetProgramiv
Definition: RE_OGLExt.h:154
PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex
Definition: RE_OGLExt.h:399
PFNGLOBJECTPTRLABELPROC glObjectPtrLabel
Definition: RE_OGLExt.h:442
PFNGLMINSAMPLESHADINGPROC glMinSampleShading
Definition: RE_OGLExt.h:426
PFNGLGENERATEMIPMAPPROC glGenerateMipmap
Definition: RE_OGLExt.h:277
PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv
Definition: RE_OGLExt.h:147
PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB
Definition: RE_OGLExt.h:384
PFNGLUNIFORM2FVPROC glUniform2fv
Definition: RE_OGLExt.h:120
PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv
Definition: RE_OGLExt.h:210
PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed
Definition: RE_OGLExt.h:250
PFNGLUNMAPBUFFERPROC glUnmapBuffer
Definition: RE_OGLExt.h:309
PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv
Definition: RE_OGLExt.h:222
PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv
Definition: RE_OGLExt.h:208
PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus
Definition: RE_OGLExt.h:445
GLuint index
Definition: glcorearb.h:785
PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv
Definition: RE_OGLExt.h:113
PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv
Definition: RE_OGLExt.h:184
PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines
Definition: RE_OGLExt.h:179
PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv
Definition: RE_OGLExt.h:217
PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation
Definition: RE_OGLExt.h:241
PFNGLISPROGRAMPROC glIsProgram
Definition: RE_OGLExt.h:92
PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv
Definition: RE_OGLExt.h:110
PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv
Definition: RE_OGLExt.h:182
PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i
Definition: RE_OGLExt.h:199
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex
Definition: RE_OGLExt.h:398
PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex
Definition: RE_OGLExt.h:395
PFNGLUSEPROGRAMPROC glUseProgram
Definition: RE_OGLExt.h:89
PFNGLGETSYNCIVPROC glGetSynciv
Definition: RE_OGLExt.h:415
PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv
Definition: RE_OGLExt.h:229
PFNGLCREATEPROGRAMPROC glCreateProgram
Definition: RE_OGLExt.h:84
PFNGLGETOBJECTLABELPROC glGetObjectLabel
Definition: RE_OGLExt.h:441
PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed
Definition: RE_OGLExt.h:251
PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB
Definition: RE_OGLExt.h:383
PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f
Definition: RE_OGLExt.h:201
PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv
Definition: RE_OGLExt.h:97
PFNGLUNIFORM3FPROC glUniform3f
Definition: RE_OGLExt.h:129
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv
Definition: RE_OGLExt.h:276
PFNGLACTIVETEXTUREPROC glActiveTexture
Definition: RE_OGLExt.h:80
PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d
Definition: RE_OGLExt.h:211
PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv
Definition: RE_OGLExt.h:227
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:126
PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram
Definition: RE_OGLExt.h:176
PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv
Definition: RE_OGLExt.h:334
PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv
Definition: RE_OGLExt.h:220
PFNGLATTACHSHADERPROC glAttachShader
Definition: RE_OGLExt.h:83
PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer
Definition: RE_OGLExt.h:273
PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying
Definition: RE_OGLExt.h:247
PFNGLGETSTRINGIPROC glGetStringi
Definition: RE_OGLExt.h:454
PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v
Definition: RE_OGLExt.h:338
PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv
Definition: RE_OGLExt.h:215
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance
Definition: RE_OGLExt.h:407
PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback
Definition: RE_OGLExt.h:245
PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv
Definition: RE_OGLExt.h:219
PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv
Definition: RE_OGLExt.h:226
PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced
Definition: RE_OGLExt.h:322
PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog
Definition: RE_OGLExt.h:234
PFNGLDELETEBUFFERSPROC glDeleteBuffers
Definition: RE_OGLExt.h:305
PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv
Definition: RE_OGLExt.h:108
PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex
Definition: RE_OGLExt.h:242
PFNGLUNIFORM3IVPROC glUniform3iv
Definition: RE_OGLExt.h:133
PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv
Definition: RE_OGLExt.h:218
PFNGLUNIFORM2DVPROC glUniform2dv
Definition: RE_OGLExt.h:124
PFNGLCLEARBUFFERIVPROC glClearBufferiv
Definition: RE_OGLExt.h:282
PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv
Definition: RE_OGLExt.h:214
PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv
Definition: RE_OGLExt.h:200
PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers
Definition: RE_OGLExt.h:266
PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv
Definition: RE_OGLExt.h:100
PFNGLGETSHADERSOURCEPROC glGetShaderSource
Definition: RE_OGLExt.h:160
PFNGLUNIFORM1DVPROC glUniform1dv
Definition: RE_OGLExt.h:123
PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB
Definition: RE_OGLExt.h:386
PFNGLGETUNIFORMIVPROC glGetUniformiv
Definition: RE_OGLExt.h:141
PFNGLUNIFORM3FVPROC glUniform3fv
Definition: RE_OGLExt.h:121
const GLubyte *APIENTRYP PFNGLGETSTRINGIPROC(GLenum name, GLuint index)
Definition: glcorearb.h:1278
PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv
Definition: RE_OGLExt.h:107
PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation
Definition: RE_OGLExt.h:151
PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange
Definition: RE_OGLExt.h:311
PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv
Definition: RE_OGLExt.h:114
RE_Extension
Definition: RE_Extension.h:4
PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays
Definition: RE_OGLExt.h:316
PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers
Definition: RE_OGLExt.h:295
PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor
Definition: RE_OGLExt.h:325
PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData
Definition: RE_OGLExt.h:307
PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv
Definition: RE_OGLExt.h:228
PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv
Definition: RE_OGLExt.h:143
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers
Definition: RE_OGLExt.h:257
PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements
Definition: RE_OGLExt.h:423
PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D
Definition: RE_OGLExt.h:77
PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation
Definition: RE_OGLExt.h:152
PFNGLWAITSYNCPROC glWaitSync
Definition: RE_OGLExt.h:413
PFNGLBINDBUFFERRANGEPROC glBindBufferRange
Definition: RE_OGLExt.h:357
PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv
Definition: RE_OGLExt.h:237
PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation
Definition: RE_OGLExt.h:139
PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages
Definition: RE_OGLExt.h:175
PFNGLPATCHPARAMETERFVPROC glPatchParameterfv
Definition: RE_OGLExt.h:172
PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv
Definition: RE_OGLExt.h:109