PageRenderTime 62ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/import/derelict/opengl3/gl3.d

https://github.com/zachreizner/Derelict3
D | 817 lines | 690 code | 64 blank | 63 comment | 60 complexity | 4b9b7e1f7835d1b5c145f8bdf6082442 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. /*
  2. Boost Software License - Version 1.0 - August 17th, 2003
  3. Permission is hereby granted, free of charge, to any person or organization
  4. obtaining a copy of the software and accompanying documentation covered by
  5. this license (the "Software") to use, reproduce, display, distribute,
  6. execute, and transmit the Software, and to prepare derivative works of the
  7. Software, and to permit third-parties to whom the Software is furnished to
  8. do so, all subject to the following:
  9. The copyright notices in the Software and this entire statement, including
  10. the above license grant, this restriction and the following disclaimer,
  11. must be included in all copies of the Software, in whole or in part, and
  12. all derivative works of the Software, unless such copies or derivative
  13. works are solely in the form of machine-executable object code generated by
  14. a source language processor.
  15. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
  18. SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
  19. FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
  20. ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  21. DEALINGS IN THE SOFTWARE.
  22. */
  23. module derelict.opengl3.gl3;
  24. public
  25. {
  26. import derelict.opengl3.types;
  27. import derelict.opengl3.constants;
  28. import derelict.opengl3.functions;
  29. import derelict.opengl3.arb;
  30. import derelict.opengl3.ext;
  31. }
  32. private
  33. {
  34. import std.conv;
  35. import std.string;
  36. import derelict.util.loader;
  37. import derelict.util.exception;
  38. import derelict.util.system;
  39. import derelict.opengl3.internal;
  40. static if(Derelict_OS_Windows)
  41. {
  42. import derelict.opengl3.wgl;
  43. enum libNames = "opengl32.dll";
  44. }
  45. else static if(Derelict_OS_Mac)
  46. {
  47. import derelict.opengl3.cgl;
  48. enum libNames = "../Frameworks/OpenGL.framework/OpenGL, /Library/Frameworks/OpenGL.framework/OpenGL, /System/Library/Frameworks/OpenGL.framework/OpenGL";
  49. }
  50. else static if(Derelict_OS_Posix)
  51. {
  52. import derelict.opengl3.glx;
  53. enum libNames = "libGL.so.1,libGL.so";
  54. }
  55. else
  56. static assert(0, "Need to implement OpenGL libNames for this operating system.");
  57. }
  58. class DerelictGL3Loader : SharedLibLoader
  59. {
  60. public
  61. {
  62. GLVersion loadedVersion() @property
  63. {
  64. return _loadedVersion;
  65. }
  66. GLVersion reload()
  67. {
  68. // Make sure a context is active, otherwise this could be meaningless.
  69. if(!hasValidContext())
  70. throw new DerelictException("DerelictGL3.reload failure: An OpenGL context is not currently active.");
  71. GLVersion glVer = GLVersion.GL11;
  72. GLVersion maxVer = findMaxAvailable();
  73. if(maxVer >= GLVersion.GL12)
  74. {
  75. bindGLFunc(cast(void**)&glBlendColor, "glBlendColor");
  76. bindGLFunc(cast(void**)&glBlendEquation, "glBlendEquation");
  77. bindGLFunc(cast(void**)&glDrawRangeElements, "glDrawRangeElements");
  78. bindGLFunc(cast(void**)&glTexImage3D, "glTexImage3D");
  79. bindGLFunc(cast(void**)&glTexSubImage3D, "glTexSubImage3D");
  80. bindGLFunc(cast(void**)&glCopyTexSubImage3D, "glCopyTexSubImage3D");
  81. glVer = GLVersion.GL12;
  82. }
  83. if(maxVer >= GLVersion.GL13)
  84. {
  85. bindGLFunc(cast(void**)&glActiveTexture, "glActiveTexture");
  86. bindGLFunc(cast(void**)&glSampleCoverage, "glSampleCoverage");
  87. bindGLFunc(cast(void**)&glCompressedTexImage3D, "glCompressedTexImage3D");
  88. bindGLFunc(cast(void**)&glCompressedTexImage2D, "glCompressedTexImage2D");
  89. bindGLFunc(cast(void**)&glCompressedTexImage1D, "glCompressedTexImage1D");
  90. bindGLFunc(cast(void**)&glCompressedTexSubImage3D, "glCompressedTexSubImage3D");
  91. bindGLFunc(cast(void**)&glCompressedTexSubImage2D, "glCompressedTexSubImage2D");
  92. bindGLFunc(cast(void**)&glCompressedTexSubImage1D, "glCompressedTexSubImage1D");
  93. bindGLFunc(cast(void**)&glGetCompressedTexImage, "glGetCompressedTexImage");
  94. glVer = GLVersion.GL13;
  95. }
  96. if(maxVer >= GLVersion.GL14)
  97. {
  98. bindGLFunc(cast(void**)&glBlendFuncSeparate, "glBlendFuncSeparate");
  99. bindGLFunc(cast(void**)&glMultiDrawArrays, "glMultiDrawArrays");
  100. bindGLFunc(cast(void**)&glMultiDrawElements, "glMultiDrawElements");
  101. bindGLFunc(cast(void**)&glPointParameterf, "glPointParameterf");
  102. bindGLFunc(cast(void**)&glPointParameterfv, "glPointParameterfv");
  103. bindGLFunc(cast(void**)&glPointParameteri, "glPointParameteri");
  104. bindGLFunc(cast(void**)&glPointParameteriv, "glPointParameteriv");
  105. glVer = GLVersion.GL14;
  106. }
  107. if(maxVer >= GLVersion.GL15)
  108. {
  109. bindGLFunc(cast(void**)&glGenQueries, "glGenQueries");
  110. bindGLFunc(cast(void**)&glDeleteQueries, "glDeleteQueries");
  111. bindGLFunc(cast(void**)&glIsQuery, "glIsQuery");
  112. bindGLFunc(cast(void**)&glBeginQuery, "glBeginQuery");
  113. bindGLFunc(cast(void**)&glEndQuery, "glEndQuery");
  114. bindGLFunc(cast(void**)&glGetQueryiv, "glGetQueryiv");
  115. bindGLFunc(cast(void**)&glGetQueryObjectiv, "glGetQueryObjectiv");
  116. bindGLFunc(cast(void**)&glGetQueryObjectuiv, "glGetQueryObjectuiv");
  117. bindGLFunc(cast(void**)&glBindBuffer, "glBindBuffer");
  118. bindGLFunc(cast(void**)&glDeleteBuffers, "glDeleteBuffers");
  119. bindGLFunc(cast(void**)&glGenBuffers, "glGenBuffers");
  120. bindGLFunc(cast(void**)&glIsBuffer, "glIsBuffer");
  121. bindGLFunc(cast(void**)&glBufferData, "glBufferData");
  122. bindGLFunc(cast(void**)&glBufferSubData, "glBufferSubData");
  123. bindGLFunc(cast(void**)&glGetBufferSubData, "glGetBufferSubData");
  124. bindGLFunc(cast(void**)&glMapBuffer, "glMapBuffer");
  125. bindGLFunc(cast(void**)&glUnmapBuffer, "glUnmapBuffer");
  126. bindGLFunc(cast(void**)&glGetBufferParameteriv, "glGetBufferParameteriv");
  127. bindGLFunc(cast(void**)&glGetBufferPointerv, "glGetBufferPointerv");
  128. glVer = GLVersion.GL15;
  129. }
  130. if(maxVer >= GLVersion.GL20)
  131. {
  132. bindGLFunc(cast(void**)&glBlendEquationSeparate, "glBlendEquationSeparate");
  133. bindGLFunc(cast(void**)&glDrawBuffers, "glDrawBuffers");
  134. bindGLFunc(cast(void**)&glStencilOpSeparate, "glStencilOpSeparate");
  135. bindGLFunc(cast(void**)&glStencilFuncSeparate, "glStencilFuncSeparate");
  136. bindGLFunc(cast(void**)&glStencilMaskSeparate, "glStencilMaskSeparate");
  137. bindGLFunc(cast(void**)&glAttachShader, "glAttachShader");
  138. bindGLFunc(cast(void**)&glBindAttribLocation, "glBindAttribLocation");
  139. bindGLFunc(cast(void**)&glCompileShader, "glCompileShader");
  140. bindGLFunc(cast(void**)&glCreateProgram, "glCreateProgram");
  141. bindGLFunc(cast(void**)&glCreateShader, "glCreateShader");
  142. bindGLFunc(cast(void**)&glDeleteProgram, "glDeleteProgram");
  143. bindGLFunc(cast(void**)&glDeleteShader, "glDeleteShader");
  144. bindGLFunc(cast(void**)&glDetachShader, "glDetachShader");
  145. bindGLFunc(cast(void**)&glDisableVertexAttribArray, "glDisableVertexAttribArray");
  146. bindGLFunc(cast(void**)&glEnableVertexAttribArray, "glEnableVertexAttribArray");
  147. bindGLFunc(cast(void**)&glGetActiveAttrib, "glGetActiveAttrib");
  148. bindGLFunc(cast(void**)&glGetActiveUniform, "glGetActiveUniform");
  149. bindGLFunc(cast(void**)&glGetAttachedShaders, "glGetAttachedShaders");
  150. bindGLFunc(cast(void**)&glGetAttribLocation, "glGetAttribLocation");
  151. bindGLFunc(cast(void**)&glGetProgramiv, "glGetProgramiv");
  152. bindGLFunc(cast(void**)&glGetProgramInfoLog, "glGetProgramInfoLog");
  153. bindGLFunc(cast(void**)&glGetShaderiv, "glGetShaderiv");
  154. bindGLFunc(cast(void**)&glGetShaderInfoLog, "glGetShaderInfoLog");
  155. bindGLFunc(cast(void**)&glGetShaderSource, "glGetShaderSource");
  156. bindGLFunc(cast(void**)&glGetUniformLocation, "glGetUniformLocation");
  157. bindGLFunc(cast(void**)&glGetUniformfv, "glGetUniformfv");
  158. bindGLFunc(cast(void**)&glGetUniformiv, "glGetUniformiv");
  159. bindGLFunc(cast(void**)&glGetVertexAttribdv, "glGetVertexAttribdv");
  160. bindGLFunc(cast(void**)&glGetVertexAttribfv, "glGetVertexAttribfv");
  161. bindGLFunc(cast(void**)&glGetVertexAttribiv, "glGetVertexAttribiv");
  162. bindGLFunc(cast(void**)&glGetVertexAttribPointerv, "glGetVertexAttribPointerv");
  163. bindGLFunc(cast(void**)&glIsProgram, "glIsProgram");
  164. bindGLFunc(cast(void**)&glIsShader, "glIsShader");
  165. bindGLFunc(cast(void**)&glLinkProgram, "glLinkProgram");
  166. bindGLFunc(cast(void**)&glShaderSource, "glShaderSource");
  167. bindGLFunc(cast(void**)&glUseProgram, "glUseProgram");
  168. bindGLFunc(cast(void**)&glUniform1f, "glUniform1f");
  169. bindGLFunc(cast(void**)&glUniform2f, "glUniform2f");
  170. bindGLFunc(cast(void**)&glUniform3f, "glUniform3f");
  171. bindGLFunc(cast(void**)&glUniform4f, "glUniform4f");
  172. bindGLFunc(cast(void**)&glUniform1i, "glUniform1i");
  173. bindGLFunc(cast(void**)&glUniform2i, "glUniform2i");
  174. bindGLFunc(cast(void**)&glUniform4i, "glUniform4i");
  175. bindGLFunc(cast(void**)&glUniform1fv, "glUniform1fv");
  176. bindGLFunc(cast(void**)&glUniform2fv, "glUniform2fv");
  177. bindGLFunc(cast(void**)&glUniform3fv, "glUniform3fv");
  178. bindGLFunc(cast(void**)&glUniform4fv, "glUniform4fv");
  179. bindGLFunc(cast(void**)&glUniform1iv, "glUniform1iv");
  180. bindGLFunc(cast(void**)&glUniform2iv, "glUniform2iv");
  181. bindGLFunc(cast(void**)&glUniform3iv, "glUniform3iv");
  182. bindGLFunc(cast(void**)&glUniform4iv, "glUniform4iv");
  183. bindGLFunc(cast(void**)&glUniformMatrix2fv, "glUniformMatrix2fv");
  184. bindGLFunc(cast(void**)&glUniformMatrix3fv, "glUniformMatrix3fv");
  185. bindGLFunc(cast(void**)&glUniformMatrix4fv, "glUniformMatrix4fv");
  186. bindGLFunc(cast(void**)&glValidateProgram, "glValidateProgram");
  187. bindGLFunc(cast(void**)&glVertexAttrib1d, "glVertexAttrib1d");
  188. bindGLFunc(cast(void**)&glVertexAttrib1dv, "glVertexAttrib1dv");
  189. bindGLFunc(cast(void**)&glVertexAttrib1f, "glVertexAttrib1f");
  190. bindGLFunc(cast(void**)&glVertexAttrib1fv, "glVertexAttrib1fv");
  191. bindGLFunc(cast(void**)&glVertexAttrib1s, "glVertexAttrib1s");
  192. bindGLFunc(cast(void**)&glVertexAttrib1sv, "glVertexAttrib1sv");
  193. bindGLFunc(cast(void**)&glVertexAttrib2d, "glVertexAttrib2d");
  194. bindGLFunc(cast(void**)&glVertexAttrib2dv, "glVertexAttrib2dv");
  195. bindGLFunc(cast(void**)&glVertexAttrib2f, "glVertexAttrib2f");
  196. bindGLFunc(cast(void**)&glVertexAttrib2fv, "glVertexAttrib2fv");
  197. bindGLFunc(cast(void**)&glVertexAttrib2s, "glVertexAttrib2s");
  198. bindGLFunc(cast(void**)&glVertexAttrib2sv, "glVertexAttrib2sv");
  199. bindGLFunc(cast(void**)&glVertexAttrib3d, "glVertexAttrib3d");
  200. bindGLFunc(cast(void**)&glVertexAttrib3dv, "glVertexAttrib3dv");
  201. bindGLFunc(cast(void**)&glVertexAttrib3f, "glVertexAttrib3f");
  202. bindGLFunc(cast(void**)&glVertexAttrib3fv, "glVertexAttrib3fv");
  203. bindGLFunc(cast(void**)&glVertexAttrib3s, "glVertexAttrib3s");
  204. bindGLFunc(cast(void**)&glVertexAttrib3sv, "glVertexAttrib3sv");
  205. bindGLFunc(cast(void**)&glVertexAttrib4Nbv, "glVertexAttrib4Nbv");
  206. bindGLFunc(cast(void**)&glVertexAttrib4Niv, "glVertexAttrib4Niv");
  207. bindGLFunc(cast(void**)&glVertexAttrib4Nsv, "glVertexAttrib4Nsv");
  208. bindGLFunc(cast(void**)&glVertexAttrib4Nub, "glVertexAttrib4Nub");
  209. bindGLFunc(cast(void**)&glVertexAttrib4Nubv, "glVertexAttrib4Nubv");
  210. bindGLFunc(cast(void**)&glVertexAttrib4Nuiv, "glVertexAttrib4Nuiv");
  211. bindGLFunc(cast(void**)&glVertexAttrib4Nusv, "glVertexAttrib4Nusv");
  212. bindGLFunc(cast(void**)&glVertexAttrib4bv, "glVertexAttrib4bv");
  213. bindGLFunc(cast(void**)&glVertexAttrib4d, "glVertexAttrib4d");
  214. bindGLFunc(cast(void**)&glVertexAttrib4dv, "glVertexAttrib4dv");
  215. bindGLFunc(cast(void**)&glVertexAttrib4f, "glVertexAttrib4f");
  216. bindGLFunc(cast(void**)&glVertexAttrib4fv, "glVertexAttrib4fv");
  217. bindGLFunc(cast(void**)&glVertexAttrib4iv, "glVertexAttrib4iv");
  218. bindGLFunc(cast(void**)&glVertexAttrib4s, "glVertexAttrib4s");
  219. bindGLFunc(cast(void**)&glVertexAttrib4sv, "glVertexAttrib4sv");
  220. bindGLFunc(cast(void**)&glVertexAttrib4ubv, "glVertexAttrib4ubv");
  221. bindGLFunc(cast(void**)&glVertexAttrib4uiv, "glVertexAttrib4uiv");
  222. bindGLFunc(cast(void**)&glVertexAttrib4usv, "glVertexAttrib4usv");
  223. bindGLFunc(cast(void**)&glVertexAttribPointer, "glVertexAttribPointer");
  224. glVer = GLVersion.GL20;
  225. }
  226. if(maxVer >= GLVersion.GL21)
  227. {
  228. bindGLFunc(cast(void**)&glUniformMatrix2x3fv, "glUniformMatrix2x3fv");
  229. bindGLFunc(cast(void**)&glUniformMatrix3x2fv, "glUniformMatrix3x2fv");
  230. bindGLFunc(cast(void**)&glUniformMatrix2x4fv, "glUniformMatrix2x4fv");
  231. bindGLFunc(cast(void**)&glUniformMatrix4x2fv, "glUniformMatrix4x2fv");
  232. bindGLFunc(cast(void**)&glUniformMatrix3x4fv, "glUniformMatrix3x4fv");
  233. bindGLFunc(cast(void**)&glUniformMatrix4x3fv, "glUniformMatrix4x3fv");
  234. glVer = GLVersion.GL21;
  235. }
  236. if(maxVer >= GLVersion.GL30)
  237. {
  238. // Reused from ARB_framebuffer_object
  239. bindGLFunc(cast(void**)&glIsRenderbuffer, "glIsRenderbuffer");
  240. bindGLFunc(cast(void**)&glBindRenderbuffer, "glBindRenderbuffer");
  241. bindGLFunc(cast(void**)&glDeleteRenderbuffers, "glDeleteRenderbuffers");
  242. bindGLFunc(cast(void**)&glGenRenderbuffers, "glGenRenderbuffers");
  243. bindGLFunc(cast(void**)&glRenderbufferStorage, "glRenderbufferStorage");
  244. bindGLFunc(cast(void**)&glGetRenderbufferParameteriv, "glGetRenderbufferParameteriv");
  245. bindGLFunc(cast(void**)&glIsFramebuffer, "glIsFramebuffer");
  246. bindGLFunc(cast(void**)&glBindFramebuffer, "glBindFramebuffer");
  247. bindGLFunc(cast(void**)&glDeleteFramebuffers, "glBindBufferRange");
  248. bindGLFunc(cast(void**)&glGenFramebuffers, "glGenFramebuffers");
  249. bindGLFunc(cast(void**)&glCheckFramebufferStatus, "glCheckFramebufferStatus");
  250. bindGLFunc(cast(void**)&glFramebufferTexture1D, "glFramebufferTexture1D");
  251. bindGLFunc(cast(void**)&glFramebufferTexture2D, "glFramebufferTexture2D");
  252. bindGLFunc(cast(void**)&glFramebufferTexture3D, "glFramebufferTexture3D");
  253. bindGLFunc(cast(void**)&glFramebufferRenderbuffer, "glFramebufferRenderbuffer");
  254. bindGLFunc(cast(void**)&glGetFramebufferAttachmentParameteriv, "glGetFramebufferAttachmentParameteriv");
  255. bindGLFunc(cast(void**)&glGenerateMipmap, "glGenerateMipmap");
  256. bindGLFunc(cast(void**)&glBlitFramebuffer, "glBlitFramebuffer");
  257. bindGLFunc(cast(void**)&glRenderbufferStorageMultisample, "glRenderbufferStorageMultisample");
  258. bindGLFunc(cast(void**)&glFramebufferTextureLayer, "glFramebufferTextureLayer");
  259. // Reused from ARB_map_buffer_range
  260. bindGLFunc(cast(void**)&glMapBufferRange, "glMapBufferRange");
  261. bindGLFunc(cast(void**)&glFlushMappedBufferRange, "glFlushMappedBufferRange");
  262. // Reused from ARB_vertex_array_object
  263. bindGLFunc(cast(void**)&glBindVertexArray, "glBindVertexArray");
  264. bindGLFunc(cast(void**)&glDeleteVertexArrays, "glDeleteVertexArrays");
  265. bindGLFunc(cast(void**)&glGenVertexArrays, "glGenVertexArrays");
  266. bindGLFunc(cast(void**)&glIsVertexArray, "glIsVertexArray");
  267. bindGLFunc(cast(void**)&glColorMaski, "glColorMaski");
  268. bindGLFunc(cast(void**)&glGetBooleani_v, "glGetBooleani_v");
  269. bindGLFunc(cast(void**)&glGetIntegeri_v, "glGetIntegeri_v");
  270. bindGLFunc(cast(void**)&glEnablei, "glEnablei");
  271. bindGLFunc(cast(void**)&glDisablei, "glDisablei");
  272. bindGLFunc(cast(void**)&glIsEnabledi, "glIsEnabledi");
  273. bindGLFunc(cast(void**)&glBeginTransformFeedback, "glBeginTransformFeedback");
  274. bindGLFunc(cast(void**)&glEndTransformFeedback, "glEndTransformFeedback");
  275. bindGLFunc(cast(void**)&glBindBufferRange, "glBindBufferRange");
  276. bindGLFunc(cast(void**)&glBindBufferBase, "glBindBufferBase");
  277. bindGLFunc(cast(void**)&glTransformFeedbackVaryings, "glTransformFeedbackVaryings");
  278. bindGLFunc(cast(void**)&glGetTransformFeedbackVarying, "glGetTransformFeedbackVarying");
  279. bindGLFunc(cast(void**)&glClampColor, "glClampColor");
  280. bindGLFunc(cast(void**)&glBeginConditionalRender, "glBeginConditionalRender");
  281. bindGLFunc(cast(void**)&glEndConditionalRender, "glEndConditionalRender");
  282. bindGLFunc(cast(void**)&glVertexAttribIPointer, "glVertexAttribIPointer");
  283. bindGLFunc(cast(void**)&glGetVertexAttribIiv, "glGetVertexAttribIiv");
  284. bindGLFunc(cast(void**)&glGetVertexAttribIuiv, "glGetVertexAttribIuiv");
  285. bindGLFunc(cast(void**)&glVertexAttribI1i, "glVertexAttribI1i");
  286. bindGLFunc(cast(void**)&glVertexAttribI2i, "glVertexAttribI2i");
  287. bindGLFunc(cast(void**)&glVertexAttribI3i, "glVertexAttribI3i");
  288. bindGLFunc(cast(void**)&glVertexAttribI4i, "glVertexAttribI4i");
  289. bindGLFunc(cast(void**)&glVertexAttribI1ui, "glVertexAttribI1ui");
  290. bindGLFunc(cast(void**)&glVertexAttribI2ui, "glVertexAttribI2ui");
  291. bindGLFunc(cast(void**)&glVertexAttribI3ui, "glVertexAttribI3ui");
  292. bindGLFunc(cast(void**)&glVertexAttribI4ui, "glVertexAttribI4ui");
  293. bindGLFunc(cast(void**)&glVertexAttribI1iv, "glVertexAttribI1iv");
  294. bindGLFunc(cast(void**)&glVertexAttribI2iv, "glVertexAttribI2iv");
  295. bindGLFunc(cast(void**)&glVertexAttribI3iv, "glVertexAttribI3iv");
  296. bindGLFunc(cast(void**)&glVertexAttribI4iv, "glVertexAttribI4iv");
  297. bindGLFunc(cast(void**)&glVertexAttribI1uiv, "glVertexAttribI1uiv");
  298. bindGLFunc(cast(void**)&glVertexAttribI2uiv, "glVertexAttribI2uiv");
  299. bindGLFunc(cast(void**)&glVertexAttribI3uiv, "glVertexAttribI3uiv");
  300. bindGLFunc(cast(void**)&glVertexAttribI4uiv, "glVertexAttribI4uiv");
  301. bindGLFunc(cast(void**)&glVertexAttribI4bv, "glVertexAttribI4bv");
  302. bindGLFunc(cast(void**)&glVertexAttribI4sv, "glVertexAttribI4sv");
  303. bindGLFunc(cast(void**)&glVertexAttribI4ubv, "glVertexAttribI4ubv");
  304. bindGLFunc(cast(void**)&glVertexAttribI4usv, "glVertexAttribI4usv");
  305. bindGLFunc(cast(void**)&glGetUniformuiv, "glGetUniformuiv");
  306. bindGLFunc(cast(void**)&glBindFragDataLocation, "glBindFragDataLocation");
  307. bindGLFunc(cast(void**)&glGetFragDataLocation, "glGetFragDataLocation");
  308. bindGLFunc(cast(void**)&glUniform1ui, "glUniform1ui");
  309. bindGLFunc(cast(void**)&glUniform2ui, "glUniform2ui");
  310. bindGLFunc(cast(void**)&glUniform3ui, "glUniform3ui");
  311. bindGLFunc(cast(void**)&glUniform4ui, "glUniform4ui");
  312. bindGLFunc(cast(void**)&glUniform1uiv, "glUniform1uiv");
  313. bindGLFunc(cast(void**)&glUniform2uiv, "glUniform2uiv");
  314. bindGLFunc(cast(void**)&glUniform3uiv, "glUniform3uiv");
  315. bindGLFunc(cast(void**)&glUniform4uiv, "glUniform4uiv");
  316. bindGLFunc(cast(void**)&glTexParameterIiv, "glTexParameterIiv");
  317. bindGLFunc(cast(void**)&glTexParameterIuiv, "glTexParameterIuiv");
  318. bindGLFunc(cast(void**)&glGetTexParameterIiv, "glGetTexParameterIiv");
  319. bindGLFunc(cast(void**)&glGetTexParameterIuiv, "glGetTexParameterIuiv");
  320. bindGLFunc(cast(void**)&glClearBufferiv, "glClearBufferiv");
  321. bindGLFunc(cast(void**)&glClearBufferuiv, "glClearBufferuiv");
  322. bindGLFunc(cast(void**)&glClearBufferfv, "glClearBufferfv");
  323. bindGLFunc(cast(void**)&glClearBufferfi, "glClearBufferfi");
  324. bindGLFunc(cast(void**)&glGetStringi, "glGetStringi");
  325. glVer = GLVersion.GL30;
  326. }
  327. if(maxVer >= GLVersion.GL31)
  328. {
  329. // Reused from ARB_copy_buffer
  330. bindGLFunc(cast(void**)&glCopyBufferSubData, "glCopyBufferSubData");
  331. // Reused from ARB_uniform_buffer_object
  332. bindGLFunc(cast(void**)&glGetUniformIndices, "glGetUniformIndices");
  333. bindGLFunc(cast(void**)&glGetActiveUniformsiv, "glGetActiveUniformsiv");
  334. bindGLFunc(cast(void**)&glGetActiveUniformName, "glGetActiveUniformName");
  335. bindGLFunc(cast(void**)&glGetUniformBlockIndex, "glGetUniformBlockIndex");
  336. bindGLFunc(cast(void**)&glGetActiveUniformBlockiv, "glGetActiveUniformBlockiv");
  337. bindGLFunc(cast(void**)&glGetActiveUniformBlockName, "glGetActiveUniformBlockName");
  338. bindGLFunc(cast(void**)&glUniformBlockBinding, "glUniformBlockBinding");
  339. bindGLFunc(cast(void**)&glDrawArraysInstanced, "glDrawArraysInstanced");
  340. bindGLFunc(cast(void**)&glDrawElementsInstanced, "glDrawElementsInstanced");
  341. bindGLFunc(cast(void**)&glTexBuffer, "glTexBuffer");
  342. bindGLFunc(cast(void**)&glPrimitiveRestartIndex, "glPrimitiveRestartIndex");
  343. glVer = GLVersion.GL31;
  344. }
  345. if(maxVer >= GLVersion.GL32)
  346. {
  347. // Reused from ARB_draw_elements_base_vertex
  348. bindGLFunc(cast(void**)&glDrawElementsBaseVertex, "glDrawElementsBaseVertex");
  349. bindGLFunc(cast(void**)&glDrawRangeElementsBaseVertex, "glDrawRangeElementsBaseVertex");
  350. bindGLFunc(cast(void**)&glDrawElementsInstancedBaseVertex, "glDrawElementsInstancedBaseVertex");
  351. bindGLFunc(cast(void**)&glMultiDrawElementsBaseVertex, "glMultiDrawElementsBaseVertex");
  352. // Reused from ARB_provoking_vertex
  353. bindGLFunc(cast(void**)&glProvokingVertex, "glProvokingVertex");
  354. // Reused from ARB_sync
  355. bindGLFunc(cast(void**)&glFenceSync, "glFenceSync");
  356. bindGLFunc(cast(void**)&glIsSync, "glIsSync");
  357. bindGLFunc(cast(void**)&glDeleteSync, "glDeleteSync");
  358. bindGLFunc(cast(void**)&glClientWaitSync, "glClientWaitSync");
  359. bindGLFunc(cast(void**)&glWaitSync, "glWaitSync");
  360. bindGLFunc(cast(void**)&glGetInteger64v, "glGetInteger64v");
  361. bindGLFunc(cast(void**)&glGetSynciv, "glGetSynciv");
  362. // Reused from ARB_texture_multisample
  363. bindGLFunc(cast(void**)&glTexImage2DMultisample, "glTexImage2DMultisample");
  364. bindGLFunc(cast(void**)&glTexImage3DMultisample, "glTexImage3DMultisample");
  365. bindGLFunc(cast(void**)&glGetMultisamplefv, "glGetMultisamplefv");
  366. bindGLFunc(cast(void**)&glSampleMaski, "glSampleMaski");
  367. bindGLFunc(cast(void**)&glGetInteger64i_v, "glGetInteger64i_v");
  368. bindGLFunc(cast(void**)&glGetBufferParameteri64v, "glGetBufferParameteri64v");
  369. bindGLFunc(cast(void**)&glFramebufferTexture, "glFramebufferTexture");
  370. glVer = GLVersion.GL32;
  371. }
  372. if(maxVer >= GLVersion.GL33)
  373. {
  374. // Reused from ARB_blend_func_extended
  375. bindGLFunc(cast(void**)&glBindFragDataLocationIndexed, "glBindFragDataLocationIndexed");
  376. bindGLFunc(cast(void**)&glGetFragDataIndex, "glGetFragDataIndex");
  377. // Reused from ARB_sampler_objects
  378. bindGLFunc(cast(void**)&glGenSamplers, "glGenSamplers");
  379. bindGLFunc(cast(void**)&glDeleteSamplers, "glDeleteSamplers");
  380. bindGLFunc(cast(void**)&glIsSampler, "glIsSampler");
  381. bindGLFunc(cast(void**)&glBindSampler, "glBindSampler");
  382. bindGLFunc(cast(void**)&glSamplerParameteri, "glSamplerParameteri");
  383. bindGLFunc(cast(void**)&glSamplerParameteriv, "glSamplerParameteriv");
  384. bindGLFunc(cast(void**)&glSamplerParameterf, "glSamplerParameterf");
  385. bindGLFunc(cast(void**)&glSamplerParameterfv, "glSamplerParameterfv");
  386. bindGLFunc(cast(void**)&glSamplerParameterIiv, "glSamplerParameterIiv");
  387. bindGLFunc(cast(void**)&glSamplerParameterIuiv, "glSamplerParameterIuiv");
  388. bindGLFunc(cast(void**)&glGetSamplerParameteriv, "glGetSamplerParameteriv");
  389. bindGLFunc(cast(void**)&glGetSamplerParameterIiv, "glGetSamplerParameterIiv");
  390. bindGLFunc(cast(void**)&glGetSamplerParameterfv, "glGetSamplerParameterfv");
  391. bindGLFunc(cast(void**)&glGetSamplerParameterIuiv, "glGetSamplerParameterIuiv");
  392. // Reused from ARB_timer_query
  393. bindGLFunc(cast(void**)&glQueryCounter, "glQueryCounter");
  394. bindGLFunc(cast(void**)&glGetQueryObjecti64v, "glGetQueryObjecti64v");
  395. bindGLFunc(cast(void**)&glGetQueryObjectui64v, "glGetQueryObjectui64v");
  396. // Reused from ARB_vertex_type_2_10_10_10_rev
  397. bindGLFunc(cast(void**)&glVertexP2ui, "glVertexP2ui");
  398. bindGLFunc(cast(void**)&glVertexP2uiv, "glVertexP2uiv");
  399. bindGLFunc(cast(void**)&glVertexP3ui, "glVertexP3ui");
  400. bindGLFunc(cast(void**)&glVertexP3uiv, "glVertexP3uiv");
  401. bindGLFunc(cast(void**)&glVertexP4ui, "glVertexP4ui");
  402. bindGLFunc(cast(void**)&glVertexP4uiv, "glVertexP4uiv");
  403. bindGLFunc(cast(void**)&glTexCoordP1ui, "glTexCoordP1ui");
  404. bindGLFunc(cast(void**)&glTexCoordP1uiv, "glTexCoordP1uiv");
  405. bindGLFunc(cast(void**)&glTexCoordP2ui, "glTexCoordP2ui");
  406. bindGLFunc(cast(void**)&glTexCoordP2uiv, "glTexCoordP2uiv");
  407. bindGLFunc(cast(void**)&glTexCoordP3ui, "glTexCoordP3ui");
  408. bindGLFunc(cast(void**)&glTexCoordP3uiv, "glTexCoordP3uiv");
  409. bindGLFunc(cast(void**)&glTexCoordP4ui, "glTexCoordP4ui");
  410. bindGLFunc(cast(void**)&glTexCoordP4uiv, "glTexCoordP4uiv");
  411. bindGLFunc(cast(void**)&glMultiTexCoordP1ui, "glMultiTexCoordP1ui");
  412. bindGLFunc(cast(void**)&glMultiTexCoordP1uiv, "glMultiTexCoordP1uiv");
  413. bindGLFunc(cast(void**)&glMultiTexCoordP2ui, "glMultiTexCoordP2ui");
  414. bindGLFunc(cast(void**)&glMultiTexCoordP2uiv, "glMultiTexCoordP2uiv");
  415. bindGLFunc(cast(void**)&glMultiTexCoordP3ui, "glMultiTexCoordP3ui");
  416. bindGLFunc(cast(void**)&glMultiTexCoordP3uiv, "glMultiTexCoordP3uiv");
  417. bindGLFunc(cast(void**)&glMultiTexCoordP4ui, "glMultiTexCoordP4ui");
  418. bindGLFunc(cast(void**)&glMultiTexCoordP4uiv, "glMultiTexCoordP4uiv");
  419. bindGLFunc(cast(void**)&glNormalP3ui, "glNormalP3ui");
  420. bindGLFunc(cast(void**)&glNormalP3uiv, "glNormalP3uiv");
  421. bindGLFunc(cast(void**)&glColorP3ui, "glColorP3ui");
  422. bindGLFunc(cast(void**)&glColorP3uiv, "glColorP3uiv");
  423. bindGLFunc(cast(void**)&glColorP4ui, "glColorP4ui");
  424. bindGLFunc(cast(void**)&glColorP4uiv, "glColorP4uiv");
  425. bindGLFunc(cast(void**)&glSecondaryColorP3ui, "glSecondaryColorP3ui");
  426. bindGLFunc(cast(void**)&glSecondaryColorP3uiv, "glSecondaryColorP3uiv");
  427. bindGLFunc(cast(void**)&glVertexAttribP1ui, "glVertexAttribP1ui");
  428. bindGLFunc(cast(void**)&glVertexAttribP1uiv, "glVertexAttribP1uiv");
  429. bindGLFunc(cast(void**)&glVertexAttribP2ui, "glVertexAttribP2ui");
  430. bindGLFunc(cast(void**)&glVertexAttribP2uiv, "glVertexAttribP2uiv");
  431. bindGLFunc(cast(void**)&glVertexAttribP3ui, "glVertexAttribP3ui");
  432. bindGLFunc(cast(void**)&glVertexAttribP3uiv, "glVertexAttribP3uiv");
  433. bindGLFunc(cast(void**)&glVertexAttribP4ui, "glVertexAttribP4ui");
  434. bindGLFunc(cast(void**)&glVertexAttribP4uiv, "glVertexAttribP4uiv");
  435. bindGLFunc(cast(void**)&glVertexAttribDivisor, "glVertexAttribDivisor");
  436. glVer = GLVersion.GL33;
  437. }
  438. if(maxVer >= GLVersion.GL40)
  439. {
  440. // Reused from ARB_draw_indirect
  441. bindGLFunc(cast(void**)&glDrawArraysIndirect, "glDrawArraysIndirect");
  442. bindGLFunc(cast(void**)&glDrawElementsIndirect, "glDrawElementsIndirect");
  443. // Reused from ARB_gpu_shader_fp64
  444. bindGLFunc(cast(void**)&glUniform1d, "glUniform1d");
  445. bindGLFunc(cast(void**)&glUniform2d, "glUniform2d");
  446. bindGLFunc(cast(void**)&glUniform3d, "glUniform3d");
  447. bindGLFunc(cast(void**)&glUniform4d, "glUniform4d");
  448. bindGLFunc(cast(void**)&glUniform1dv, "glUniform1dv");
  449. bindGLFunc(cast(void**)&glUniform2dv, "glUniform2dv");
  450. bindGLFunc(cast(void**)&glUniform3dv, "glUniform3dv");
  451. bindGLFunc(cast(void**)&glUniform4dv, "glUniform4dv");
  452. bindGLFunc(cast(void**)&glUniformMatrix2dv, "glUniformMatrix2dv");
  453. bindGLFunc(cast(void**)&glUniformMatrix3dv, "glUniformMatrix3dv");
  454. bindGLFunc(cast(void**)&glUniformMatrix4dv, "glUniformMatrix4dv");
  455. bindGLFunc(cast(void**)&glUniformMatrix2x3dv, "glUniformMatrix2x3dv");
  456. bindGLFunc(cast(void**)&glUniformMatrix2x4dv, "glUniformMatrix2x4dv");
  457. bindGLFunc(cast(void**)&glUniformMatrix3x2dv, "glUniformMatrix3x2dv");
  458. bindGLFunc(cast(void**)&glUniformMatrix3x4dv, "glUniformMatrix3x4dv");
  459. bindGLFunc(cast(void**)&glUniformMatrix4x2dv, "glUniformMatrix4x2dv");
  460. bindGLFunc(cast(void**)&glUniformMatrix4x3dv, "glUniformMatrix4x3dv");
  461. // Reused from ARB_shader_subroutine
  462. bindGLFunc(cast(void**)&glGetSubroutineUniformLocation, "glGetSubroutineUniformLocation");
  463. bindGLFunc(cast(void**)&glGetSubroutineIndex, "glGetSubroutineIndex");
  464. bindGLFunc(cast(void**)&glGetActiveSubroutineUniformiv, "glGetActiveSubroutineUniformiv");
  465. bindGLFunc(cast(void**)&glGetActiveSubroutineUniformName, "glGetActiveSubroutineUniformName");
  466. bindGLFunc(cast(void**)&glGetActiveSubroutineName, "glGetActiveSubroutineName");
  467. bindGLFunc(cast(void**)&glUniformSubroutinesuiv, "glUniformSubroutinesuiv");
  468. bindGLFunc(cast(void**)&glGetUniformSubroutineuiv, "glGetUniformSubroutineuiv");
  469. bindGLFunc(cast(void**)&glGetProgramStageiv, "glGetProgramStageiv");
  470. // Reused from ARB_tessellation_shader
  471. bindGLFunc(cast(void**)&glPatchParameteri, "glPatchParameteri");
  472. bindGLFunc(cast(void**)&glPatchParameterfv, "glPatchParameterfv");
  473. // Reused from ARB_transform_feedback2
  474. bindGLFunc(cast(void**)&glBindTransformFeedback, "glBindTransformFeedback");
  475. bindGLFunc(cast(void**)&glDeleteTransformFeedbacks, "glDeleteTransformFeedbacks");
  476. bindGLFunc(cast(void**)&glGenTransformFeedbacks, "glGenTransformFeedbacks");
  477. bindGLFunc(cast(void**)&glIsTransformFeedback, "glIsTransformFeedback");
  478. bindGLFunc(cast(void**)&glPauseTransformFeedback, "glPauseTransformFeedback");
  479. bindGLFunc(cast(void**)&glResumeTransformFeedback, "glResumeTransformFeedback");
  480. bindGLFunc(cast(void**)&glDrawTransformFeedback, "glDrawTransformFeedback");
  481. // Reused from ARB_transform_feedback3
  482. bindGLFunc(cast(void**)&glDrawTransformFeedbackStream, "glDrawTransformFeedbackStream");
  483. bindGLFunc(cast(void**)&glBeginQueryIndexed, "glBeginQueryIndexed");
  484. bindGLFunc(cast(void**)&glEndQueryIndexed, "glEndQueryIndexed");
  485. bindGLFunc(cast(void**)&glGetQueryIndexediv, "glGetQueryIndexediv");
  486. bindGLFunc(cast(void**)&glMinSampleShading, "glMinSampleShading");
  487. bindGLFunc(cast(void**)&glBlendEquationi, "glBlendEquationi");
  488. bindGLFunc(cast(void**)&glBlendEquationSeparatei, "glBlendEquationSeparatei");
  489. bindGLFunc(cast(void**)&glBlendFunci, "glBlendFunci");
  490. bindGLFunc(cast(void**)&glBlendFuncSeparatei, "glBlendFuncSeparatei");
  491. glVer = GLVersion.GL30;
  492. }
  493. if(maxVer >= GLVersion.GL41)
  494. {
  495. // Reused from ARB_ES2_compatibility
  496. bindGLFunc(cast(void**)&glReleaseShaderCompiler, "glReleaseShaderCompiler");
  497. bindGLFunc(cast(void**)&glShaderBinary, "glShaderBinary");
  498. bindGLFunc(cast(void**)&glGetShaderPrecisionFormat, "glGetShaderPrecisionFormat");
  499. bindGLFunc(cast(void**)&glDepthRangef, "glDepthRangef");
  500. bindGLFunc(cast(void**)&glClearDepthf, "glClearDepthf");
  501. // Reused from ARB_get_program_binary
  502. bindGLFunc(cast(void**)&glGetProgramBinary, "glGetProgramBinary");
  503. bindGLFunc(cast(void**)&glProgramBinary, "glProgramBinary");
  504. bindGLFunc(cast(void**)&glProgramParameteri, "glProgramParameteri");
  505. // Reused from ARB_separate_shader_objects
  506. bindGLFunc(cast(void**)&glUseProgramStages, "glUseProgramStages");
  507. bindGLFunc(cast(void**)&glActiveShaderProgram, "glActiveShaderProgram");
  508. bindGLFunc(cast(void**)&glCreateShaderProgramv, "glCreateShaderProgramv");
  509. bindGLFunc(cast(void**)&glBindProgramPipeline, "glBindProgramPipeline");
  510. bindGLFunc(cast(void**)&glDeleteProgramPipelines, "glDeleteProgramPipelines");
  511. bindGLFunc(cast(void**)&glGenProgramPipelines, "glGenProgramPipelines");
  512. bindGLFunc(cast(void**)&glIsProgramPipeline, "glIsProgramPipeline");
  513. bindGLFunc(cast(void**)&glGetProgramPipelineiv, "glGetProgramPipelineiv");
  514. bindGLFunc(cast(void**)&glProgramUniform1i, "glProgramUniform1i");
  515. bindGLFunc(cast(void**)&glProgramUniform1iv, "glProgramUniform1iv");
  516. bindGLFunc(cast(void**)&glProgramUniform1f, "glProgramUniform1f");
  517. bindGLFunc(cast(void**)&glProgramUniform1fv, "glProgramUniform1fv");
  518. bindGLFunc(cast(void**)&glProgramUniform1d, "glProgramUniform1d");
  519. bindGLFunc(cast(void**)&glProgramUniform1dv, "glProgramUniform1dv");
  520. bindGLFunc(cast(void**)&glProgramUniform1ui, "glProgramUniform1ui");
  521. bindGLFunc(cast(void**)&glProgramUniform1uiv, "glProgramUniform1uiv");
  522. bindGLFunc(cast(void**)&glProgramUniform2i, "glProgramUniform2i");
  523. bindGLFunc(cast(void**)&glProgramUniform2iv, "glProgramUniform2iv");
  524. bindGLFunc(cast(void**)&glProgramUniform2f, "glProgramUniform2f");
  525. bindGLFunc(cast(void**)&glProgramUniform2fv, "glProgramUniform2fv");
  526. bindGLFunc(cast(void**)&glProgramUniform2d, "glProgramUniform2d");
  527. bindGLFunc(cast(void**)&glProgramUniform2dv, "glProgramUniform2dv");
  528. bindGLFunc(cast(void**)&glProgramUniform2ui, "glProgramUniform2ui");
  529. bindGLFunc(cast(void**)&glProgramUniform2uiv, "glProgramUniform2uiv");
  530. bindGLFunc(cast(void**)&glProgramUniform3i, "glProgramUniform3i");
  531. bindGLFunc(cast(void**)&glProgramUniform3iv, "glProgramUniform3iv");
  532. bindGLFunc(cast(void**)&glProgramUniform3f, "glProgramUniform3f");
  533. bindGLFunc(cast(void**)&glProgramUniform3fv, "glProgramUniform3fv");
  534. bindGLFunc(cast(void**)&glProgramUniform3d, "glProgramUniform3d");
  535. bindGLFunc(cast(void**)&glProgramUniform3dv, "glProgramUniform3dv");
  536. bindGLFunc(cast(void**)&glProgramUniform3ui, "glProgramUniform3ui");
  537. bindGLFunc(cast(void**)&glProgramUniform3uiv, "glProgramUniform3uiv");
  538. bindGLFunc(cast(void**)&glProgramUniform4i, "glProgramUniform4i");
  539. bindGLFunc(cast(void**)&glProgramUniform4iv, "glProgramUniform4iv");
  540. bindGLFunc(cast(void**)&glProgramUniform4f, "glProgramUniform4f");
  541. bindGLFunc(cast(void**)&glProgramUniform4fv, "glProgramUniform4fv");
  542. bindGLFunc(cast(void**)&glProgramUniform4d, "glProgramUniform4d");
  543. bindGLFunc(cast(void**)&glProgramUniform4dv, "glProgramUniform4dv");
  544. bindGLFunc(cast(void**)&glProgramUniform4ui, "glProgramUniform4ui");
  545. bindGLFunc(cast(void**)&glProgramUniform4uiv, "glProgramUniform4uiv");
  546. bindGLFunc(cast(void**)&glProgramUniformMatrix2fv, "glProgramUniformMatrix2fv");
  547. bindGLFunc(cast(void**)&glProgramUniformMatrix3fv, "glProgramUniformMatrix3fv");
  548. bindGLFunc(cast(void**)&glProgramUniformMatrix4fv, "glProgramUniformMatrix4fv");
  549. bindGLFunc(cast(void**)&glProgramUniformMatrix2dv, "glProgramUniformMatrix2dv");
  550. bindGLFunc(cast(void**)&glProgramUniformMatrix3dv, "glProgramUniformMatrix3dv");
  551. bindGLFunc(cast(void**)&glProgramUniformMatrix4dv, "glProgramUniformMatrix4dv");
  552. bindGLFunc(cast(void**)&glProgramUniformMatrix2x3fv, "glProgramUniformMatrix2x3fv");
  553. bindGLFunc(cast(void**)&glProgramUniformMatrix3x2fv, "glProgramUniformMatrix3x2fv");
  554. bindGLFunc(cast(void**)&glProgramUniformMatrix2x4fv, "glProgramUniformMatrix2x4fv");
  555. bindGLFunc(cast(void**)&glProgramUniformMatrix4x2fv, "glProgramUniformMatrix4x2fv");
  556. bindGLFunc(cast(void**)&glProgramUniformMatrix3x4fv, "glProgramUniformMatrix3x4fv");
  557. bindGLFunc(cast(void**)&glProgramUniformMatrix4x3fv, "glProgramUniformMatrix4x3fv");
  558. bindGLFunc(cast(void**)&glProgramUniformMatrix2x3dv, "glProgramUniformMatrix2x3dv");
  559. bindGLFunc(cast(void**)&glProgramUniformMatrix3x2dv, "glProgramUniformMatrix3x2dv");
  560. bindGLFunc(cast(void**)&glProgramUniformMatrix2x4dv, "glProgramUniformMatrix2x4dv");
  561. bindGLFunc(cast(void**)&glProgramUniformMatrix4x2dv, "glProgramUniformMatrix4x2dv");
  562. bindGLFunc(cast(void**)&glProgramUniformMatrix3x4dv, "glProgramUniformMatrix3x4dv");
  563. bindGLFunc(cast(void**)&glProgramUniformMatrix4x3dv, "glProgramUniformMatrix4x3dv");
  564. bindGLFunc(cast(void**)&glValidateProgramPipeline, "glValidateProgramPipeline");
  565. bindGLFunc(cast(void**)&glGetProgramPipelineInfoLog, "glGetProgramPipelineInfoLog");
  566. // Reused from ARB_vertex_attrib_64bit
  567. bindGLFunc(cast(void**)&glVertexAttribL1d, "glVertexAttribL1d");
  568. bindGLFunc(cast(void**)&glVertexAttribL2d, "glVertexAttribL2d");
  569. bindGLFunc(cast(void**)&glVertexAttribL3d, "glVertexAttribL3d");
  570. bindGLFunc(cast(void**)&glVertexAttribL4d, "glVertexAttribL4d");
  571. bindGLFunc(cast(void**)&glVertexAttribL1dv, "glVertexAttribL1dv");
  572. bindGLFunc(cast(void**)&glVertexAttribL2dv, "glVertexAttribL2dv");
  573. bindGLFunc(cast(void**)&glVertexAttribL3dv, "glVertexAttribL3dv");
  574. bindGLFunc(cast(void**)&glVertexAttribL4dv, "glVertexAttribL4dv");
  575. bindGLFunc(cast(void**)&glVertexAttribLPointer, "glVertexAttribLPointer");
  576. bindGLFunc(cast(void**)&glGetVertexAttribLdv, "glGetVertexAttribLdv");
  577. // Reused from ARB_viewport_array
  578. bindGLFunc(cast(void**)&glViewportArrayv, "glViewportArrayv");
  579. bindGLFunc(cast(void**)&glViewportIndexedf, "glViewportIndexedf");
  580. bindGLFunc(cast(void**)&glViewportIndexedfv, "glViewportIndexedfv");
  581. bindGLFunc(cast(void**)&glScissorArrayv, "glScissorArrayv");
  582. bindGLFunc(cast(void**)&glScissorIndexed, "glScissorIndexed");
  583. bindGLFunc(cast(void**)&glScissorIndexedv, "glScissorIndexedv");
  584. bindGLFunc(cast(void**)&glDepthRangeArrayv, "glDepthRangeArrayv");
  585. bindGLFunc(cast(void**)&glDepthRangeIndexed, "glDepthRangeIndexed");
  586. bindGLFunc(cast(void**)&glGetFloati_v, "glGetFloati_v");
  587. bindGLFunc(cast(void**)&glGetDoublei_v, "glGetDoublei_v");
  588. glVer = GLVersion.GL41;
  589. }
  590. if(maxVer >= GLVersion.GL42)
  591. {
  592. // Reused from ARB_base_instance
  593. bindGLFunc(cast(void**)&glDrawArraysInstancedBaseInstance, "glDrawArraysInstancedBaseInstance");
  594. bindGLFunc(cast(void**)&glDrawElementsInstancedBaseInstance, "glDrawElementsInstancedBaseInstance");
  595. bindGLFunc(cast(void**)&glDrawElementsInstancedBaseVertexBaseInstance, "glDrawElementsInstancedBaseVertexBaseInstance");
  596. // Reused from ARB_transform_feedback_instanced
  597. bindGLFunc(cast(void**)&glDrawTransformFeedbackInstanced, "glDrawTransformFeedbackInstanced");
  598. bindGLFunc(cast(void**)&glDrawTransformFeedbackStreamInstanced, "glDrawTransformFeedbackStreamInstanced");
  599. // Reused from ARB_internalformat_query
  600. bindGLFunc(cast(void**)&glGetInternalformativ, "glGetInternalformativ");
  601. // Reused from ARB_shader_atomic_counters
  602. bindGLFunc(cast(void**)&glGetActiveAtomicCounterBufferiv, "glGetActiveAtomicCounterBufferiv");
  603. // Reused from ARB_shader_image_load_store
  604. bindGLFunc(cast(void**)&glBindImageTexture, "glBindImageTexture");
  605. bindGLFunc(cast(void**)&glMemoryBarrier, "glMemoryBarrier");
  606. // Reused from ARB_texture_storage
  607. bindGLFunc(cast(void**)&glTexStorage1D, "glTexStorage1D");
  608. bindGLFunc(cast(void**)&glTexStorage2D, "glTexStorage2D");
  609. bindGLFunc(cast(void**)&glTexStorage3D, "glTexStorage3D");
  610. bindGLFunc(cast(void**)&glTextureStorage1DEXT, "glTextureStorage1DEXT");
  611. bindGLFunc(cast(void**)&glTextureStorage2DEXT, "glTextureStorage2DEXT");
  612. bindGLFunc(cast(void**)&glTextureStorage3DEXT, "glTextureStorage3DEXT");
  613. glVer = GLVersion.GL42;
  614. }
  615. loadARB(glVer);
  616. loadEXT(glVer);
  617. _loadedVersion = glVer;
  618. return glVer;
  619. }
  620. }
  621. protected
  622. {
  623. this()
  624. {
  625. super(libNames);
  626. }
  627. override void loadSymbols()
  628. {
  629. // OpenGL 1.0
  630. bindFunc(cast(void**)&glCullFace, "glCullFace");
  631. bindFunc(cast(void**)&glFrontFace, "glFrontFace");
  632. bindFunc(cast(void**)&glHint, "glHint");
  633. bindFunc(cast(void**)&glLineWidth, "glLineWidth");
  634. bindFunc(cast(void**)&glPointSize, "glPointSize");
  635. bindFunc(cast(void**)&glPolygonMode, "glPolygonMode");
  636. bindFunc(cast(void**)&glScissor, "glScissor");
  637. bindFunc(cast(void**)&glTexParameterf, "glTexParameterf");
  638. bindFunc(cast(void**)&glTexParameterfv, "glTexParameterfv");
  639. bindFunc(cast(void**)&glTexParameteri, "glTexParameteri");
  640. bindFunc(cast(void**)&glTexParameteriv, "glTexParameteriv");
  641. bindFunc(cast(void**)&glTexImage1D, "glTexImage1D");
  642. bindFunc(cast(void**)&glTexImage2D, "glTexImage2D");
  643. bindFunc(cast(void**)&glDrawBuffer, "glDrawBuffer");
  644. bindFunc(cast(void**)&glClear, "glClear");
  645. bindFunc(cast(void**)&glClearColor, "glClearColor");
  646. bindFunc(cast(void**)&glClearStencil, "glClearStencil");
  647. bindFunc(cast(void**)&glClearDepth, "glClearDepth");
  648. bindFunc(cast(void**)&glStencilMask, "glStencilMask");
  649. bindFunc(cast(void**)&glColorMask, "glColorMask");
  650. bindFunc(cast(void**)&glDepthMask, "glDepthMask");
  651. bindFunc(cast(void**)&glDisable, "glDisable");
  652. bindFunc(cast(void**)&glEnable, "glEnable");
  653. bindFunc(cast(void**)&glFinish, "glFinish");
  654. bindFunc(cast(void**)&glFlush, "glFlush");
  655. bindFunc(cast(void**)&glBlendFunc, "glBlendFunc");
  656. bindFunc(cast(void**)&glLogicOp, "glLogicOp");
  657. bindFunc(cast(void**)&glStencilFunc, "glStencilFunc");
  658. bindFunc(cast(void**)&glStencilOp, "glStencilOp");
  659. bindFunc(cast(void**)&glDepthFunc, "glDepthFunc");
  660. bindFunc(cast(void**)&glPixelStoref, "glPixelStoref");
  661. bindFunc(cast(void**)&glPixelStorei, "glPixelStorei");
  662. bindFunc(cast(void**)&glReadBuffer, "glReadBuffer");
  663. bindFunc(cast(void**)&glReadPixels, "glReadPixels");
  664. bindFunc(cast(void**)&glGetBooleanv, "glGetBooleanv");
  665. bindFunc(cast(void**)&glGetDoublev, "glGetDoublev");
  666. bindFunc(cast(void**)&glGetError, "glGetError");
  667. bindFunc(cast(void**)&glGetFloatv, "glGetFloatv");
  668. bindFunc(cast(void**)&glGetIntegerv, "glGetIntegerv");
  669. bindFunc(cast(void**)&glGetString, "glGetString");
  670. bindFunc(cast(void**)&glGetTexImage, "glGetTexImage");
  671. bindFunc(cast(void**)&glGetTexParameterfv, "glGetTexParameterfv");
  672. bindFunc(cast(void**)&glGetTexParameteriv, "glGetTexParameteriv");
  673. bindFunc(cast(void**)&glGetTexLevelParameterfv, "glGetTexLevelParameterfv");
  674. bindFunc(cast(void**)&glGetTexLevelParameteriv, "glGetTexLevelParameteriv");
  675. bindFunc(cast(void**)&glIsEnabled, "glIsEnabled");
  676. bindFunc(cast(void**)&glDepthRange, "glDepthRange");
  677. bindFunc(cast(void**)&glViewport, "glViewport");
  678. // OpenGL 1.1
  679. bindFunc(cast(void**)&glDrawArrays, "glDrawArrays");
  680. bindFunc(cast(void**)&glDrawElements, "glDrawElements");
  681. bindFunc(cast(void**)&glPolygonOffset, "glPolygonOffset");
  682. bindFunc(cast(void**)&glCopyTexImage1D, "glCopyTexImage1D");
  683. bindFunc(cast(void**)&glCopyTexImage2D, "glCopyTexImage2D");
  684. bindFunc(cast(void**)&glCopyTexSubImage1D, "glCopyTexSubImage1D");
  685. bindFunc(cast(void**)&glCopyTexSubImage2D, "glCopyTexSubImage2D");
  686. bindFunc(cast(void**)&glTexSubImage1D, "glTexSubImage1D");
  687. bindFunc(cast(void**)&glTexSubImage2D, "glTexSubImage2D");
  688. bindFunc(cast(void**)&glBindTexture, "glBindTexture");
  689. bindFunc(cast(void**)&glDeleteTextures, "glDeleteTextures");
  690. bindFunc(cast(void**)&glGenTextures, "glGenTextures");
  691. bindFunc(cast(void**)&glIsTexture, "glIsTexture");
  692. _loadedVersion = GLVersion.GL11;
  693. loadPlatformGL(&bindFunc);
  694. }
  695. }
  696. private
  697. {
  698. GLVersion findMaxAvailable()
  699. {
  700. string verstr = to!string(glGetString(GL_VERSION));
  701. if(verstr.indexOf("4.2") != -1)
  702. return GLVersion.GL42;
  703. else if(verstr.indexOf("4.1") != -1)
  704. return GLVersion.GL41;
  705. else if(verstr.indexOf("4.0") != -1)
  706. return GLVersion.GL40;
  707. else if(verstr.indexOf("3.3") != -1)
  708. return GLVersion.GL33;
  709. else if(verstr.indexOf("3.2") != -1)
  710. return GLVersion.GL32;
  711. else if(verstr.indexOf("3.1") != -1)
  712. return GLVersion.GL31;
  713. else if(verstr.indexOf("3.0") != -1)
  714. return GLVersion.GL30;
  715. else if(verstr.indexOf("2.1") != -1)
  716. return GLVersion.GL21;
  717. else if(verstr.indexOf("2.0") != -1)
  718. return GLVersion.GL20;
  719. else if(verstr.indexOf("1.5") !=

Large files files are truncated, but you can click here to view the full file