1 #ifndef APIENTRY 2 #define APIENTRY 3 #endif 4 #ifndef APIENTRYP 5 #define APIENTRYP APIENTRY * 6 #endif 7 8 // OpenGL deprecated functionality 9 #ifndef GL_QUADS 10 #define GL_QUADS 0x0007 11 #endif 12 13 #ifndef GL_ALPHA 14 #define GL_ALPHA 0x1906 15 #endif 16 #ifndef GL_ALPHA8 17 #define GL_ALPHA8 0x803C 18 #endif 19 #ifndef GL_ALPHA16 20 #define GL_ALPHA16 0x803E 21 #endif 22 #ifndef GL_COMPRESSED_ALPHA 23 #define GL_COMPRESSED_ALPHA 0x84E9 24 #endif 25 26 #ifndef GL_LUMINANCE 27 #define GL_LUMINANCE 0x1909 28 #endif 29 #ifndef GL_LUMINANCE8 30 #define GL_LUMINANCE8 0x8040 31 #endif 32 #ifndef GL_LUMINANCE16 33 #define GL_LUMINANCE16 0x8042 34 #endif 35 #ifndef GL_COMPRESSED_LUMINANCE 36 #define GL_COMPRESSED_LUMINANCE 0x84EA 37 #endif 38 39 #ifndef GL_LUMINANCE_ALPHA 40 #define GL_LUMINANCE_ALPHA 0x190A 41 #endif 42 #ifndef GL_LUMINANCE8_ALPHA8 43 #define GL_LUMINANCE8_ALPHA8 0x8045 44 #endif 45 #ifndef GL_LUMINANCE16_ALPHA16 46 #define GL_LUMINANCE16_ALPHA16 0x8048 47 #endif 48 #ifndef GL_COMPRESSED_LUMINANCE_ALPHA 49 #define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB 50 #endif 51 52 // OpenGL 1.3 53 #ifndef WIN32 54 #define glActiveTexture_ glActiveTexture 55 56 #define glBlendEquation_ glBlendEquation 57 #define glBlendColor_ glBlendColor 58 59 #define glTexImage3D_ glTexImage3D 60 #define glTexSubImage3D_ glTexSubImage3D 61 #define glCopyTexSubImage3D_ glCopyTexSubImage3D 62 63 #define glCompressedTexImage3D_ glCompressedTexImage3D 64 #define glCompressedTexImage2D_ glCompressedTexImage2D 65 #define glCompressedTexSubImage3D_ glCompressedTexSubImage3D 66 #define glCompressedTexSubImage2D_ glCompressedTexSubImage2D 67 #define glGetCompressedTexImage_ glGetCompressedTexImage 68 69 #define glDrawRangeElements_ glDrawRangeElements 70 #else 71 extern PFNGLACTIVETEXTUREPROC glActiveTexture_; 72 73 extern PFNGLBLENDEQUATIONPROC glBlendEquation_; 74 extern PFNGLBLENDCOLORPROC glBlendColor_; 75 76 extern PFNGLTEXIMAGE3DPROC glTexImage3D_; 77 extern PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D_; 78 extern PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D_; 79 80 extern PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D_; 81 extern PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D_; 82 extern PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D_; 83 extern PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D_; 84 extern PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage_; 85 86 extern PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements_; 87 #endif 88 89 // OpenGL 2.0 90 #ifdef __APPLE__ 91 #define glMultiDrawArrays_ glMultiDrawArrays 92 #define glMultiDrawElements_ glMultiDrawElements 93 94 #define glBlendFuncSeparate_ glBlendFuncSeparate 95 #define glBlendEquationSeparate_ glBlendEquationSeparate 96 #define glStencilOpSeparate_ glStencilOpSeparate 97 #define glStencilFuncSeparate_ glStencilFuncSeparate 98 #define glStencilMaskSeparate_ glStencilMaskSeparate 99 100 #define glGenBuffers_ glGenBuffers 101 #define glBindBuffer_ glBindBuffer 102 #define glMapBuffer_ glMapBuffer 103 #define glUnmapBuffer_ glUnmapBuffer 104 #define glBufferData_ glBufferData 105 #define glBufferSubData_ glBufferSubData 106 #define glDeleteBuffers_ glDeleteBuffers 107 #define glGetBufferSubData_ glGetBufferSubData 108 109 #define glGenQueries_ glGenQueries 110 #define glDeleteQueries_ glDeleteQueries 111 #define glBeginQuery_ glBeginQuery 112 #define glEndQuery_ glEndQuery 113 #define glGetQueryiv_ glGetQueryiv 114 #define glGetQueryObjectiv_ glGetQueryObjectiv 115 #define glGetQueryObjectuiv_ glGetQueryObjectuiv 116 117 #define glCreateProgram_ glCreateProgram 118 #define glDeleteProgram_ glDeleteProgram 119 #define glUseProgram_ glUseProgram 120 #define glCreateShader_ glCreateShader 121 #define glDeleteShader_ glDeleteShader 122 #define glShaderSource_ glShaderSource 123 #define glCompileShader_ glCompileShader 124 #define glGetShaderiv_ glGetShaderiv 125 #define glGetProgramiv_ glGetProgramiv 126 #define glAttachShader_ glAttachShader 127 #define glGetProgramInfoLog_ glGetProgramInfoLog 128 #define glGetShaderInfoLog_ glGetShaderInfoLog 129 #define glLinkProgram_ glLinkProgram 130 #define glGetUniformLocation_ glGetUniformLocation 131 #define glUniform1f_ glUniform1f 132 #define glUniform2f_ glUniform2f 133 #define glUniform3f_ glUniform3f 134 #define glUniform4f_ glUniform4f 135 #define glUniform1fv_ glUniform1fv 136 #define glUniform2fv_ glUniform2fv 137 #define glUniform3fv_ glUniform3fv 138 #define glUniform4fv_ glUniform4fv 139 #define glUniform1i_ glUniform1i 140 #define glUniform2i_ glUniform2i 141 #define glUniform3i_ glUniform3i 142 #define glUniform4i_ glUniform4i 143 #define glUniform1iv_ glUniform1iv 144 #define glUniform2iv_ glUniform2iv 145 #define glUniform3iv_ glUniform3iv 146 #define glUniform4iv_ glUniform4iv 147 #define glUniformMatrix2fv_ glUniformMatrix2fv 148 #define glUniformMatrix3fv_ glUniformMatrix3fv 149 #define glUniformMatrix4fv_ glUniformMatrix4fv 150 #define glBindAttribLocation_ glBindAttribLocation 151 #define glGetActiveUniform_ glGetActiveUniform 152 #define glEnableVertexAttribArray_ glEnableVertexAttribArray 153 #define glDisableVertexAttribArray_ glDisableVertexAttribArray 154 155 #define glVertexAttrib1f_ glVertexAttrib1f 156 #define glVertexAttrib1fv_ glVertexAttrib1fv 157 #define glVertexAttrib1s_ glVertexAttrib1s 158 #define glVertexAttrib1sv_ glVertexAttrib1sv 159 #define glVertexAttrib2f_ glVertexAttrib2f 160 #define glVertexAttrib2fv_ glVertexAttrib2fv 161 #define glVertexAttrib2s_ glVertexAttrib2s 162 #define glVertexAttrib2sv_ glVertexAttrib2sv 163 #define glVertexAttrib3f_ glVertexAttrib3f 164 #define glVertexAttrib3fv_ glVertexAttrib3fv 165 #define glVertexAttrib3s_ glVertexAttrib3s 166 #define glVertexAttrib3sv_ glVertexAttrib3sv 167 #define glVertexAttrib4f_ glVertexAttrib4f 168 #define glVertexAttrib4fv_ glVertexAttrib4fv 169 #define glVertexAttrib4s_ glVertexAttrib4s 170 #define glVertexAttrib4sv_ glVertexAttrib4sv 171 #define glVertexAttrib4bv_ glVertexAttrib4bv 172 #define glVertexAttrib4iv_ glVertexAttrib4iv 173 #define glVertexAttrib4ubv_ glVertexAttrib4ubv 174 #define glVertexAttrib4uiv_ glVertexAttrib4uiv 175 #define glVertexAttrib4usv_ glVertexAttrib4usv 176 #define glVertexAttrib4Nbv_ glVertexAttrib4Nbv 177 #define glVertexAttrib4Niv_ glVertexAttrib4Niv 178 #define glVertexAttrib4Nub_ glVertexAttrib4Nub 179 #define glVertexAttrib4Nubv_ glVertexAttrib4Nubv 180 #define glVertexAttrib4Nuiv_ glVertexAttrib4Nuiv 181 #define glVertexAttrib4Nusv_ glVertexAttrib4Nusv 182 #define glVertexAttribPointer_ glVertexAttribPointer 183 184 #define glDrawBuffers_ glDrawBuffers 185 #else 186 extern PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays_; 187 extern PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements_; 188 189 extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate_; 190 extern PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate_; 191 extern PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate_; 192 extern PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate_; 193 extern PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate_; 194 195 extern PFNGLGENBUFFERSPROC glGenBuffers_; 196 extern PFNGLBINDBUFFERPROC glBindBuffer_; 197 extern PFNGLMAPBUFFERPROC glMapBuffer_; 198 extern PFNGLUNMAPBUFFERPROC glUnmapBuffer_; 199 extern PFNGLBUFFERDATAPROC glBufferData_; 200 extern PFNGLBUFFERSUBDATAPROC glBufferSubData_; 201 extern PFNGLDELETEBUFFERSPROC glDeleteBuffers_; 202 extern PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData_; 203 204 extern PFNGLGENQUERIESPROC glGenQueries_; 205 extern PFNGLDELETEQUERIESPROC glDeleteQueries_; 206 extern PFNGLBEGINQUERYPROC glBeginQuery_; 207 extern PFNGLENDQUERYPROC glEndQuery_; 208 extern PFNGLGETQUERYIVPROC glGetQueryiv_; 209 extern PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv_; 210 extern PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv_; 211 212 extern PFNGLCREATEPROGRAMPROC glCreateProgram_; 213 extern PFNGLDELETEPROGRAMPROC glDeleteProgram_; 214 extern PFNGLUSEPROGRAMPROC glUseProgram_; 215 extern PFNGLCREATESHADERPROC glCreateShader_; 216 extern PFNGLDELETESHADERPROC glDeleteShader_; 217 extern PFNGLSHADERSOURCEPROC glShaderSource_; 218 extern PFNGLCOMPILESHADERPROC glCompileShader_; 219 extern PFNGLGETSHADERIVPROC glGetShaderiv_; 220 extern PFNGLGETPROGRAMIVPROC glGetProgramiv_; 221 extern PFNGLATTACHSHADERPROC glAttachShader_; 222 extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_; 223 extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_; 224 extern PFNGLLINKPROGRAMPROC glLinkProgram_; 225 extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_; 226 extern PFNGLUNIFORM1FPROC glUniform1f_; 227 extern PFNGLUNIFORM2FPROC glUniform2f_; 228 extern PFNGLUNIFORM3FPROC glUniform3f_; 229 extern PFNGLUNIFORM4FPROC glUniform4f_; 230 extern PFNGLUNIFORM1FVPROC glUniform1fv_; 231 extern PFNGLUNIFORM2FVPROC glUniform2fv_; 232 extern PFNGLUNIFORM3FVPROC glUniform3fv_; 233 extern PFNGLUNIFORM4FVPROC glUniform4fv_; 234 extern PFNGLUNIFORM1IPROC glUniform1i_; 235 extern PFNGLUNIFORM2IPROC glUniform2i_; 236 extern PFNGLUNIFORM3IPROC glUniform3i_; 237 extern PFNGLUNIFORM4IPROC glUniform4i_; 238 extern PFNGLUNIFORM1IVPROC glUniform1iv_; 239 extern PFNGLUNIFORM2IVPROC glUniform2iv_; 240 extern PFNGLUNIFORM3IVPROC glUniform3iv_; 241 extern PFNGLUNIFORM4IVPROC glUniform4iv_; 242 extern PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_; 243 extern PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_; 244 extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_; 245 extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_; 246 extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform_; 247 extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray_; 248 extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray_; 249 250 extern PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_; 251 extern PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv_; 252 extern PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s_; 253 extern PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv_; 254 extern PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_; 255 extern PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv_; 256 extern PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s_; 257 extern PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv_; 258 extern PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_; 259 extern PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv_; 260 extern PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s_; 261 extern PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv_; 262 extern PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_; 263 extern PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv_; 264 extern PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s_; 265 extern PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv_; 266 extern PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv_; 267 extern PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv_; 268 extern PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv_; 269 extern PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv_; 270 extern PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv_; 271 extern PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv_; 272 extern PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv_; 273 extern PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub_; 274 extern PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv_; 275 extern PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv_; 276 extern PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv_; 277 extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer_; 278 279 extern PFNGLDRAWBUFFERSPROC glDrawBuffers_; 280 #endif 281 282 #ifndef GL_VERSION_2_1 283 #define GL_VERSION_2_1 1 284 #define GL_PIXEL_PACK_BUFFER 0x88EB 285 #define GL_PIXEL_UNPACK_BUFFER 0x88EC 286 #endif 287 288 #ifndef GL_EXT_texture_filter_anisotropic 289 #define GL_EXT_texture_filter_anisotropic 1 290 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE 291 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF 292 #endif 293 294 #ifndef GL_EXT_texture_compression_s3tc 295 #define GL_EXT_texture_compression_s3tc 1 296 #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 297 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 298 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 299 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 300 #endif 301 302 #ifndef GL_ARB_framebuffer_object 303 #define GL_ARB_framebuffer_object 1 304 #define GL_DEPTH_STENCIL_ATTACHMENT 0x821A 305 #define GL_DEPTH_STENCIL 0x84F9 306 #define GL_UNSIGNED_INT_24_8 0x84FA 307 #define GL_DEPTH24_STENCIL8 0x88F0 308 #define GL_FRAMEBUFFER_BINDING 0x8CA6 309 #define GL_READ_FRAMEBUFFER 0x8CA8 310 #define GL_DRAW_FRAMEBUFFER 0x8CA9 311 #define GL_FRAMEBUFFER_COMPLETE 0x8CD5 312 #define GL_COLOR_ATTACHMENT0 0x8CE0 313 #define GL_COLOR_ATTACHMENT1 0x8CE1 314 #define GL_DEPTH_ATTACHMENT 0x8D00 315 #define GL_STENCIL_ATTACHMENT 0x8D20 316 #define GL_FRAMEBUFFER 0x8D40 317 #define GL_RENDERBUFFER 0x8D41 318 typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); 319 typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); 320 typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); 321 typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); 322 typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); 323 typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); 324 typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); 325 typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); 326 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); 327 typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); 328 typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); 329 typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); 330 #endif 331 332 // GL_EXT_framebuffer_object 333 extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer_; 334 extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers_; 335 extern PFNGLGENFRAMEBUFFERSPROC glGenRenderbuffers_; 336 extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage_; 337 extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus_; 338 extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer_; 339 extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers_; 340 extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers_; 341 extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D_; 342 extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer_; 343 extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap_; 344 345 // GL_EXT_framebuffer_blit 346 extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer_; 347 348 #ifndef GL_ARB_texture_rg 349 #define GL_ARB_texture_rg 1 350 #define GL_RG 0x8227 351 #define GL_R8 0x8229 352 #define GL_R16 0x822A 353 #define GL_RG8 0x822B 354 #define GL_RG16 0x822C 355 #define GL_R16F 0x822D 356 #define GL_R32F 0x822E 357 #define GL_RG16F 0x822F 358 #define GL_RG32F 0x8230 359 #endif 360 361 #ifndef GL_EXT_texture_compression_latc 362 #define GL_EXT_texture_compression_latc 1 363 #define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 364 #define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 365 #endif 366 367 #ifndef GL_ARB_texture_compression_rgtc 368 #define GL_ARB_texture_compression_rgtc 1 369 #define GL_COMPRESSED_RED_RGTC1 0x8DBB 370 #define GL_COMPRESSED_RG_RGTC2 0x8DBD 371 #endif 372 373 #ifndef GL_ARB_map_buffer_range 374 #define GL_ARB_map_buffer_range 1 375 #define GL_MAP_READ_BIT 0x0001 376 #define GL_MAP_WRITE_BIT 0x0002 377 #define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 378 #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 379 #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 380 #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 381 typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); 382 typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); 383 #endif 384 extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange_; 385 extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange_; 386 387 #ifndef GL_ARB_uniform_buffer_object 388 #define GL_ARB_uniform_buffer_object 1 389 #define GL_UNIFORM_BUFFER 0x8A11 390 #define GL_UNIFORM_BUFFER_BINDING 0x8A28 391 #define GL_UNIFORM_BUFFER_START 0x8A29 392 #define GL_UNIFORM_BUFFER_SIZE 0x8A2A 393 #define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B 394 #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C 395 #define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D 396 #define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E 397 #define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F 398 #define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 399 #define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 400 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 401 #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 402 #define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 403 #define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 404 #define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 405 #define GL_UNIFORM_TYPE 0x8A37 406 #define GL_UNIFORM_SIZE 0x8A38 407 #define GL_UNIFORM_NAME_LENGTH 0x8A39 408 #define GL_UNIFORM_BLOCK_INDEX 0x8A3A 409 #define GL_UNIFORM_OFFSET 0x8A3B 410 #define GL_UNIFORM_ARRAY_STRIDE 0x8A3C 411 #define GL_UNIFORM_MATRIX_STRIDE 0x8A3D 412 #define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E 413 #define GL_UNIFORM_BLOCK_BINDING 0x8A3F 414 #define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 415 #define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 416 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 417 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 418 #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 419 #define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 420 #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 421 #define GL_INVALID_INDEX 0xFFFFFFFFu 422 typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices); 423 typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); 424 typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); 425 typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); 426 typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); 427 #endif 428 #ifndef GL_INVALID_INDEX 429 #define GL_INVALID_INDEX 0xFFFFFFFFu 430 #endif 431 extern PFNGLGETUNIFORMINDICESPROC glGetUniformIndices_; 432 extern PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv_; 433 extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex_; 434 extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv_; 435 extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding_; 436 437 #ifndef GL_VERSION_3_0 438 #define GL_VERSION_3_0 1 439 #define GL_NUM_EXTENSIONS 0x821D 440 #define GL_COMPARE_REF_TO_TEXTURE 0x884E 441 #define GL_MAX_VARYING_COMPONENTS 0x8B4B 442 #define GL_RGBA32F 0x8814 443 #define GL_RGB32F 0x8815 444 #define GL_RGBA16F 0x881A 445 #define GL_RGB16F 0x881B 446 #define GL_COMPRESSED_RED 0x8225 447 #define GL_COMPRESSED_RG 0x8226 448 typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); 449 typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); 450 typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); 451 typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); 452 #elif GL_GLEXT_VERSION < 43 453 typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); 454 typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); 455 #endif 456 457 extern PFNGLGETSTRINGIPROC glGetStringi_; 458 extern PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation_; 459 extern PFNGLBINDBUFFERBASEPROC glBindBufferBase_; 460 extern PFNGLBINDBUFFERRANGEPROC glBindBufferRange_; 461 462 #ifndef GL_VERSION_3_1 463 #define GL_VERSION_3_1 1 464 #define GL_TEXTURE_RECTANGLE 0x84F5 465 #endif 466 467 #ifndef GL_ARB_vertex_array_object 468 #define GL_ARB_vertex_array_object 1 469 #define GL_VERTEX_ARRAY_BINDING 0x85B5 470 typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); 471 typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); 472 typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); 473 typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); 474 #endif 475 extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray_; 476 extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays_; 477 extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays_; 478 extern PFNGLISVERTEXARRAYPROC glIsVertexArray_; 479 480 #ifndef GL_ARB_texture_swizzle 481 #define GL_ARB_texture_swizzle 1 482 #define GL_TEXTURE_SWIZZLE_R 0x8E42 483 #define GL_TEXTURE_SWIZZLE_G 0x8E43 484 #define GL_TEXTURE_SWIZZLE_B 0x8E44 485 #define GL_TEXTURE_SWIZZLE_A 0x8E45 486 #define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 487 #endif 488 489