Go to the documentation of this file.
32 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
35 #ifndef WIN32_LEAN_AND_MEAN
36 #define WIN32_LEAN_AND_MEAN 1 // Exclude advanced Windows headers
37 #endif // WIN32_LEAN_AND_MEAN
41 typedef PROC(__stdcall* GL3WglGetProcAddr)(LPCSTR);
42 static GL3WglGetProcAddr wgl_get_proc_address;
46 libgl = LoadLibraryA(
"opengl32.dll");
50 wgl_get_proc_address = (GL3WglGetProcAddr)GetProcAddress(
libgl,
"wglGetProcAddress");
68 #elif defined(__APPLE__)
75 libgl = dlopen(
"/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
91 *(
void **)(&res) = dlsym(
libgl, proc);
102 libgl = dlopen(
"libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
121 *(
void **)(&res) = dlsym(
libgl, proc);
178 "glActiveShaderProgram",
181 "glBeginConditionalRender",
183 "glBeginQueryIndexed",
184 "glBeginTransformFeedback",
185 "glBindAttribLocation",
190 "glBindBuffersRange",
191 "glBindFragDataLocation",
192 "glBindFragDataLocationIndexed",
194 "glBindImageTexture",
195 "glBindImageTextures",
196 "glBindProgramPipeline",
197 "glBindRenderbuffer",
203 "glBindTransformFeedback",
205 "glBindVertexBuffer",
206 "glBindVertexBuffers",
209 "glBlendEquationSeparate",
210 "glBlendEquationSeparatei",
213 "glBlendFuncSeparate",
214 "glBlendFuncSeparatei",
217 "glBlitNamedFramebuffer",
221 "glCheckFramebufferStatus",
222 "glCheckNamedFramebufferStatus",
226 "glClearBufferSubData",
234 "glClearNamedBufferData",
235 "glClearNamedBufferSubData",
236 "glClearNamedFramebufferfi",
237 "glClearNamedFramebufferfv",
238 "glClearNamedFramebufferiv",
239 "glClearNamedFramebufferuiv",
242 "glClearTexSubImage",
248 "glCompressedTexImage1D",
249 "glCompressedTexImage2D",
250 "glCompressedTexImage3D",
251 "glCompressedTexSubImage1D",
252 "glCompressedTexSubImage2D",
253 "glCompressedTexSubImage3D",
254 "glCompressedTextureSubImage1D",
255 "glCompressedTextureSubImage2D",
256 "glCompressedTextureSubImage3D",
257 "glCopyBufferSubData",
258 "glCopyImageSubData",
259 "glCopyNamedBufferSubData",
262 "glCopyTexSubImage1D",
263 "glCopyTexSubImage2D",
264 "glCopyTexSubImage3D",
265 "glCopyTextureSubImage1D",
266 "glCopyTextureSubImage2D",
267 "glCopyTextureSubImage3D",
269 "glCreateFramebuffers",
271 "glCreateProgramPipelines",
273 "glCreateRenderbuffers",
276 "glCreateShaderProgramv",
278 "glCreateTransformFeedbacks",
279 "glCreateVertexArrays",
281 "glDebugMessageCallback",
282 "glDebugMessageControl",
283 "glDebugMessageInsert",
285 "glDeleteFramebuffers",
287 "glDeleteProgramPipelines",
289 "glDeleteRenderbuffers",
294 "glDeleteTransformFeedbacks",
295 "glDeleteVertexArrays",
299 "glDepthRangeArrayv",
300 "glDepthRangeIndexed",
304 "glDisableVertexArrayAttrib",
305 "glDisableVertexAttribArray",
308 "glDispatchComputeIndirect",
310 "glDrawArraysIndirect",
311 "glDrawArraysInstanced",
312 "glDrawArraysInstancedBaseInstance",
316 "glDrawElementsBaseVertex",
317 "glDrawElementsIndirect",
318 "glDrawElementsInstanced",
319 "glDrawElementsInstancedBaseInstance",
320 "glDrawElementsInstancedBaseVertex",
321 "glDrawElementsInstancedBaseVertexBaseInstance",
322 "glDrawRangeElements",
323 "glDrawRangeElementsBaseVertex",
324 "glDrawTransformFeedback",
325 "glDrawTransformFeedbackInstanced",
326 "glDrawTransformFeedbackStream",
327 "glDrawTransformFeedbackStreamInstanced",
329 "glEnableVertexArrayAttrib",
330 "glEnableVertexAttribArray",
332 "glEndConditionalRender",
335 "glEndTransformFeedback",
339 "glFlushMappedBufferRange",
340 "glFlushMappedNamedBufferRange",
341 "glFramebufferParameteri",
342 "glFramebufferParameteriMESA",
343 "glFramebufferRenderbuffer",
344 "glFramebufferTexture",
345 "glFramebufferTexture1D",
346 "glFramebufferTexture2D",
347 "glFramebufferTexture3D",
348 "glFramebufferTextureLayer",
352 "glGenProgramPipelines",
354 "glGenRenderbuffers",
357 "glGenTransformFeedbacks",
360 "glGenerateTextureMipmap",
361 "glGetActiveAtomicCounterBufferiv",
363 "glGetActiveSubroutineName",
364 "glGetActiveSubroutineUniformName",
365 "glGetActiveSubroutineUniformiv",
366 "glGetActiveUniform",
367 "glGetActiveUniformBlockName",
368 "glGetActiveUniformBlockiv",
369 "glGetActiveUniformName",
370 "glGetActiveUniformsiv",
371 "glGetAttachedShaders",
372 "glGetAttribLocation",
375 "glGetBufferParameteri64v",
376 "glGetBufferParameteriv",
377 "glGetBufferPointerv",
378 "glGetBufferSubData",
379 "glGetCompressedTexImage",
380 "glGetCompressedTextureImage",
381 "glGetCompressedTextureSubImage",
382 "glGetDebugMessageLog",
388 "glGetFragDataIndex",
389 "glGetFragDataLocation",
390 "glGetFramebufferAttachmentParameteriv",
391 "glGetFramebufferParameteriv",
392 "glGetFramebufferParameterivMESA",
393 "glGetGraphicsResetStatus",
398 "glGetInternalformati64v",
399 "glGetInternalformativ",
400 "glGetMultisamplefv",
401 "glGetNamedBufferParameteri64v",
402 "glGetNamedBufferParameteriv",
403 "glGetNamedBufferPointerv",
404 "glGetNamedBufferSubData",
405 "glGetNamedFramebufferAttachmentParameteriv",
406 "glGetNamedFramebufferParameteriv",
407 "glGetNamedRenderbufferParameteriv",
409 "glGetObjectPtrLabel",
411 "glGetProgramBinary",
412 "glGetProgramInfoLog",
413 "glGetProgramInterfaceiv",
414 "glGetProgramPipelineInfoLog",
415 "glGetProgramPipelineiv",
416 "glGetProgramResourceIndex",
417 "glGetProgramResourceLocation",
418 "glGetProgramResourceLocationIndex",
419 "glGetProgramResourceName",
420 "glGetProgramResourceiv",
421 "glGetProgramStageiv",
423 "glGetQueryBufferObjecti64v",
424 "glGetQueryBufferObjectiv",
425 "glGetQueryBufferObjectui64v",
426 "glGetQueryBufferObjectuiv",
427 "glGetQueryIndexediv",
428 "glGetQueryObjecti64v",
429 "glGetQueryObjectiv",
430 "glGetQueryObjectui64v",
431 "glGetQueryObjectuiv",
433 "glGetRenderbufferParameteriv",
434 "glGetSamplerParameterIiv",
435 "glGetSamplerParameterIuiv",
436 "glGetSamplerParameterfv",
437 "glGetSamplerParameteriv",
438 "glGetShaderInfoLog",
439 "glGetShaderPrecisionFormat",
444 "glGetSubroutineIndex",
445 "glGetSubroutineUniformLocation",
448 "glGetTexLevelParameterfv",
449 "glGetTexLevelParameteriv",
450 "glGetTexParameterIiv",
451 "glGetTexParameterIuiv",
452 "glGetTexParameterfv",
453 "glGetTexParameteriv",
455 "glGetTextureLevelParameterfv",
456 "glGetTextureLevelParameteriv",
457 "glGetTextureParameterIiv",
458 "glGetTextureParameterIuiv",
459 "glGetTextureParameterfv",
460 "glGetTextureParameteriv",
461 "glGetTextureSubImage",
462 "glGetTransformFeedbackVarying",
463 "glGetTransformFeedbacki64_v",
464 "glGetTransformFeedbacki_v",
465 "glGetTransformFeedbackiv",
466 "glGetUniformBlockIndex",
467 "glGetUniformIndices",
468 "glGetUniformLocation",
469 "glGetUniformSubroutineuiv",
474 "glGetVertexArrayIndexed64iv",
475 "glGetVertexArrayIndexediv",
476 "glGetVertexArrayiv",
477 "glGetVertexAttribIiv",
478 "glGetVertexAttribIuiv",
479 "glGetVertexAttribLdv",
480 "glGetVertexAttribPointerv",
481 "glGetVertexAttribdv",
482 "glGetVertexAttribfv",
483 "glGetVertexAttribiv",
484 "glGetnCompressedTexImage",
491 "glInvalidateBufferData",
492 "glInvalidateBufferSubData",
493 "glInvalidateFramebuffer",
494 "glInvalidateNamedFramebufferData",
495 "glInvalidateNamedFramebufferSubData",
496 "glInvalidateSubFramebuffer",
497 "glInvalidateTexImage",
498 "glInvalidateTexSubImage",
504 "glIsProgramPipeline",
511 "glIsTransformFeedback",
519 "glMapNamedBufferRange",
521 "glMemoryBarrierByRegion",
522 "glMinSampleShading",
524 "glMultiDrawArraysIndirect",
525 "glMultiDrawArraysIndirectCount",
526 "glMultiDrawElements",
527 "glMultiDrawElementsBaseVertex",
528 "glMultiDrawElementsIndirect",
529 "glMultiDrawElementsIndirectCount",
531 "glNamedBufferStorage",
532 "glNamedBufferSubData",
533 "glNamedFramebufferDrawBuffer",
534 "glNamedFramebufferDrawBuffers",
535 "glNamedFramebufferParameteri",
536 "glNamedFramebufferReadBuffer",
537 "glNamedFramebufferRenderbuffer",
538 "glNamedFramebufferTexture",
539 "glNamedFramebufferTextureLayer",
540 "glNamedRenderbufferStorage",
541 "glNamedRenderbufferStorageMultisample",
544 "glPatchParameterfv",
546 "glPauseTransformFeedback",
550 "glPointParameterfv",
552 "glPointParameteriv",
556 "glPolygonOffsetClamp",
558 "glPrimitiveRestartIndex",
560 "glProgramParameteri",
561 "glProgramUniform1d",
562 "glProgramUniform1dv",
563 "glProgramUniform1f",
564 "glProgramUniform1fv",
565 "glProgramUniform1i",
566 "glProgramUniform1iv",
567 "glProgramUniform1ui",
568 "glProgramUniform1uiv",
569 "glProgramUniform2d",
570 "glProgramUniform2dv",
571 "glProgramUniform2f",
572 "glProgramUniform2fv",
573 "glProgramUniform2i",
574 "glProgramUniform2iv",
575 "glProgramUniform2ui",
576 "glProgramUniform2uiv",
577 "glProgramUniform3d",
578 "glProgramUniform3dv",
579 "glProgramUniform3f",
580 "glProgramUniform3fv",
581 "glProgramUniform3i",
582 "glProgramUniform3iv",
583 "glProgramUniform3ui",
584 "glProgramUniform3uiv",
585 "glProgramUniform4d",
586 "glProgramUniform4dv",
587 "glProgramUniform4f",
588 "glProgramUniform4fv",
589 "glProgramUniform4i",
590 "glProgramUniform4iv",
591 "glProgramUniform4ui",
592 "glProgramUniform4uiv",
593 "glProgramUniformMatrix2dv",
594 "glProgramUniformMatrix2fv",
595 "glProgramUniformMatrix2x3dv",
596 "glProgramUniformMatrix2x3fv",
597 "glProgramUniformMatrix2x4dv",
598 "glProgramUniformMatrix2x4fv",
599 "glProgramUniformMatrix3dv",
600 "glProgramUniformMatrix3fv",
601 "glProgramUniformMatrix3x2dv",
602 "glProgramUniformMatrix3x2fv",
603 "glProgramUniformMatrix3x4dv",
604 "glProgramUniformMatrix3x4fv",
605 "glProgramUniformMatrix4dv",
606 "glProgramUniformMatrix4fv",
607 "glProgramUniformMatrix4x2dv",
608 "glProgramUniformMatrix4x2fv",
609 "glProgramUniformMatrix4x3dv",
610 "glProgramUniformMatrix4x3fv",
617 "glReleaseShaderCompiler",
618 "glRenderbufferStorage",
619 "glRenderbufferStorageMultisample",
620 "glResumeTransformFeedback",
623 "glSamplerParameterIiv",
624 "glSamplerParameterIuiv",
625 "glSamplerParameterf",
626 "glSamplerParameterfv",
627 "glSamplerParameteri",
628 "glSamplerParameteriv",
635 "glShaderStorageBlockBinding",
636 "glSpecializeShader",
638 "glStencilFuncSeparate",
640 "glStencilMaskSeparate",
642 "glStencilOpSeparate",
647 "glTexImage2DMultisample",
649 "glTexImage3DMultisample",
651 "glTexParameterIuiv",
658 "glTexStorage2DMultisample",
660 "glTexStorage3DMultisample",
666 "glTextureBufferRange",
667 "glTextureParameterIiv",
668 "glTextureParameterIuiv",
669 "glTextureParameterf",
670 "glTextureParameterfv",
671 "glTextureParameteri",
672 "glTextureParameteriv",
673 "glTextureStorage1D",
674 "glTextureStorage2D",
675 "glTextureStorage2DMultisample",
676 "glTextureStorage3D",
677 "glTextureStorage3DMultisample",
678 "glTextureSubImage1D",
679 "glTextureSubImage2D",
680 "glTextureSubImage3D",
682 "glTransformFeedbackBufferBase",
683 "glTransformFeedbackBufferRange",
684 "glTransformFeedbackVaryings",
717 "glUniformBlockBinding",
718 "glUniformMatrix2dv",
719 "glUniformMatrix2fv",
720 "glUniformMatrix2x3dv",
721 "glUniformMatrix2x3fv",
722 "glUniformMatrix2x4dv",
723 "glUniformMatrix2x4fv",
724 "glUniformMatrix3dv",
725 "glUniformMatrix3fv",
726 "glUniformMatrix3x2dv",
727 "glUniformMatrix3x2fv",
728 "glUniformMatrix3x4dv",
729 "glUniformMatrix3x4fv",
730 "glUniformMatrix4dv",
731 "glUniformMatrix4fv",
732 "glUniformMatrix4x2dv",
733 "glUniformMatrix4x2fv",
734 "glUniformMatrix4x3dv",
735 "glUniformMatrix4x3fv",
736 "glUniformSubroutinesuiv",
738 "glUnmapNamedBuffer",
740 "glUseProgramStages",
742 "glValidateProgramPipeline",
743 "glVertexArrayAttribBinding",
744 "glVertexArrayAttribFormat",
745 "glVertexArrayAttribIFormat",
746 "glVertexArrayAttribLFormat",
747 "glVertexArrayBindingDivisor",
748 "glVertexArrayElementBuffer",
749 "glVertexArrayVertexBuffer",
750 "glVertexArrayVertexBuffers",
769 "glVertexAttrib4Nbv",
770 "glVertexAttrib4Niv",
771 "glVertexAttrib4Nsv",
772 "glVertexAttrib4Nub",
773 "glVertexAttrib4Nubv",
774 "glVertexAttrib4Nuiv",
775 "glVertexAttrib4Nusv",
784 "glVertexAttrib4ubv",
785 "glVertexAttrib4uiv",
786 "glVertexAttrib4usv",
787 "glVertexAttribBinding",
788 "glVertexAttribDivisor",
789 "glVertexAttribFormat",
791 "glVertexAttribI1iv",
792 "glVertexAttribI1ui",
793 "glVertexAttribI1uiv",
795 "glVertexAttribI2iv",
796 "glVertexAttribI2ui",
797 "glVertexAttribI2uiv",
799 "glVertexAttribI3iv",
800 "glVertexAttribI3ui",
801 "glVertexAttribI3uiv",
802 "glVertexAttribI4bv",
804 "glVertexAttribI4iv",
805 "glVertexAttribI4sv",
806 "glVertexAttribI4ubv",
807 "glVertexAttribI4ui",
808 "glVertexAttribI4uiv",
809 "glVertexAttribI4usv",
810 "glVertexAttribIFormat",
811 "glVertexAttribIPointer",
813 "glVertexAttribL1dv",
815 "glVertexAttribL2dv",
817 "glVertexAttribL3dv",
819 "glVertexAttribL4dv",
820 "glVertexAttribLFormat",
821 "glVertexAttribLPointer",
822 "glVertexAttribP1ui",
823 "glVertexAttribP1uiv",
824 "glVertexAttribP2ui",
825 "glVertexAttribP2uiv",
826 "glVertexAttribP3ui",
827 "glVertexAttribP3uiv",
828 "glVertexAttribP4ui",
829 "glVertexAttribP4uiv",
830 "glVertexAttribPointer",
831 "glVertexBindingDivisor",
834 "glViewportIndexedf",
835 "glViewportIndexedfv",
GL3WglProc(* GL3WGetProcAddressProc)(const char *proc)
static int parse_version(void)
int gl3wInit2(GL3WGetProcAddressProc proc)
GL3WglProc gl3wGetProcAddress(const char *proc)
static GL3WglProc get_proc(const char *proc)
static GL3WglProc(* glx_get_proc_address)(const GLubyte *)
#define GL3W_ERROR_OPENGL_VERSION
static void close_libgl(void)
static void load_procs(GL3WGetProcAddressProc proc)
int gl3wIsSupported(int major, int minor)
static const char * proc_names[]
static int open_libgl(void)
union GL3WProcs gl3wProcs
#define GL3W_ERROR_LIBRARY_OPEN
quori_face
Author(s):
autogenerated on Wed Mar 2 2022 00:53:20