1 /* 2 * Copyright (C) Volition, Inc. 1999. All rights reserved. 3 * 4 * All source code herein is the property of Volition, Inc. You may not sell 5 * or otherwise commercially exploit the source or things you created based on the 6 * source. 7 * 8 */ 9 10 11 12 #ifndef _GROPENGLEXT_H 13 #define _GROPENGLEXT_H 14 15 #include "globalincs/pstypes.h" 16 #include "graphics/gropengl.h" 17 18 //EXTENSIONS!!!! 19 //be sure to check for this at startup and handle not finding it gracefully 20 21 //to add extensions/functions: 22 //define an index after the last one, either an extension or a function 23 //increment NUM_OGL_EXTENSIONS if an extension or NUM_OGL_FUNCTIONS if function 24 //add function macro for Win32 25 //add function info to GL_Functions struct 26 //the structure of extensions/functions are located in gropenglextension.cpp 27 28 typedef struct ogl_extension { 29 bool required_to_run; 30 bool enabled; 31 int num_extensions; 32 const char *extension_name[3]; 33 int num_functions; 34 const char *function_names[20]; 35 } ogl_extension; 36 37 typedef struct ogl_function { 38 const char *function_name; 39 ptr_u function_ptr; 40 } ogl_function; 41 42 extern ogl_function GL_Functions[]; 43 extern ogl_extension GL_Extensions[]; 44 extern ogl_function GL_EXT_Special[]; 45 46 47 // Extensions 48 #define OGL_EXT_FOG_COORD 0 49 #define OGL_ARB_MULTITEXTURE 1 50 #define OGL_ARB_TEXTURE_ENV_ADD 2 51 #define OGL_ARB_TEXTURE_COMPRESSION 3 52 #define OGL_EXT_TEXTURE_COMPRESSION_S3TC 4 53 #define OGL_EXT_TEXTURE_FILTER_ANISOTROPIC 5 54 //#define OGL_NV_FOG_DISTANCE 6 55 //#define OGL_EXT_SECONDARY_COLOR 7 56 #define OGL_ARB_TEXTURE_ENV_COMBINE 6 57 #define OGL_EXT_COMPILED_VERTEX_ARRAY 7 58 //#define OGL_ARB_TRANSPOSE_MATRIX 10 59 #define OGL_EXT_DRAW_RANGE_ELEMENTS 8 60 #define OGL_ARB_TEXTURE_MIRRORED_REPEAT 9 61 #define OGL_ARB_TEXTURE_NON_POWER_OF_TWO 10 62 #define OGL_ARB_VERTEX_BUFFER_OBJECT 11 63 #define OGL_ARB_PIXEL_BUFFER_OBJECT 12 64 #define OGL_SGIS_GENERATE_MIPMAP 13 65 #define OGL_EXT_FRAMEBUFFER_OBJECT 14 66 #define OGL_ARB_TEXTURE_RECTANGLE 15 67 #define OGL_EXT_BGRA 16 68 #define OGL_ARB_TEXTURE_CUBE_MAP 17 69 #define OGL_EXT_TEXTURE_LOD_BIAS 18 70 #define OGL_ARB_POINT_SPRITE 19 71 #define OGL_ARB_SHADING_LANGUAGE_100 20 72 #define OGL_ARB_SHADER_OBJECTS 21 73 #define OGL_ARB_VERTEX_SHADER 22 74 #define OGL_ARB_FRAGMENT_SHADER 23 75 #define OGL_SM30 24 76 #define OGL_ARB_FLOATING_POINT_TEXTURES 25 77 #define OGL_ARB_DRAW_ELEMENTS_BASE_VERTEX 26 78 79 #define NUM_OGL_EXTENSIONS 27 80 81 82 // Functions 83 #define OGL_FOG_COORDF 0 // for better looking fog 84 #define OGL_FOG_COORD_POINTER 1 // used with vertex arrays 85 #define OGL_MULTI_TEX_COORD_2F 2 // multitex coordinates 86 #define OGL_ACTIVE_TEXTURE 3 // currenly active multitexture 87 #define OGL_CLIENT_ACTIVE_TEXTURE 4 88 #define OGL_COMPRESSED_TEX_IMAGE_2D 5 // 2d compressed texture 89 #define OGL_COMPRESSED_TEX_SUB_IMAGE_2D 6 // 2d compressed sub texture 90 #define OGL_GET_COMPRESSED_TEX_IMAGE 7 91 //#define OGL_SECONDARY_COLOR_3FV 8 // for better looking fog 92 //#define OGL_SECONDARY_COLOR_3UBV 9 // specular 93 #define OGL_LOCK_ARRAYS 8 // HTL 94 #define OGL_UNLOCK_ARRAYS 9 // HTL 95 //#define OGL_LOAD_TRANSPOSE_MATRIX_F 12 96 //#define OGL_MULT_TRANSPOSE_MATRIX_F 13 97 #define OGL_DRAW_RANGE_ELEMENTS 10 98 #define OGL_BIND_BUFFER 11 99 #define OGL_DELETE_BUFFERS 12 100 #define OGL_GEN_BUFFERS 13 101 #define OGL_BUFFER_DATA 14 102 #define OGL_BUFFER_SUB_DATA 15 103 #define OGL_MAP_BUFFER 16 104 #define OGL_UNMAP_BUFFER 17 105 #define OGL_IS_RENDERBUFFER 18 106 #define OGL_BIND_RENDERBUFFER 19 107 #define OGL_DELETE_RENDERBUFFERS 20 108 #define OGL_GEN_RENDERBUFFERS 21 109 #define OGL_RENDERBUFFER_STORAGE 22 110 #define OGL_GET_RENDERBUFFER_PARAMETER_IV 23 111 #define OGL_IS_FRAMEBUFFER 24 112 #define OGL_BIND_FRAMEBUFFER 25 113 #define OGL_DELETE_FRAMEBUFFERS 26 114 #define OGL_GEN_FRAMEBUFFERS 27 115 #define OGL_CHECK_FRAMEBUFFER_STATUS 28 116 #define OGL_FRAMEBUFFER_TEXTURE_2D 29 117 #define OGL_FRAMEBUFFER_RENDERBUFFER 30 118 #define OGL_GET_FRAMEBUFFER_ATTACHMENT_PARAMETER_IV 31 119 #define OGL_GENERATE_MIPMAP 32 120 #define OGL_DELETE_OBJECT 33 121 #define OGL_CREATE_SHADER_OBJECT 34 122 #define OGL_SHADER_SOURCE 35 123 #define OGL_COMPILE_SHADER 36 124 #define OGL_GET_OBJECT_PARAMETERIV 37 125 #define OGL_GET_INFO_LOG 38 126 #define OGL_CREATE_PROGRAM_OBJECT 39 127 #define OGL_ATTACH_OBJECT 40 128 #define OGL_LINK_PROGRAM 41 129 #define OGL_USE_PROGRAM_OBJECT 42 130 #define OGL_VALIDATE_PROGRAM 43 131 #define OGL_ENABLE_VERTEX_ATTRIB_ARRAY 44 132 #define OGL_DISABLE_VERTEX_ATTRIB_ARRAY 45 133 #define OGL_GET_ATTRIB_LOCATION 46 134 #define OGL_VERTEX_ATTRIB_POINTER 47 135 #define OGL_GET_UNIFORM_LOCATION 48 136 #define OGL_GET_UNIFORMIV 49 137 #define OGL_UNIFORM1F 50 138 #define OGL_UNIFORM2F 51 139 #define OGL_UNIFORM3F 52 140 #define OGL_UNIFORM4F 53 141 #define OGL_UNIFORM3FV 54 142 #define OGL_UNIFORM4FV 55 143 #define OGL_UNIFORM1I 56 144 #define OGL_UNIFORM_MATRIX4FV 57 145 #define OGL_DRAWBUFFERS 58 146 #define OGL_DRAW_ELEMENTS_BASE_VERTEX 59 147 #define OGL_DRAW_RANGE_ELEMENTS_BASE_VERTEX 60 148 #define OGL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX 61 149 #define OGL_MULTI_DRAW_ELEMENTS_BASE_VERTEX 62 150 151 #define NUM_OGL_FUNCTIONS 63 152 153 154 // special extensions/functions (OS specific, non-GL stuff) 155 #define OGL_SPC_WGL_SWAP_INTERVAL 0 156 #define OGL_SPC_GLX_SWAP_INTERVAL 1 157 158 #define NUM_OGL_EXT_SPECIAL 2 159 160 161 #define Is_Extension_Enabled(x) GL_Extensions[x].enabled 162 163 void opengl_extensions_init(); 164 165 166 #define GLEXT_CALL(i, x) if (GL_Functions[i].function_ptr) \ 167 ((x)GL_Functions[i].function_ptr) 168 169 // the same as GLEXT_CALL() except that it can be used with a cast or in an if statement 170 // this doesn't do NULL ptr checking so you have to be careful with it! 171 #define GLEXT_CALL2(i, x) ((x)GL_Functions[i].function_ptr) 172 173 #define GLEXT_SPC_CALL(i, x) if (GL_EXT_Special[i].function_ptr) \ 174 ((x)GL_EXT_Special[i].function_ptr) 175 176 177 #ifdef __APPLE__ 178 // special one, since it's a core feature 179 typedef void (* glDrawRangeElementsProcPtr) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); 180 181 // OS X doesn't have the PFN* names so we have to use the real OSX function ptrs 182 #define PFNGLFOGCOORDFEXTPROC glFogCoordfEXTProcPtr 183 #define PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXTProcPtr 184 #define PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARBProcPtr 185 #define PFNGLACTIVETEXTUREARBPROC glActiveTextureARBProcPtr 186 #define PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARBProcPtr 187 #define PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2DARBProcPtr 188 #define PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2DARBProcPtr 189 #define PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARBProcPtr 190 //#define PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXTProcPtr 191 //#define PFNGLSECONDARYCOLOR3UBVEXTPROC glSecondaryColor3ubvEXTProcPtr 192 #define PFNGLLOCKARRAYSEXTPROC glLockArraysEXTProcPtr 193 #define PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXTProcPtr 194 //#define PFNGLLOADTRANSPOSEMATRIXFARBPROC glLoadTransposeMatrixfARBProcPtr 195 //#define PFNGLMULTTRANSPOSEMATRIXFARBPROC glMultTransposeMatrixfARBProcPtr 196 #define PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElementsProcPtr 197 #define PFNGLBINDBUFFERARBPROC glBindBufferARBProcPtr 198 #define PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARBProcPtr 199 #define PFNGLGENBUFFERSARBPROC glGenBuffersARBProcPtr 200 #define PFNGLBUFFERDATAARBPROC glBufferDataARBProcPtr 201 #define PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARBProcPtr 202 #define PFNGLMAPBUFFERARBPROC glMapBufferARBProcPtr 203 #define PFNGLUNMAPBUFFERARBPROC glUnmapBufferARBProcPtr 204 #define PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXTProcPtr 205 #define PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXTProcPtr 206 #define PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXTProcPtr 207 #define PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXTProcPtr 208 #define PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXTProcPtr 209 #define PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXTProcPtr 210 #define PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXTProcPtr 211 #define PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXTProcPtr 212 #define PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXTProcPtr 213 #define PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXTProcPtr 214 #define PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXTProcPtr 215 #define PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXTProcPtr 216 #define PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXTProcPtr 217 #define PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXTProcPtr 218 #define PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXTProcPtr 219 #define PFNGLDELETEOBJECTARBPROC glDeleteObjectARBProcPtr 220 #define PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARBProcPtr 221 #define PFNGLSHADERSOURCEARBPROC glShaderSourceARBProcPtr 222 #define PFNGLCOMPILESHADERARBPROC glCompileShaderARBProcPtr 223 #define PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARBProcPtr 224 #define PFNGLGETINFOLOGARBPROC glGetInfoLogARBProcPtr 225 #define PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARBProcPtr 226 #define PFNGLATTACHOBJECTARBPROC glAttachObjectARBProcPtr 227 #define PFNGLLINKPROGRAMARBPROC glLinkProgramARBProcPtr 228 #define PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARBProcPtr 229 #define PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARBProcPtr 230 #define PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARBProcPtr 231 #define PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARBProcPtr 232 #define PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARBProcPtr 233 #define PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARBProcPtr 234 #define PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARBProcPtr 235 #define PFNGLGETUNIFORMIVARBPROC glGetUniformivARBProcPtr 236 #define PFNGLUNIFORM1FARBPROC glUniform1fARBProcPtr 237 #define PFNGLUNIFORM2FARBPROC glUniform2fARBProcPtr 238 #define PFNGLUNIFORM3FARBPROC glUniform3fARBProcPtr 239 #define PFNGLUNIFORM4FARBPROC glUnifrom4fARBProcPtr 240 #define PFNGLUNIFORM3FVARBPROC glUniform3fvARBProcPtr 241 #define PFNGLUNIFORM4FVARBPROC glUnifrom4fvARBProcPtr 242 #define PFNGLUNIFORM1IARBPROC glUniform1iARBProcPtr 243 #define PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARBProcPtr 244 #define PFNGLDRAWBUFFERSPROC glDrawBuffersARBProcPtr 245 #define PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertexProcPtr 246 #define PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertexProcPtr 247 #define PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertexProcPtr 248 #define PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertexProcPtr 249 #endif // __APPLE__ 250 251 #define vglFogCoordfEXT GLEXT_CALL( OGL_FOG_COORDF, PFNGLFOGCOORDFEXTPROC ) 252 #define vglFogCoordPointerEXT GLEXT_CALL( OGL_FOG_COORD_POINTER, PFNGLFOGCOORDPOINTEREXTPROC ) 253 #define vglMultiTexCoord2fARB GLEXT_CALL( OGL_MULTI_TEX_COORD_2F, PFNGLMULTITEXCOORD2FARBPROC ) 254 #define vglActiveTextureARB GLEXT_CALL( OGL_ACTIVE_TEXTURE, PFNGLACTIVETEXTUREARBPROC ) 255 #define vglClientActiveTextureARB GLEXT_CALL( OGL_CLIENT_ACTIVE_TEXTURE, PFNGLCLIENTACTIVETEXTUREARBPROC ) 256 #define vglCompressedTexImage2D GLEXT_CALL( OGL_COMPRESSED_TEX_IMAGE_2D, PFNGLCOMPRESSEDTEXIMAGE2DPROC ) 257 #define vglCompressedTexSubImage2D GLEXT_CALL( OGL_COMPRESSED_TEX_SUB_IMAGE_2D, PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC ) 258 #define vglGetCompressedTexImageARB GLEXT_CALL( OGL_GET_COMPRESSED_TEX_IMAGE, PFNGLGETCOMPRESSEDTEXIMAGEARBPROC ) 259 //#define vglSecondaryColor3fvEXT GLEXT_CALL( OGL_SECONDARY_COLOR_3FV, PFNGLSECONDARYCOLOR3FVEXTPROC ) 260 //#define vglSecondaryColor3ubvEXT GLEXT_CALL( OGL_SECONDARY_COLOR_3UBV, PFNGLSECONDARYCOLOR3UBVEXTPROC ) 261 #define vglLockArraysEXT GLEXT_CALL( OGL_LOCK_ARRAYS, PFNGLLOCKARRAYSEXTPROC ) 262 #define vglUnlockArraysEXT GLEXT_CALL( OGL_UNLOCK_ARRAYS, PFNGLUNLOCKARRAYSEXTPROC ) 263 //#define vglLoadTransposeMatrixfARB GLEXT_CALL( OGL_LOAD_TRANSPOSE_MATRIX_F, PFNGLLOADTRANSPOSEMATRIXFARBPROC ) 264 //#define vglMultTransposeMatrixfARB GLEXT_CALL( OGL_MULT_TRANSPOSE_MATRIX_F, PFNGLMULTTRANSPOSEMATRIXFARBPROC ) 265 #define vglDrawRangeElements GLEXT_CALL( OGL_DRAW_RANGE_ELEMENTS, PFNGLDRAWRANGEELEMENTSPROC ) 266 #define vglBindBufferARB GLEXT_CALL( OGL_BIND_BUFFER, PFNGLBINDBUFFERARBPROC ) 267 #define vglDeleteBuffersARB GLEXT_CALL( OGL_DELETE_BUFFERS, PFNGLDELETEBUFFERSARBPROC ) 268 #define vglGenBuffersARB GLEXT_CALL( OGL_GEN_BUFFERS, PFNGLGENBUFFERSARBPROC ) 269 #define vglBufferDataARB GLEXT_CALL( OGL_BUFFER_DATA, PFNGLBUFFERDATAARBPROC ) 270 #define vglBufferSubDataARB GLEXT_CALL( OGL_BUFFER_SUB_DATA, PFNGLBUFFERSUBDATAARBPROC ) 271 #define vglMapBufferARB GLEXT_CALL2( OGL_MAP_BUFFER, PFNGLMAPBUFFERARBPROC ) 272 #define vglUnmapBufferARB GLEXT_CALL( OGL_UNMAP_BUFFER, PFNGLUNMAPBUFFERARBPROC ) 273 #define vglIsRenderbufferEXT GLEXT_CALL2( OGL_IS_RENDERBUFFER, PFNGLISRENDERBUFFEREXTPROC ) 274 #define vglBindRenderbufferEXT GLEXT_CALL( OGL_BIND_RENDERBUFFER, PFNGLBINDRENDERBUFFEREXTPROC ) 275 #define vglDeleteRenderbuffersEXT GLEXT_CALL( OGL_DELETE_RENDERBUFFERS, PFNGLDELETERENDERBUFFERSEXTPROC ) 276 #define vglGenRenderbuffersEXT GLEXT_CALL( OGL_GEN_RENDERBUFFERS, PFNGLGENRENDERBUFFERSEXTPROC ) 277 #define vglRenderbufferStorageEXT GLEXT_CALL( OGL_RENDERBUFFER_STORAGE, PFNGLRENDERBUFFERSTORAGEEXTPROC ) 278 #define vglGetRenderbufferParameterivEXT GLEXT_CALL( OGL_GET_RENDERBUFFER_PARAMETER_IV, PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC ) 279 #define vglIsFramebufferEXT GLEXT_CALL2( OGL_IS_FRAMEBUFFER, PFNGLISFRAMEBUFFEREXTPROC ) 280 #define vglBindFramebufferEXT GLEXT_CALL( OGL_BIND_FRAMEBUFFER, PFNGLBINDFRAMEBUFFEREXTPROC ) 281 #define vglDeleteFramebuffersEXT GLEXT_CALL( OGL_DELETE_FRAMEBUFFERS, PFNGLDELETEFRAMEBUFFERSEXTPROC ) 282 #define vglGenFramebuffersEXT GLEXT_CALL( OGL_GEN_FRAMEBUFFERS, PFNGLGENFRAMEBUFFERSEXTPROC ) 283 #define vglCheckFramebufferStatusEXT GLEXT_CALL2( OGL_CHECK_FRAMEBUFFER_STATUS, PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC ) 284 #define vglFramebufferTexture2DEXT GLEXT_CALL( OGL_FRAMEBUFFER_TEXTURE_2D, PFNGLFRAMEBUFFERTEXTURE2DEXTPROC ) 285 #define vglFramebufferRenderbufferEXT GLEXT_CALL( OGL_FRAMEBUFFER_RENDERBUFFER, PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC ) 286 #define vglGetFramebufferAttachmentParameterivEXT GLEXT_CALL( OGL_GET_FRAMEBUFFER_ATTACHMENT_PARAMETER_IV, PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC ) 287 #define vglGenerateMipmapEXT GLEXT_CALL( OGL_GENERATE_MIPMAP, PFNGLGENERATEMIPMAPEXTPROC ) 288 #define vglDeleteObjectARB GLEXT_CALL( OGL_DELETE_OBJECT, PFNGLDELETEOBJECTARBPROC ) 289 #define vglCreateShaderObjectARB GLEXT_CALL2( OGL_CREATE_SHADER_OBJECT, PFNGLCREATESHADEROBJECTARBPROC ) 290 #define vglShaderSourceARB GLEXT_CALL( OGL_SHADER_SOURCE, PFNGLSHADERSOURCEARBPROC ) 291 #define vglCompileShaderARB GLEXT_CALL( OGL_COMPILE_SHADER, PFNGLCOMPILESHADERARBPROC ) 292 #define vglGetObjectParameterivARB GLEXT_CALL( OGL_GET_OBJECT_PARAMETERIV, PFNGLGETOBJECTPARAMETERIVARBPROC ) 293 #define vglGetInfoLogARB GLEXT_CALL( OGL_GET_INFO_LOG, PFNGLGETINFOLOGARBPROC ) 294 #define vglCreateProgramObjectARB GLEXT_CALL2( OGL_CREATE_PROGRAM_OBJECT, PFNGLCREATEPROGRAMOBJECTARBPROC ) 295 #define vglAttachObjectARB GLEXT_CALL( OGL_ATTACH_OBJECT, PFNGLATTACHOBJECTARBPROC ) 296 #define vglLinkProgramARB GLEXT_CALL( OGL_LINK_PROGRAM, PFNGLLINKPROGRAMARBPROC ) 297 #define vglUseProgramObjectARB GLEXT_CALL( OGL_USE_PROGRAM_OBJECT, PFNGLUSEPROGRAMOBJECTARBPROC ) 298 #define vglValidateProgramARB GLEXT_CALL( OGL_VALIDATE_PROGRAM, PFNGLVALIDATEPROGRAMARBPROC ) 299 #define vglEnableVertexAttribArrayARB GLEXT_CALL( OGL_ENABLE_VERTEX_ATTRIB_ARRAY, PFNGLENABLEVERTEXATTRIBARRAYARBPROC ) 300 #define vglDisableVertexAttribArrayARB GLEXT_CALL( OGL_DISABLE_VERTEX_ATTRIB_ARRAY, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC ) 301 #define vglGetAttribLocationARB GLEXT_CALL2( OGL_GET_ATTRIB_LOCATION, PFNGLGETATTRIBLOCATIONARBPROC ) 302 #define vglVertexAttribPointerARB GLEXT_CALL( OGL_VERTEX_ATTRIB_POINTER, PFNGLVERTEXATTRIBPOINTERARBPROC ) 303 #define vglGetUniformLocationARB GLEXT_CALL2( OGL_GET_UNIFORM_LOCATION, PFNGLGETUNIFORMLOCATIONARBPROC ) 304 #define vglGetUniformivARB GLEXT_CALL( OGL_GET_UNIFORMIV, PFNGLGETUNIFORMIVARBPROC ) 305 #define vglUniform1fARB GLEXT_CALL( OGL_UNIFORM1F, PFNGLUNIFORM1FARBPROC ) 306 #define vglUniform2fARB GLEXT_CALL( OGL_UNIFORM2F, PFNGLUNIFORM2FARBPROC ) 307 #define vglUniform3fARB GLEXT_CALL( OGL_UNIFORM3F, PFNGLUNIFORM3FARBPROC ) 308 #define vglUniform4fARB GLEXT_CALL( OGL_UNIFORM4F, PFNGLUNIFORM4FARBPROC ) 309 #define vglUniform3fvARB GLEXT_CALL( OGL_UNIFORM3FV, PFNGLUNIFORM3FVARBPROC ) 310 #define vglUniform4fvARB GLEXT_CALL( OGL_UNIFORM4FV, PFNGLUNIFORM4FVARBPROC ) 311 #define vglUniform1iARB GLEXT_CALL( OGL_UNIFORM1I, PFNGLUNIFORM1IARBPROC ) 312 #define vglUniformMatrix4fvARB GLEXT_CALL( OGL_UNIFORM_MATRIX4FV, PFNGLUNIFORMMATRIX4FVARBPROC ) 313 #define vglDrawBuffers GLEXT_CALL( OGL_DRAWBUFFERS, PFNGLDRAWBUFFERSPROC ) 314 #define vglDrawElementsBaseVertex GLEXT_CALL( OGL_DRAW_ELEMENTS_BASE_VERTEX, PFNGLDRAWELEMENTSBASEVERTEXPROC ) 315 #define vglDrawRangeElementsBaseVertex GLEXT_CALL( OGL_DRAW_RANGE_ELEMENTS_BASE_VERTEX, PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC ) 316 #define vglDrawElementsInstancedBaseVertex GLEXT_CALL( OGL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX, PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC ) 317 #define vglMultiDrawElementsBaseVertex GLEXT_CALL( OGL_MULTI_DRAW_ELEMENTS_BASE_VERTEX, PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC ) 318 319 // special extensions 320 #define vwglSwapIntervalEXT GLEXT_SPC_CALL( OGL_SPC_WGL_SWAP_INTERVAL, PFNWGLSWAPINTERVALEXTPROC ) 321 #define vglXSwapIntervalSGI GLEXT_SPC_CALL( OGL_SPC_GLX_SWAP_INTERVAL, PFNGLXSWAPINTERVALSGIPROC ) 322 323 #endif // _GROPENGLEXT_H 324