PageRenderTime 51ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/dependencies/glfw-3.1.2/deps/glad.c

https://gitlab.com/ciecierskij/InfinityX2
C | 753 lines | 737 code | 12 blank | 4 comment | 56 complexity | 4fe82ddf8dda2ad10bbcd2d06b1a7d89 MD5 | raw file
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <glad/glad.h>
  4. struct gladGLversionStruct GLVersion;
  5. #if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0)
  6. #define _GLAD_IS_SOME_NEW_VERSION 1
  7. #endif
  8. int GLAD_GL_VERSION_1_0;
  9. int GLAD_GL_VERSION_1_1;
  10. int GLAD_GL_VERSION_1_2;
  11. int GLAD_GL_VERSION_1_3;
  12. int GLAD_GL_VERSION_1_4;
  13. int GLAD_GL_VERSION_1_5;
  14. int GLAD_GL_VERSION_2_0;
  15. int GLAD_GL_VERSION_2_1;
  16. int GLAD_GL_VERSION_3_0;
  17. int GLAD_GL_VERSION_3_1;
  18. int GLAD_GL_VERSION_3_2;
  19. PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays;
  20. PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback;
  21. PFNGLFLUSHPROC glad_glFlush;
  22. PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D;
  23. PFNGLCLEARCOLORPROC glad_glClearColor;
  24. PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui;
  25. PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex;
  26. PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv;
  27. PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv;
  28. PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate;
  29. PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv;
  30. PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv;
  31. PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation;
  32. PFNGLLINKPROGRAMPROC glad_glLinkProgram;
  33. PFNGLBINDTEXTUREPROC glad_glBindTexture;
  34. PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName;
  35. PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv;
  36. PFNGLFENCESYNCPROC glad_glFenceSync;
  37. PFNGLUNIFORM3UIPROC glad_glUniform3ui;
  38. PFNGLUNIFORM2UIVPROC glad_glUniform2uiv;
  39. PFNGLGETSTRINGPROC glad_glGetString;
  40. PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D;
  41. PFNGLDETACHSHADERPROC glad_glDetachShader;
  42. PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv;
  43. PFNGLGENBUFFERSPROC glad_glGenBuffers;
  44. PFNGLENDQUERYPROC glad_glEndQuery;
  45. PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv;
  46. PFNGLLINEWIDTHPROC glad_glLineWidth;
  47. PFNGLUNIFORM2FVPROC glad_glUniform2fv;
  48. PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced;
  49. PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v;
  50. PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation;
  51. PFNGLCOMPILESHADERPROC glad_glCompileShader;
  52. PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying;
  53. PFNGLDELETETEXTURESPROC glad_glDeleteTextures;
  54. PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate;
  55. PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv;
  56. PFNGLPOLYGONMODEPROC glad_glPolygonMode;
  57. PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange;
  58. PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f;
  59. PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers;
  60. PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d;
  61. PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f;
  62. PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v;
  63. PFNGLISSYNCPROC glad_glIsSync;
  64. PFNGLCLAMPCOLORPROC glad_glClampColor;
  65. PFNGLUNIFORM4IVPROC glad_glUniform4iv;
  66. PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv;
  67. PFNGLCLEARSTENCILPROC glad_glClearStencil;
  68. PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture;
  69. PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv;
  70. PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s;
  71. PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex;
  72. PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv;
  73. PFNGLENABLEIPROC glad_glEnablei;
  74. PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage;
  75. PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv;
  76. PFNGLGENTEXTURESPROC glad_glGenTextures;
  77. PFNGLDEPTHFUNCPROC glad_glDepthFunc;
  78. PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D;
  79. PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv;
  80. PFNGLUNIFORM1FPROC glad_glUniform1f;
  81. PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv;
  82. PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv;
  83. PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv;
  84. PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv;
  85. PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage;
  86. PFNGLISVERTEXARRAYPROC glad_glIsVertexArray;
  87. PFNGLCREATESHADERPROC glad_glCreateShader;
  88. PFNGLISBUFFERPROC glad_glIsBuffer;
  89. PFNGLUNIFORM1IPROC glad_glUniform1i;
  90. PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s;
  91. PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib;
  92. PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D;
  93. PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv;
  94. PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D;
  95. PFNGLDISABLEPROC glad_glDisable;
  96. PFNGLUNIFORM2IPROC glad_glUniform2i;
  97. PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate;
  98. PFNGLLOGICOPPROC glad_glLogicOp;
  99. PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv;
  100. PFNGLGETPROGRAMIVPROC glad_glGetProgramiv;
  101. PFNGLCOLORMASKPROC glad_glColorMask;
  102. PFNGLHINTPROC glad_glHint;
  103. PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s;
  104. PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer;
  105. PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv;
  106. PFNGLBLENDEQUATIONPROC glad_glBlendEquation;
  107. PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation;
  108. PFNGLSAMPLEMASKIPROC glad_glSampleMaski;
  109. PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer;
  110. PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback;
  111. PFNGLCULLFACEPROC glad_glCullFace;
  112. PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv;
  113. PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv;
  114. PFNGLUNIFORM4FVPROC glad_glUniform4fv;
  115. PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv;
  116. PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers;
  117. PFNGLUNIFORM1UIVPROC glad_glUniform1uiv;
  118. PFNGLPOINTSIZEPROC glad_glPointSize;
  119. PFNGLGETSTRINGIPROC glad_glGetStringi;
  120. PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv;
  121. PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv;
  122. PFNGLDELETEPROGRAMPROC glad_glDeleteProgram;
  123. PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv;
  124. PFNGLGENQUERIESPROC glad_glGenQueries;
  125. PFNGLWAITSYNCPROC glad_glWaitSync;
  126. PFNGLATTACHSHADERPROC glad_glAttachShader;
  127. PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer;
  128. PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage;
  129. PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;
  130. PFNGLUNIFORM3IPROC glad_glUniform3i;
  131. PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D;
  132. PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D;
  133. PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex;
  134. PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus;
  135. PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D;
  136. PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v;
  137. PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex;
  138. PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv;
  139. PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D;
  140. PFNGLUNIFORM3FPROC glad_glUniform3f;
  141. PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv;
  142. PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv;
  143. PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv;
  144. PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender;
  145. PFNGLDRAWELEMENTSPROC glad_glDrawElements;
  146. PFNGLCOLORMASKIPROC glad_glColorMaski;
  147. PFNGLISENABLEDIPROC glad_glIsEnabledi;
  148. PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv;
  149. PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements;
  150. PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv;
  151. PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays;
  152. PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase;
  153. PFNGLBUFFERSUBDATAPROC glad_glBufferSubData;
  154. PFNGLUNIFORM1IVPROC glad_glUniform1iv;
  155. PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv;
  156. PFNGLUNIFORM4UIVPROC glad_glUniform4uiv;
  157. PFNGLREADBUFFERPROC glad_glReadBuffer;
  158. PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData;
  159. PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray;
  160. PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync;
  161. PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender;
  162. PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv;
  163. PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui;
  164. PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap;
  165. PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays;
  166. PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D;
  167. PFNGLGETSHADERIVPROC glad_glGetShaderiv;
  168. PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv;
  169. PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv;
  170. PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f;
  171. PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv;
  172. PFNGLPOINTPARAMETERIPROC glad_glPointParameteri;
  173. PFNGLBLENDCOLORPROC glad_glBlendColor;
  174. PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray;
  175. PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer;
  176. PFNGLDEPTHMASKPROC glad_glDepthMask;
  177. PFNGLPOINTPARAMETERFPROC glad_glPointParameterf;
  178. PFNGLDISABLEIPROC glad_glDisablei;
  179. PFNGLGETDOUBLEVPROC glad_glGetDoublev;
  180. PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv;
  181. PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv;
  182. PFNGLSHADERSOURCEPROC glad_glShaderSource;
  183. PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer;
  184. PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D;
  185. PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv;
  186. PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv;
  187. PFNGLDRAWARRAYSPROC glad_glDrawArrays;
  188. PFNGLUNIFORM1UIPROC glad_glUniform1ui;
  189. PFNGLISPROGRAMPROC glad_glIsProgram;
  190. PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv;
  191. PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation;
  192. PFNGLGETSYNCIVPROC glad_glGetSynciv;
  193. PFNGLGETUNIFORMIVPROC glad_glGetUniformiv;
  194. PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i;
  195. PFNGLUNIFORM4IPROC glad_glUniform4i;
  196. PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d;
  197. PFNGLCLEARPROC glad_glClear;
  198. PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv;
  199. PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName;
  200. PFNGLUNIFORM2FPROC glad_glUniform2f;
  201. PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample;
  202. PFNGLACTIVETEXTUREPROC glad_glActiveTexture;
  203. PFNGLBEGINQUERYPROC glad_glBeginQuery;
  204. PFNGLUNIFORM2IVPROC glad_glUniform2iv;
  205. PFNGLBINDBUFFERPROC glad_glBindBuffer;
  206. PFNGLISENABLEDPROC glad_glIsEnabled;
  207. PFNGLSTENCILOPPROC glad_glStencilOp;
  208. PFNGLREADPIXELSPROC glad_glReadPixels;
  209. PFNGLCLEARDEPTHPROC glad_glClearDepth;
  210. PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv;
  211. PFNGLUNIFORM4FPROC glad_glUniform4f;
  212. PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D;
  213. PFNGLMAPBUFFERPROC glad_glMapBuffer;
  214. PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d;
  215. PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub;
  216. PFNGLUNIFORM3FVPROC glad_glUniform3fv;
  217. PFNGLGETUNIFORMFVPROC glad_glGetUniformfv;
  218. PFNGLBUFFERDATAPROC glad_glBufferData;
  219. PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv;
  220. PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D;
  221. PFNGLTEXIMAGE1DPROC glad_glTexImage1D;
  222. PFNGLDELETESYNCPROC glad_glDeleteSync;
  223. PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D;
  224. PFNGLGETERRORPROC glad_glGetError;
  225. PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers;
  226. PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv;
  227. PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv;
  228. PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements;
  229. PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv;
  230. PFNGLGETFLOATVPROC glad_glGetFloatv;
  231. PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D;
  232. PFNGLUNIFORM3IVPROC glad_glUniform3iv;
  233. PFNGLGETTEXIMAGEPROC glad_glGetTexImage;
  234. PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv;
  235. PFNGLUSEPROGRAMPROC glad_glUseProgram;
  236. PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv;
  237. PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv;
  238. PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i;
  239. PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers;
  240. PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer;
  241. PFNGLDRAWBUFFERSPROC glad_glDrawBuffers;
  242. PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv;
  243. PFNGLSTENCILFUNCPROC glad_glStencilFunc;
  244. PFNGLGETINTEGERVPROC glad_glGetIntegerv;
  245. PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders;
  246. PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding;
  247. PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer;
  248. PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv;
  249. PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv;
  250. PFNGLDRAWBUFFERPROC glad_glDrawBuffer;
  251. PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D;
  252. PFNGLUNIFORM1FVPROC glad_glUniform1fv;
  253. PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample;
  254. PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange;
  255. PFNGLISQUERYPROC glad_glIsQuery;
  256. PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv;
  257. PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv;
  258. PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray;
  259. PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv;
  260. PFNGLGETQUERYIVPROC glad_glGetQueryiv;
  261. PFNGLTEXIMAGE2DPROC glad_glTexImage2D;
  262. PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog;
  263. PFNGLSTENCILMASKPROC glad_glStencilMask;
  264. PFNGLUNIFORM4UIPROC glad_glUniform4ui;
  265. PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv;
  266. PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog;
  267. PFNGLISTEXTUREPROC glad_glIsTexture;
  268. PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices;
  269. PFNGLISSHADERPROC glad_glIsShader;
  270. PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource;
  271. PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv;
  272. PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv;
  273. PFNGLGETINTEGER64VPROC glad_glGetInteger64v;
  274. PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer;
  275. PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv;
  276. PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData;
  277. PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv;
  278. PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv;
  279. PFNGLENABLEPROC glad_glEnable;
  280. PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv;
  281. PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced;
  282. PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i;
  283. PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate;
  284. PFNGLDELETEQUERIESPROC glad_glDeleteQueries;
  285. PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv;
  286. PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate;
  287. PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui;
  288. PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D;
  289. PFNGLFINISHPROC glad_glFinish;
  290. PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation;
  291. PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv;
  292. PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv;
  293. PFNGLDELETESHADERPROC glad_glDeleteShader;
  294. PFNGLBLENDFUNCPROC glad_glBlendFunc;
  295. PFNGLCREATEPROGRAMPROC glad_glCreateProgram;
  296. PFNGLTEXIMAGE3DPROC glad_glTexImage3D;
  297. PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv;
  298. PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer;
  299. PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui;
  300. PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange;
  301. PFNGLVIEWPORTPROC glad_glViewport;
  302. PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv;
  303. PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d;
  304. PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings;
  305. PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f;
  306. PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv;
  307. PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex;
  308. PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex;
  309. PFNGLUNIFORM2UIPROC glad_glUniform2ui;
  310. PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset;
  311. PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv;
  312. PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i;
  313. PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s;
  314. PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample;
  315. PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv;
  316. PFNGLDEPTHRANGEPROC glad_glDepthRange;
  317. PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform;
  318. PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv;
  319. PFNGLTEXPARAMETERFPROC glad_glTexParameterf;
  320. PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi;
  321. PFNGLTEXPARAMETERIPROC glad_glTexParameteri;
  322. PFNGLFRONTFACEPROC glad_glFrontFace;
  323. PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers;
  324. PFNGLSCISSORPROC glad_glScissor;
  325. PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex;
  326. PFNGLGETBOOLEANVPROC glad_glGetBooleanv;
  327. PFNGLTEXBUFFERPROC glad_glTexBuffer;
  328. PFNGLPIXELSTOREIPROC glad_glPixelStorei;
  329. PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram;
  330. PFNGLPIXELSTOREFPROC glad_glPixelStoref;
  331. PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv;
  332. PFNGLUNIFORM3UIVPROC glad_glUniform3uiv;
  333. PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v;
  334. PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer;
  335. static void load_GL_VERSION_1_0(GLADloadproc load) {
  336. if(!GLAD_GL_VERSION_1_0) return;
  337. glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace");
  338. glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace");
  339. glad_glHint = (PFNGLHINTPROC)load("glHint");
  340. glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth");
  341. glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize");
  342. glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode");
  343. glad_glScissor = (PFNGLSCISSORPROC)load("glScissor");
  344. glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf");
  345. glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv");
  346. glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri");
  347. glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv");
  348. glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D");
  349. glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D");
  350. glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer");
  351. glad_glClear = (PFNGLCLEARPROC)load("glClear");
  352. glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor");
  353. glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil");
  354. glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth");
  355. glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask");
  356. glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask");
  357. glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask");
  358. glad_glDisable = (PFNGLDISABLEPROC)load("glDisable");
  359. glad_glEnable = (PFNGLENABLEPROC)load("glEnable");
  360. glad_glFinish = (PFNGLFINISHPROC)load("glFinish");
  361. glad_glFlush = (PFNGLFLUSHPROC)load("glFlush");
  362. glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc");
  363. glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp");
  364. glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc");
  365. glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp");
  366. glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc");
  367. glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref");
  368. glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei");
  369. glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer");
  370. glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels");
  371. glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv");
  372. glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev");
  373. glad_glGetError = (PFNGLGETERRORPROC)load("glGetError");
  374. glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv");
  375. glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv");
  376. glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString");
  377. glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage");
  378. glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv");
  379. glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv");
  380. glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv");
  381. glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv");
  382. glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled");
  383. glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange");
  384. glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport");
  385. }
  386. static void load_GL_VERSION_1_1(GLADloadproc load) {
  387. if(!GLAD_GL_VERSION_1_1) return;
  388. glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays");
  389. glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements");
  390. glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset");
  391. glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D");
  392. glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D");
  393. glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D");
  394. glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D");
  395. glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D");
  396. glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D");
  397. glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture");
  398. glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures");
  399. glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures");
  400. glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture");
  401. }
  402. static void load_GL_VERSION_1_2(GLADloadproc load) {
  403. if(!GLAD_GL_VERSION_1_2) return;
  404. glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements");
  405. glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D");
  406. glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D");
  407. glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D");
  408. }
  409. static void load_GL_VERSION_1_3(GLADloadproc load) {
  410. if(!GLAD_GL_VERSION_1_3) return;
  411. glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture");
  412. glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage");
  413. glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D");
  414. glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D");
  415. glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D");
  416. glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D");
  417. glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D");
  418. glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D");
  419. glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage");
  420. }
  421. static void load_GL_VERSION_1_4(GLADloadproc load) {
  422. if(!GLAD_GL_VERSION_1_4) return;
  423. glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate");
  424. glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays");
  425. glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements");
  426. glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf");
  427. glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv");
  428. glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri");
  429. glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv");
  430. glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor");
  431. glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation");
  432. }
  433. static void load_GL_VERSION_1_5(GLADloadproc load) {
  434. if(!GLAD_GL_VERSION_1_5) return;
  435. glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries");
  436. glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries");
  437. glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery");
  438. glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery");
  439. glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery");
  440. glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv");
  441. glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv");
  442. glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv");
  443. glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer");
  444. glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers");
  445. glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers");
  446. glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer");
  447. glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData");
  448. glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData");
  449. glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData");
  450. glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer");
  451. glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer");
  452. glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv");
  453. glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv");
  454. }
  455. static void load_GL_VERSION_2_0(GLADloadproc load) {
  456. if(!GLAD_GL_VERSION_2_0) return;
  457. glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate");
  458. glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers");
  459. glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate");
  460. glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate");
  461. glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate");
  462. glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader");
  463. glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation");
  464. glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader");
  465. glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram");
  466. glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader");
  467. glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram");
  468. glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader");
  469. glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader");
  470. glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray");
  471. glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray");
  472. glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib");
  473. glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform");
  474. glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders");
  475. glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation");
  476. glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv");
  477. glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog");
  478. glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv");
  479. glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog");
  480. glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource");
  481. glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation");
  482. glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv");
  483. glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv");
  484. glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv");
  485. glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv");
  486. glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv");
  487. glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv");
  488. glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram");
  489. glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader");
  490. glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram");
  491. glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource");
  492. glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram");
  493. glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f");
  494. glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f");
  495. glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f");
  496. glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f");
  497. glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i");
  498. glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i");
  499. glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i");
  500. glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i");
  501. glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv");
  502. glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv");
  503. glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv");
  504. glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv");
  505. glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv");
  506. glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv");
  507. glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv");
  508. glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv");
  509. glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv");
  510. glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv");
  511. glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv");
  512. glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram");
  513. glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d");
  514. glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv");
  515. glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f");
  516. glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv");
  517. glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s");
  518. glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv");
  519. glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d");
  520. glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv");
  521. glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f");
  522. glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv");
  523. glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s");
  524. glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv");
  525. glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d");
  526. glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv");
  527. glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f");
  528. glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv");
  529. glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s");
  530. glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv");
  531. glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv");
  532. glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv");
  533. glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv");
  534. glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub");
  535. glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv");
  536. glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv");
  537. glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv");
  538. glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv");
  539. glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d");
  540. glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv");
  541. glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f");
  542. glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv");
  543. glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv");
  544. glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s");
  545. glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv");
  546. glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv");
  547. glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv");
  548. glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv");
  549. glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer");
  550. }
  551. static void load_GL_VERSION_2_1(GLADloadproc load) {
  552. if(!GLAD_GL_VERSION_2_1) return;
  553. glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv");
  554. glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv");
  555. glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv");
  556. glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv");
  557. glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv");
  558. glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv");
  559. }
  560. static void load_GL_VERSION_3_0(GLADloadproc load) {
  561. if(!GLAD_GL_VERSION_3_0) return;
  562. glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski");
  563. glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v");
  564. glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v");
  565. glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei");
  566. glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei");
  567. glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi");
  568. glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback");
  569. glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback");
  570. glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange");
  571. glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase");
  572. glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings");
  573. glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying");
  574. glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor");
  575. glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender");
  576. glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender");
  577. glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer");
  578. glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv");
  579. glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv");
  580. glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i");
  581. glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i");
  582. glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i");
  583. glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i");
  584. glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui");
  585. glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui");
  586. glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui");
  587. glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui");
  588. glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv");
  589. glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv");
  590. glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv");
  591. glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv");
  592. glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv");
  593. glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv");
  594. glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv");
  595. glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv");
  596. glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv");
  597. glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv");
  598. glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv");
  599. glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv");
  600. glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv");
  601. glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation");
  602. glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation");
  603. glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui");
  604. glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui");
  605. glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui");
  606. glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui");
  607. glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv");
  608. glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv");
  609. glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv");
  610. glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv");
  611. glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv");
  612. glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv");
  613. glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv");
  614. glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv");
  615. glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv");
  616. glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv");
  617. glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv");
  618. glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi");
  619. glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi");
  620. glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer");
  621. glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer");
  622. glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers");
  623. glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers");
  624. glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage");
  625. glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv");
  626. glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer");
  627. glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer");
  628. glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers");
  629. glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers");
  630. glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus");
  631. glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D");
  632. glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D");
  633. glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D");
  634. glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer");
  635. glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv");
  636. glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap");
  637. glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer");
  638. glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample");
  639. glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer");
  640. glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange");
  641. glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange");
  642. glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray");
  643. glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays");
  644. glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays");
  645. glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray");
  646. }
  647. static void load_GL_VERSION_3_1(GLADloadproc load) {
  648. if(!GLAD_GL_VERSION_3_1) return;
  649. glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced");
  650. glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced");
  651. glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer");
  652. glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex");
  653. glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData");
  654. glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices");
  655. glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv");
  656. glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName");
  657. glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex");
  658. glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv");
  659. glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName");
  660. glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding");
  661. }
  662. static void load_GL_VERSION_3_2(GLADloadproc load) {
  663. if(!GLAD_GL_VERSION_3_2) return;
  664. glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex");
  665. glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex");
  666. glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex");
  667. glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex");
  668. glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex");
  669. glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync");
  670. glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync");
  671. glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync");
  672. glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync");
  673. glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync");
  674. glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v");
  675. glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv");
  676. glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v");
  677. glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v");
  678. glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture");
  679. glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample");
  680. glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample");
  681. glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv");
  682. glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski");
  683. }
  684. static void find_extensionsGL(void) {
  685. }
  686. static void find_coreGL(void) {
  687. /* Thank you @elmindreda
  688. * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
  689. * https://github.com/glfw/glfw/blob/master/src/context.c#L36
  690. */
  691. int i, major, minor;
  692. const char* version;
  693. const char* prefixes[] = {
  694. "OpenGL ES-CM ",
  695. "OpenGL ES-CL ",
  696. "OpenGL ES ",
  697. NULL
  698. };
  699. version = (const char*) glGetString(GL_VERSION);
  700. if (!version) return;
  701. for (i = 0; prefixes[i]; i++) {
  702. const size_t length = strlen(prefixes[i]);
  703. if (strncmp(version, prefixes[i], length) == 0) {
  704. version += length;
  705. break;
  706. }
  707. }
  708. sscanf(version, "%d.%d", &major, &minor);
  709. GLVersion.major = major; GLVersion.minor = minor;
  710. GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;
  711. GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;
  712. GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;
  713. GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;
  714. GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1;
  715. GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1;
  716. GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;
  717. GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2;
  718. GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;
  719. GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3;
  720. GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3;
  721. }
  722. int gladLoadGLLoader(GLADloadproc load) {
  723. GLVersion.major = 0; GLVersion.minor = 0;
  724. glGetString = (PFNGLGETSTRINGPROC)load("glGetString");
  725. if(glGetString == NULL) return 0;
  726. if(glGetString(GL_VERSION) == NULL) return 0;
  727. find_coreGL();
  728. load_GL_VERSION_1_0(load);
  729. load_GL_VERSION_1_1(load);
  730. load_GL_VERSION_1_2(load);
  731. load_GL_VERSION_1_3(load);
  732. load_GL_VERSION_1_4(load);
  733. load_GL_VERSION_1_5(load);
  734. load_GL_VERSION_2_0(load);
  735. load_GL_VERSION_2_1(load);
  736. load_GL_VERSION_3_0(load);
  737. load_GL_VERSION_3_1(load);
  738. load_GL_VERSION_3_2(load);
  739. find_extensionsGL();
  740. return GLVersion.major != 0 || GLVersion.minor != 0;
  741. }