impl.odin 124 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640
  1. package vendor_gl
  2. loaded_up_to: [2]int
  3. loaded_up_to_major := 0
  4. loaded_up_to_minor := 0
  5. Set_Proc_Address_Type :: #type proc(p: rawptr, name: cstring)
  6. load_up_to :: proc(major, minor: int, set_proc_address: Set_Proc_Address_Type) {
  7. loaded_up_to = {0, 0}
  8. loaded_up_to[0] = major
  9. loaded_up_to[1] = minor
  10. loaded_up_to_major = major
  11. loaded_up_to_minor = minor
  12. switch major*10+minor {
  13. case 46: load_4_6(set_proc_address); fallthrough
  14. case 45: load_4_5(set_proc_address); fallthrough
  15. case 44: load_4_4(set_proc_address); fallthrough
  16. case 43: load_4_3(set_proc_address); fallthrough
  17. case 42: load_4_2(set_proc_address); fallthrough
  18. case 41: load_4_1(set_proc_address); fallthrough
  19. case 40: load_4_0(set_proc_address); fallthrough
  20. case 33: load_3_3(set_proc_address); fallthrough
  21. case 32: load_3_2(set_proc_address); fallthrough
  22. case 31: load_3_1(set_proc_address); fallthrough
  23. case 30: load_3_0(set_proc_address); fallthrough
  24. case 21: load_2_1(set_proc_address); fallthrough
  25. case 20: load_2_0(set_proc_address); fallthrough
  26. case 15: load_1_5(set_proc_address); fallthrough
  27. case 14: load_1_4(set_proc_address); fallthrough
  28. case 13: load_1_3(set_proc_address); fallthrough
  29. case 12: load_1_2(set_proc_address); fallthrough
  30. case 11: load_1_1(set_proc_address); fallthrough
  31. case 10: load_1_0(set_proc_address)
  32. }
  33. }
  34. /*
  35. Type conversion overview:
  36. typedef unsigned int GLenum; -> u32
  37. typedef unsigned char GLboolean; -> bool
  38. typedef unsigned int GLbitfield; -> u32
  39. typedef signed char GLbyte; -> i8
  40. typedef short GLshort; -> i16
  41. typedef int GLint; -> i32
  42. typedef unsigned char GLubyte; -> u8
  43. typedef unsigned short GLushort; -> u16
  44. typedef unsigned int GLuint; -> u32
  45. typedef int GLsizei; -> i32
  46. typedef float GLfloat; -> f32
  47. typedef double GLdouble; -> f64
  48. typedef char GLchar; -> u8
  49. typedef ptrdiff_t GLintptr; -> int
  50. typedef ptrdiff_t GLsizeiptr; -> int
  51. typedef int64_t GLint64; -> i64
  52. typedef uint64_t GLuint64; -> u64
  53. void* -> rawptr
  54. */
  55. sync_t :: distinct rawptr
  56. debug_proc_t :: #type proc "c" (source: u32, type: u32, id: u32, severity: u32, length: i32, message: cstring, userParam: rawptr)
  57. // VERSION_1_0
  58. impl_CullFace: proc "c" (mode: u32)
  59. impl_FrontFace: proc "c" (mode: u32)
  60. impl_Hint: proc "c" (target: u32, mode: u32)
  61. impl_LineWidth: proc "c" (width: f32)
  62. impl_PointSize: proc "c" (size: f32)
  63. impl_PolygonMode: proc "c" (face: u32, mode: u32)
  64. impl_Scissor: proc "c" (x: i32, y: i32, width: i32, height: i32)
  65. impl_TexParameterf: proc "c" (target: u32, pname: u32, param: f32)
  66. impl_TexParameterfv: proc "c" (target: u32, pname: u32, params: [^]f32)
  67. impl_TexParameteri: proc "c" (target: u32, pname: u32, param: i32)
  68. impl_TexParameteriv: proc "c" (target: u32, pname: u32, params: [^]i32)
  69. impl_TexImage1D: proc "c" (target: u32, level: i32, internalformat: i32, width: i32, border: i32, format: u32, type: u32, pixels: rawptr)
  70. impl_TexImage2D: proc "c" (target: u32, level: i32, internalformat: i32, width: i32, height: i32, border: i32, format: u32, type: u32, pixels: rawptr)
  71. impl_DrawBuffer: proc "c" (buf: u32)
  72. impl_Clear: proc "c" (mask: u32)
  73. impl_ClearColor: proc "c" (red: f32, green: f32, blue: f32, alpha: f32)
  74. impl_ClearStencil: proc "c" (s: i32)
  75. impl_ClearDepth: proc "c" (depth: f64)
  76. impl_StencilMask: proc "c" (mask: u32)
  77. impl_ColorMask: proc "c" (red: bool, green: bool, blue: bool, alpha: bool)
  78. impl_DepthMask: proc "c" (flag: bool)
  79. impl_Disable: proc "c" (cap: u32)
  80. impl_Enable: proc "c" (cap: u32)
  81. impl_Finish: proc "c" ()
  82. impl_Flush: proc "c" ()
  83. impl_BlendFunc: proc "c" (sfactor: u32, dfactor: u32)
  84. impl_LogicOp: proc "c" (opcode: u32)
  85. impl_StencilFunc: proc "c" (func: u32, ref: i32, mask: u32)
  86. impl_StencilOp: proc "c" (fail: u32, zfail: u32, zpass: u32)
  87. impl_DepthFunc: proc "c" (func: u32)
  88. impl_PixelStoref: proc "c" (pname: u32, param: f32)
  89. impl_PixelStorei: proc "c" (pname: u32, param: i32)
  90. impl_ReadBuffer: proc "c" (src: u32)
  91. impl_ReadPixels: proc "c" (x: i32, y: i32, width: i32, height: i32, format: u32, type: u32, pixels: rawptr)
  92. impl_GetBooleanv: proc "c" (pname: u32, data: ^bool)
  93. impl_GetDoublev: proc "c" (pname: u32, data: ^f64)
  94. impl_GetError: proc "c" () -> u32
  95. impl_GetFloatv: proc "c" (pname: u32, data: ^f32)
  96. impl_GetIntegerv: proc "c" (pname: u32, data: ^i32)
  97. impl_GetString: proc "c" (name: u32) -> cstring
  98. impl_GetTexImage: proc "c" (target: u32, level: i32, format: u32, type: u32, pixels: rawptr)
  99. impl_GetTexParameterfv: proc "c" (target: u32, pname: u32, params: [^]f32)
  100. impl_GetTexParameteriv: proc "c" (target: u32, pname: u32, params: [^]i32)
  101. impl_GetTexLevelParameterfv: proc "c" (target: u32, level: i32, pname: u32, params: [^]f32)
  102. impl_GetTexLevelParameteriv: proc "c" (target: u32, level: i32, pname: u32, params: [^]i32)
  103. impl_IsEnabled: proc "c" (cap: u32) -> bool
  104. impl_DepthRange: proc "c" (near: f64, far: f64)
  105. impl_Viewport: proc "c" (x: i32, y: i32, width: i32, height: i32)
  106. load_1_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
  107. set_proc_address(&impl_CullFace, "glCullFace")
  108. set_proc_address(&impl_FrontFace, "glFrontFace")
  109. set_proc_address(&impl_Hint, "glHint")
  110. set_proc_address(&impl_LineWidth, "glLineWidth")
  111. set_proc_address(&impl_PointSize, "glPointSize")
  112. set_proc_address(&impl_PolygonMode, "glPolygonMode")
  113. set_proc_address(&impl_Scissor, "glScissor")
  114. set_proc_address(&impl_TexParameterf, "glTexParameterf")
  115. set_proc_address(&impl_TexParameterfv, "glTexParameterfv")
  116. set_proc_address(&impl_TexParameteri, "glTexParameteri")
  117. set_proc_address(&impl_TexParameteriv, "glTexParameteriv")
  118. set_proc_address(&impl_TexImage1D, "glTexImage1D")
  119. set_proc_address(&impl_TexImage2D, "glTexImage2D")
  120. set_proc_address(&impl_DrawBuffer, "glDrawBuffer")
  121. set_proc_address(&impl_Clear, "glClear")
  122. set_proc_address(&impl_ClearColor, "glClearColor")
  123. set_proc_address(&impl_ClearStencil, "glClearStencil")
  124. set_proc_address(&impl_ClearDepth, "glClearDepth")
  125. set_proc_address(&impl_StencilMask, "glStencilMask")
  126. set_proc_address(&impl_ColorMask, "glColorMask")
  127. set_proc_address(&impl_DepthMask, "glDepthMask")
  128. set_proc_address(&impl_Disable, "glDisable")
  129. set_proc_address(&impl_Enable, "glEnable")
  130. set_proc_address(&impl_Finish, "glFinish")
  131. set_proc_address(&impl_Flush, "glFlush")
  132. set_proc_address(&impl_BlendFunc, "glBlendFunc")
  133. set_proc_address(&impl_LogicOp, "glLogicOp")
  134. set_proc_address(&impl_StencilFunc, "glStencilFunc")
  135. set_proc_address(&impl_StencilOp, "glStencilOp")
  136. set_proc_address(&impl_DepthFunc, "glDepthFunc")
  137. set_proc_address(&impl_PixelStoref, "glPixelStoref")
  138. set_proc_address(&impl_PixelStorei, "glPixelStorei")
  139. set_proc_address(&impl_ReadBuffer, "glReadBuffer")
  140. set_proc_address(&impl_ReadPixels, "glReadPixels")
  141. set_proc_address(&impl_GetBooleanv, "glGetBooleanv")
  142. set_proc_address(&impl_GetDoublev, "glGetDoublev")
  143. set_proc_address(&impl_GetError, "glGetError")
  144. set_proc_address(&impl_GetFloatv, "glGetFloatv")
  145. set_proc_address(&impl_GetIntegerv, "glGetIntegerv")
  146. set_proc_address(&impl_GetString, "glGetString")
  147. set_proc_address(&impl_GetTexImage, "glGetTexImage")
  148. set_proc_address(&impl_GetTexParameterfv, "glGetTexParameterfv")
  149. set_proc_address(&impl_GetTexParameteriv, "glGetTexParameteriv")
  150. set_proc_address(&impl_GetTexLevelParameterfv, "glGetTexLevelParameterfv")
  151. set_proc_address(&impl_GetTexLevelParameteriv, "glGetTexLevelParameteriv")
  152. set_proc_address(&impl_IsEnabled, "glIsEnabled")
  153. set_proc_address(&impl_DepthRange, "glDepthRange")
  154. set_proc_address(&impl_Viewport, "glViewport")
  155. }
  156. // VERSION_1_1
  157. impl_DrawArrays: proc "c" (mode: u32, first: i32, count: i32)
  158. impl_DrawElements: proc "c" (mode: u32, count: i32, type: u32, indices: rawptr)
  159. impl_PolygonOffset: proc "c" (factor: f32, units: f32)
  160. impl_CopyTexImage1D: proc "c" (target: u32, level: i32, internalformat: u32, x: i32, y: i32, width: i32, border: i32)
  161. impl_CopyTexImage2D: proc "c" (target: u32, level: i32, internalformat: u32, x: i32, y: i32, width: i32, height: i32, border: i32)
  162. impl_CopyTexSubImage1D: proc "c" (target: u32, level: i32, xoffset: i32, x: i32, y: i32, width: i32)
  163. impl_CopyTexSubImage2D: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, x: i32, y: i32, width: i32, height: i32)
  164. impl_TexSubImage1D: proc "c" (target: u32, level: i32, xoffset: i32, width: i32, format: u32, type: u32, pixels: rawptr)
  165. impl_TexSubImage2D: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, type: u32, pixels: rawptr)
  166. impl_BindTexture: proc "c" (target: u32, texture: u32)
  167. impl_DeleteTextures: proc "c" (n: i32, textures: [^]u32)
  168. impl_GenTextures: proc "c" (n: i32, textures: [^]u32)
  169. impl_IsTexture: proc "c" (texture: u32) -> bool
  170. load_1_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
  171. set_proc_address(&impl_DrawArrays, "glDrawArrays")
  172. set_proc_address(&impl_DrawElements, "glDrawElements")
  173. set_proc_address(&impl_PolygonOffset, "glPolygonOffset")
  174. set_proc_address(&impl_CopyTexImage1D, "glCopyTexImage1D")
  175. set_proc_address(&impl_CopyTexImage2D, "glCopyTexImage2D")
  176. set_proc_address(&impl_CopyTexSubImage1D, "glCopyTexSubImage1D")
  177. set_proc_address(&impl_CopyTexSubImage2D, "glCopyTexSubImage2D")
  178. set_proc_address(&impl_TexSubImage1D, "glTexSubImage1D")
  179. set_proc_address(&impl_TexSubImage2D, "glTexSubImage2D")
  180. set_proc_address(&impl_BindTexture, "glBindTexture")
  181. set_proc_address(&impl_DeleteTextures, "glDeleteTextures")
  182. set_proc_address(&impl_GenTextures, "glGenTextures")
  183. set_proc_address(&impl_IsTexture, "glIsTexture")
  184. }
  185. // VERSION_1_2
  186. impl_DrawRangeElements: proc "c" (mode: u32, start: u32, end: u32, count: i32, type: u32, indices: rawptr)
  187. impl_TexImage3D: proc "c" (target: u32, level: i32, internalformat: i32, width: i32, height: i32, depth: i32, border: i32, format: u32, type: u32, data: rawptr)
  188. impl_TexSubImage3D: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, pixels: rawptr)
  189. impl_CopyTexSubImage3D: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, x: i32, y: i32, width: i32, height: i32)
  190. load_1_2 :: proc(set_proc_address: Set_Proc_Address_Type) {
  191. set_proc_address(&impl_DrawRangeElements, "glDrawRangeElements")
  192. set_proc_address(&impl_TexImage3D, "glTexImage3D")
  193. set_proc_address(&impl_TexSubImage3D, "glTexSubImage3D")
  194. set_proc_address(&impl_CopyTexSubImage3D, "glCopyTexSubImage3D")
  195. }
  196. // VERSION_1_3
  197. impl_ActiveTexture: proc "c" (texture: u32)
  198. impl_SampleCoverage: proc "c" (value: f32, invert: bool)
  199. impl_CompressedTexImage3D: proc "c" (target: u32, level: i32, internalformat: u32, width: i32, height: i32, depth: i32, border: i32, imageSize: i32, data: rawptr)
  200. impl_CompressedTexImage2D: proc "c" (target: u32, level: i32, internalformat: u32, width: i32, height: i32, border: i32, imageSize: i32, data: rawptr)
  201. impl_CompressedTexImage1D: proc "c" (target: u32, level: i32, internalformat: u32, width: i32, border: i32, imageSize: i32, data: rawptr)
  202. impl_CompressedTexSubImage3D: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, imageSize: i32, data: rawptr)
  203. impl_CompressedTexSubImage2D: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, imageSize: i32, data: rawptr)
  204. impl_CompressedTexSubImage1D: proc "c" (target: u32, level: i32, xoffset: i32, width: i32, format: u32, imageSize: i32, data: rawptr)
  205. impl_GetCompressedTexImage: proc "c" (target: u32, level: i32, img: rawptr)
  206. load_1_3 :: proc(set_proc_address: Set_Proc_Address_Type) {
  207. set_proc_address(&impl_ActiveTexture, "glActiveTexture")
  208. set_proc_address(&impl_SampleCoverage, "glSampleCoverage")
  209. set_proc_address(&impl_CompressedTexImage3D, "glCompressedTexImage3D")
  210. set_proc_address(&impl_CompressedTexImage2D, "glCompressedTexImage2D")
  211. set_proc_address(&impl_CompressedTexImage1D, "glCompressedTexImage1D")
  212. set_proc_address(&impl_CompressedTexSubImage3D, "glCompressedTexSubImage3D")
  213. set_proc_address(&impl_CompressedTexSubImage2D, "glCompressedTexSubImage2D")
  214. set_proc_address(&impl_CompressedTexSubImage1D, "glCompressedTexSubImage1D")
  215. set_proc_address(&impl_GetCompressedTexImage, "glGetCompressedTexImage")
  216. }
  217. // VERSION_1_4
  218. impl_BlendFuncSeparate: proc "c" (sfactorRGB: u32, dfactorRGB: u32, sfactorAlpha: u32, dfactorAlpha: u32)
  219. impl_MultiDrawArrays: proc "c" (mode: u32, first: [^]i32, count: [^]i32, drawcount: i32)
  220. impl_MultiDrawElements: proc "c" (mode: u32, count: [^]i32, type: u32, indices: [^]rawptr, drawcount: i32)
  221. impl_PointParameterf: proc "c" (pname: u32, param: f32)
  222. impl_PointParameterfv: proc "c" (pname: u32, params: [^]f32)
  223. impl_PointParameteri: proc "c" (pname: u32, param: i32)
  224. impl_PointParameteriv: proc "c" (pname: u32, params: [^]i32)
  225. impl_BlendColor: proc "c" (red: f32, green: f32, blue: f32, alpha: f32)
  226. impl_BlendEquation: proc "c" (mode: u32)
  227. load_1_4 :: proc(set_proc_address: Set_Proc_Address_Type) {
  228. set_proc_address(&impl_BlendFuncSeparate, "glBlendFuncSeparate")
  229. set_proc_address(&impl_MultiDrawArrays, "glMultiDrawArrays")
  230. set_proc_address(&impl_MultiDrawElements, "glMultiDrawElements")
  231. set_proc_address(&impl_PointParameterf, "glPointParameterf")
  232. set_proc_address(&impl_PointParameterfv, "glPointParameterfv")
  233. set_proc_address(&impl_PointParameteri, "glPointParameteri")
  234. set_proc_address(&impl_PointParameteriv, "glPointParameteriv")
  235. set_proc_address(&impl_BlendColor, "glBlendColor")
  236. set_proc_address(&impl_BlendEquation, "glBlendEquation")
  237. }
  238. // VERSION_1_5
  239. impl_GenQueries: proc "c" (n: i32, ids: [^]u32)
  240. impl_DeleteQueries: proc "c" (n: i32, ids: [^]u32)
  241. impl_IsQuery: proc "c" (id: u32) -> bool
  242. impl_BeginQuery: proc "c" (target: u32, id: u32)
  243. impl_EndQuery: proc "c" (target: u32)
  244. impl_GetQueryiv: proc "c" (target: u32, pname: u32, params: [^]i32)
  245. impl_GetQueryObjectiv: proc "c" (id: u32, pname: u32, params: [^]i32)
  246. impl_GetQueryObjectuiv: proc "c" (id: u32, pname: u32, params: [^]u32)
  247. impl_BindBuffer: proc "c" (target: u32, buffer: u32)
  248. impl_DeleteBuffers: proc "c" (n: i32, buffers: [^]u32)
  249. impl_GenBuffers: proc "c" (n: i32, buffers: [^]u32)
  250. impl_IsBuffer: proc "c" (buffer: u32) -> bool
  251. impl_BufferData: proc "c" (target: u32, size: int, data: rawptr, usage: u32)
  252. impl_BufferSubData: proc "c" (target: u32, offset: int, size: int, data: rawptr)
  253. impl_GetBufferSubData: proc "c" (target: u32, offset: int, size: int, data: rawptr)
  254. impl_MapBuffer: proc "c" (target: u32, access: u32) -> rawptr
  255. impl_UnmapBuffer: proc "c" (target: u32) -> bool
  256. impl_GetBufferParameteriv: proc "c" (target: u32, pname: u32, params: [^]i32)
  257. impl_GetBufferPointerv: proc "c" (target: u32, pname: u32, params: [^]rawptr)
  258. load_1_5 :: proc(set_proc_address: Set_Proc_Address_Type) {
  259. set_proc_address(&impl_GenQueries, "glGenQueries")
  260. set_proc_address(&impl_DeleteQueries, "glDeleteQueries")
  261. set_proc_address(&impl_IsQuery, "glIsQuery")
  262. set_proc_address(&impl_BeginQuery, "glBeginQuery")
  263. set_proc_address(&impl_EndQuery, "glEndQuery")
  264. set_proc_address(&impl_GetQueryiv, "glGetQueryiv")
  265. set_proc_address(&impl_GetQueryObjectiv, "glGetQueryObjectiv")
  266. set_proc_address(&impl_GetQueryObjectuiv, "glGetQueryObjectuiv")
  267. set_proc_address(&impl_BindBuffer, "glBindBuffer")
  268. set_proc_address(&impl_DeleteBuffers, "glDeleteBuffers")
  269. set_proc_address(&impl_GenBuffers, "glGenBuffers")
  270. set_proc_address(&impl_IsBuffer, "glIsBuffer")
  271. set_proc_address(&impl_BufferData, "glBufferData")
  272. set_proc_address(&impl_BufferSubData, "glBufferSubData")
  273. set_proc_address(&impl_GetBufferSubData, "glGetBufferSubData")
  274. set_proc_address(&impl_MapBuffer, "glMapBuffer")
  275. set_proc_address(&impl_UnmapBuffer, "glUnmapBuffer")
  276. set_proc_address(&impl_GetBufferParameteriv, "glGetBufferParameteriv")
  277. set_proc_address(&impl_GetBufferPointerv, "glGetBufferPointerv")
  278. }
  279. // VERSION_2_0
  280. impl_BlendEquationSeparate: proc "c" (modeRGB: u32, modeAlpha: u32)
  281. impl_DrawBuffers: proc "c" (n: i32, bufs: [^]u32)
  282. impl_StencilOpSeparate: proc "c" (face: u32, sfail: u32, dpfail: u32, dppass: u32)
  283. impl_StencilFuncSeparate: proc "c" (face: u32, func: u32, ref: i32, mask: u32)
  284. impl_StencilMaskSeparate: proc "c" (face: u32, mask: u32)
  285. impl_AttachShader: proc "c" (program: u32, shader: u32)
  286. impl_BindAttribLocation: proc "c" (program: u32, index: u32, name: cstring)
  287. impl_CompileShader: proc "c" (shader: u32)
  288. impl_CreateProgram: proc "c" () -> u32
  289. impl_CreateShader: proc "c" (type: u32) -> u32
  290. impl_DeleteProgram: proc "c" (program: u32)
  291. impl_DeleteShader: proc "c" (shader: u32)
  292. impl_DetachShader: proc "c" (program: u32, shader: u32)
  293. impl_DisableVertexAttribArray: proc "c" (index: u32)
  294. impl_EnableVertexAttribArray: proc "c" (index: u32)
  295. impl_GetActiveAttrib: proc "c" (program: u32, index: u32, bufSize: i32, length: ^i32, size: ^i32, type: ^u32, name: [^]u8)
  296. impl_GetActiveUniform: proc "c" (program: u32, index: u32, bufSize: i32, length: ^i32, size: ^i32, type: ^u32, name: [^]u8)
  297. impl_GetAttachedShaders: proc "c" (program: u32, maxCount: i32, count: ^i32, shaders: ^u32)
  298. impl_GetAttribLocation: proc "c" (program: u32, name: cstring) -> i32
  299. impl_GetProgramiv: proc "c" (program: u32, pname: u32, params: [^]i32)
  300. impl_GetProgramInfoLog: proc "c" (program: u32, bufSize: i32, length: ^i32, infoLog: [^]u8)
  301. impl_GetShaderiv: proc "c" (shader: u32, pname: u32, params: [^]i32)
  302. impl_GetShaderInfoLog: proc "c" (shader: u32, bufSize: i32, length: ^i32, infoLog: [^]u8)
  303. impl_GetShaderSource: proc "c" (shader: u32, bufSize: i32, length: ^i32, source: [^]u8)
  304. impl_GetUniformLocation: proc "c" (program: u32, name: cstring) -> i32
  305. impl_GetUniformfv: proc "c" (program: u32, location: i32, params: [^]f32)
  306. impl_GetUniformiv: proc "c" (program: u32, location: i32, params: [^]i32)
  307. impl_GetVertexAttribdv: proc "c" (index: u32, pname: u32, params: [^]f64)
  308. impl_GetVertexAttribfv: proc "c" (index: u32, pname: u32, params: [^]f32)
  309. impl_GetVertexAttribiv: proc "c" (index: u32, pname: u32, params: [^]i32)
  310. impl_GetVertexAttribPointerv: proc "c" (index: u32, pname: u32, pointer: ^uintptr)
  311. impl_IsProgram: proc "c" (program: u32) -> bool
  312. impl_IsShader: proc "c" (shader: u32) -> bool
  313. impl_LinkProgram: proc "c" (program: u32)
  314. impl_ShaderSource: proc "c" (shader: u32, count: i32, string: [^]cstring, length: [^]i32)
  315. impl_UseProgram: proc "c" (program: u32)
  316. impl_Uniform1f: proc "c" (location: i32, v0: f32)
  317. impl_Uniform2f: proc "c" (location: i32, v0: f32, v1: f32)
  318. impl_Uniform3f: proc "c" (location: i32, v0: f32, v1: f32, v2: f32)
  319. impl_Uniform4f: proc "c" (location: i32, v0: f32, v1: f32, v2: f32, v3: f32)
  320. impl_Uniform1i: proc "c" (location: i32, v0: i32)
  321. impl_Uniform2i: proc "c" (location: i32, v0: i32, v1: i32)
  322. impl_Uniform3i: proc "c" (location: i32, v0: i32, v1: i32, v2: i32)
  323. impl_Uniform4i: proc "c" (location: i32, v0: i32, v1: i32, v2: i32, v3: i32)
  324. impl_Uniform1fv: proc "c" (location: i32, count: i32, value: [^]f32)
  325. impl_Uniform2fv: proc "c" (location: i32, count: i32, value: [^]f32)
  326. impl_Uniform3fv: proc "c" (location: i32, count: i32, value: [^]f32)
  327. impl_Uniform4fv: proc "c" (location: i32, count: i32, value: [^]f32)
  328. impl_Uniform1iv: proc "c" (location: i32, count: i32, value: [^]i32)
  329. impl_Uniform2iv: proc "c" (location: i32, count: i32, value: [^]i32)
  330. impl_Uniform3iv: proc "c" (location: i32, count: i32, value: [^]i32)
  331. impl_Uniform4iv: proc "c" (location: i32, count: i32, value: [^]i32)
  332. impl_UniformMatrix2fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  333. impl_UniformMatrix3fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  334. impl_UniformMatrix4fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  335. impl_ValidateProgram: proc "c" (program: u32)
  336. impl_VertexAttrib1d: proc "c" (index: u32, x: f64)
  337. impl_VertexAttrib1dv: proc "c" (index: u32, v: ^f64)
  338. impl_VertexAttrib1f: proc "c" (index: u32, x: f32)
  339. impl_VertexAttrib1fv: proc "c" (index: u32, v: ^f32)
  340. impl_VertexAttrib1s: proc "c" (index: u32, x: i16)
  341. impl_VertexAttrib1sv: proc "c" (index: u32, v: ^i16)
  342. impl_VertexAttrib2d: proc "c" (index: u32, x: f64, y: f64)
  343. impl_VertexAttrib2dv: proc "c" (index: u32, v: ^[2]f64)
  344. impl_VertexAttrib2f: proc "c" (index: u32, x: f32, y: f32)
  345. impl_VertexAttrib2fv: proc "c" (index: u32, v: ^[2]f32)
  346. impl_VertexAttrib2s: proc "c" (index: u32, x: i16, y: i16)
  347. impl_VertexAttrib2sv: proc "c" (index: u32, v: ^[2]i16)
  348. impl_VertexAttrib3d: proc "c" (index: u32, x: f64, y: f64, z: f64)
  349. impl_VertexAttrib3dv: proc "c" (index: u32, v: ^[3]f64)
  350. impl_VertexAttrib3f: proc "c" (index: u32, x: f32, y: f32, z: f32)
  351. impl_VertexAttrib3fv: proc "c" (index: u32, v: ^[3]f32)
  352. impl_VertexAttrib3s: proc "c" (index: u32, x: i16, y: i16, z: i16)
  353. impl_VertexAttrib3sv: proc "c" (index: u32, v: ^[3]i16)
  354. impl_VertexAttrib4Nbv: proc "c" (index: u32, v: ^[4]i8)
  355. impl_VertexAttrib4Niv: proc "c" (index: u32, v: ^[4]i32)
  356. impl_VertexAttrib4Nsv: proc "c" (index: u32, v: ^[4]i16)
  357. impl_VertexAttrib4Nub: proc "c" (index: u32, x: u8, y: u8, z: u8, w: u8)
  358. impl_VertexAttrib4Nubv: proc "c" (index: u32, v: ^[4]u8)
  359. impl_VertexAttrib4Nuiv: proc "c" (index: u32, v: ^[4]u32)
  360. impl_VertexAttrib4Nusv: proc "c" (index: u32, v: ^[4]u16)
  361. impl_VertexAttrib4bv: proc "c" (index: u32, v: ^[4]i8)
  362. impl_VertexAttrib4d: proc "c" (index: u32, x: f64, y: f64, z: f64, w: f64)
  363. impl_VertexAttrib4dv: proc "c" (index: u32, v: ^[4]f64)
  364. impl_VertexAttrib4f: proc "c" (index: u32, x: f32, y: f32, z: f32, w: f32)
  365. impl_VertexAttrib4fv: proc "c" (index: u32, v: ^[4]f32)
  366. impl_VertexAttrib4iv: proc "c" (index: u32, v: ^[4]i32)
  367. impl_VertexAttrib4s: proc "c" (index: u32, x: i16, y: i16, z: i16, w: i16)
  368. impl_VertexAttrib4sv: proc "c" (index: u32, v: ^[4]i16)
  369. impl_VertexAttrib4ubv: proc "c" (index: u32, v: ^[4]u8)
  370. impl_VertexAttrib4uiv: proc "c" (index: u32, v: ^[4]u32)
  371. impl_VertexAttrib4usv: proc "c" (index: u32, v: ^[4]u16)
  372. impl_VertexAttribPointer: proc "c" (index: u32, size: i32, type: u32, normalized: bool, stride: i32, pointer: uintptr)
  373. load_2_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
  374. set_proc_address(&impl_BlendEquationSeparate, "glBlendEquationSeparate")
  375. set_proc_address(&impl_DrawBuffers, "glDrawBuffers")
  376. set_proc_address(&impl_StencilOpSeparate, "glStencilOpSeparate")
  377. set_proc_address(&impl_StencilFuncSeparate, "glStencilFuncSeparate")
  378. set_proc_address(&impl_StencilMaskSeparate, "glStencilMaskSeparate")
  379. set_proc_address(&impl_AttachShader, "glAttachShader")
  380. set_proc_address(&impl_BindAttribLocation, "glBindAttribLocation")
  381. set_proc_address(&impl_CompileShader, "glCompileShader")
  382. set_proc_address(&impl_CreateProgram, "glCreateProgram")
  383. set_proc_address(&impl_CreateShader, "glCreateShader")
  384. set_proc_address(&impl_DeleteProgram, "glDeleteProgram")
  385. set_proc_address(&impl_DeleteShader, "glDeleteShader")
  386. set_proc_address(&impl_DetachShader, "glDetachShader")
  387. set_proc_address(&impl_DisableVertexAttribArray, "glDisableVertexAttribArray")
  388. set_proc_address(&impl_EnableVertexAttribArray, "glEnableVertexAttribArray")
  389. set_proc_address(&impl_GetActiveAttrib, "glGetActiveAttrib")
  390. set_proc_address(&impl_GetActiveUniform, "glGetActiveUniform")
  391. set_proc_address(&impl_GetAttachedShaders, "glGetAttachedShaders")
  392. set_proc_address(&impl_GetAttribLocation, "glGetAttribLocation")
  393. set_proc_address(&impl_GetProgramiv, "glGetProgramiv")
  394. set_proc_address(&impl_GetProgramInfoLog, "glGetProgramInfoLog")
  395. set_proc_address(&impl_GetShaderiv, "glGetShaderiv")
  396. set_proc_address(&impl_GetShaderInfoLog, "glGetShaderInfoLog")
  397. set_proc_address(&impl_GetShaderSource, "glGetShaderSource")
  398. set_proc_address(&impl_GetUniformLocation, "glGetUniformLocation")
  399. set_proc_address(&impl_GetUniformfv, "glGetUniformfv")
  400. set_proc_address(&impl_GetUniformiv, "glGetUniformiv")
  401. set_proc_address(&impl_GetVertexAttribdv, "glGetVertexAttribdv")
  402. set_proc_address(&impl_GetVertexAttribfv, "glGetVertexAttribfv")
  403. set_proc_address(&impl_GetVertexAttribiv, "glGetVertexAttribiv")
  404. set_proc_address(&impl_GetVertexAttribPointerv, "glGetVertexAttribPointerv")
  405. set_proc_address(&impl_IsProgram, "glIsProgram")
  406. set_proc_address(&impl_IsShader, "glIsShader")
  407. set_proc_address(&impl_LinkProgram, "glLinkProgram")
  408. set_proc_address(&impl_ShaderSource, "glShaderSource")
  409. set_proc_address(&impl_UseProgram, "glUseProgram")
  410. set_proc_address(&impl_Uniform1f, "glUniform1f")
  411. set_proc_address(&impl_Uniform2f, "glUniform2f")
  412. set_proc_address(&impl_Uniform3f, "glUniform3f")
  413. set_proc_address(&impl_Uniform4f, "glUniform4f")
  414. set_proc_address(&impl_Uniform1i, "glUniform1i")
  415. set_proc_address(&impl_Uniform2i, "glUniform2i")
  416. set_proc_address(&impl_Uniform3i, "glUniform3i")
  417. set_proc_address(&impl_Uniform4i, "glUniform4i")
  418. set_proc_address(&impl_Uniform1fv, "glUniform1fv")
  419. set_proc_address(&impl_Uniform2fv, "glUniform2fv")
  420. set_proc_address(&impl_Uniform3fv, "glUniform3fv")
  421. set_proc_address(&impl_Uniform4fv, "glUniform4fv")
  422. set_proc_address(&impl_Uniform1iv, "glUniform1iv")
  423. set_proc_address(&impl_Uniform2iv, "glUniform2iv")
  424. set_proc_address(&impl_Uniform3iv, "glUniform3iv")
  425. set_proc_address(&impl_Uniform4iv, "glUniform4iv")
  426. set_proc_address(&impl_UniformMatrix2fv, "glUniformMatrix2fv")
  427. set_proc_address(&impl_UniformMatrix3fv, "glUniformMatrix3fv")
  428. set_proc_address(&impl_UniformMatrix4fv, "glUniformMatrix4fv")
  429. set_proc_address(&impl_ValidateProgram, "glValidateProgram")
  430. set_proc_address(&impl_VertexAttrib1d, "glVertexAttrib1d")
  431. set_proc_address(&impl_VertexAttrib1dv, "glVertexAttrib1dv")
  432. set_proc_address(&impl_VertexAttrib1f, "glVertexAttrib1f")
  433. set_proc_address(&impl_VertexAttrib1fv, "glVertexAttrib1fv")
  434. set_proc_address(&impl_VertexAttrib1s, "glVertexAttrib1s")
  435. set_proc_address(&impl_VertexAttrib1sv, "glVertexAttrib1sv")
  436. set_proc_address(&impl_VertexAttrib2d, "glVertexAttrib2d")
  437. set_proc_address(&impl_VertexAttrib2dv, "glVertexAttrib2dv")
  438. set_proc_address(&impl_VertexAttrib2f, "glVertexAttrib2f")
  439. set_proc_address(&impl_VertexAttrib2fv, "glVertexAttrib2fv")
  440. set_proc_address(&impl_VertexAttrib2s, "glVertexAttrib2s")
  441. set_proc_address(&impl_VertexAttrib2sv, "glVertexAttrib2sv")
  442. set_proc_address(&impl_VertexAttrib3d, "glVertexAttrib3d")
  443. set_proc_address(&impl_VertexAttrib3dv, "glVertexAttrib3dv")
  444. set_proc_address(&impl_VertexAttrib3f, "glVertexAttrib3f")
  445. set_proc_address(&impl_VertexAttrib3fv, "glVertexAttrib3fv")
  446. set_proc_address(&impl_VertexAttrib3s, "glVertexAttrib3s")
  447. set_proc_address(&impl_VertexAttrib3sv, "glVertexAttrib3sv")
  448. set_proc_address(&impl_VertexAttrib4Nbv, "glVertexAttrib4Nbv")
  449. set_proc_address(&impl_VertexAttrib4Niv, "glVertexAttrib4Niv")
  450. set_proc_address(&impl_VertexAttrib4Nsv, "glVertexAttrib4Nsv")
  451. set_proc_address(&impl_VertexAttrib4Nub, "glVertexAttrib4Nub")
  452. set_proc_address(&impl_VertexAttrib4Nubv, "glVertexAttrib4Nubv")
  453. set_proc_address(&impl_VertexAttrib4Nuiv, "glVertexAttrib4Nuiv")
  454. set_proc_address(&impl_VertexAttrib4Nusv, "glVertexAttrib4Nusv")
  455. set_proc_address(&impl_VertexAttrib4bv, "glVertexAttrib4bv")
  456. set_proc_address(&impl_VertexAttrib4d, "glVertexAttrib4d")
  457. set_proc_address(&impl_VertexAttrib4dv, "glVertexAttrib4dv")
  458. set_proc_address(&impl_VertexAttrib4f, "glVertexAttrib4f")
  459. set_proc_address(&impl_VertexAttrib4fv, "glVertexAttrib4fv")
  460. set_proc_address(&impl_VertexAttrib4iv, "glVertexAttrib4iv")
  461. set_proc_address(&impl_VertexAttrib4s, "glVertexAttrib4s")
  462. set_proc_address(&impl_VertexAttrib4sv, "glVertexAttrib4sv")
  463. set_proc_address(&impl_VertexAttrib4ubv, "glVertexAttrib4ubv")
  464. set_proc_address(&impl_VertexAttrib4uiv, "glVertexAttrib4uiv")
  465. set_proc_address(&impl_VertexAttrib4usv, "glVertexAttrib4usv")
  466. set_proc_address(&impl_VertexAttribPointer, "glVertexAttribPointer")
  467. }
  468. // VERSION_2_1
  469. impl_UniformMatrix2x3fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  470. impl_UniformMatrix3x2fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  471. impl_UniformMatrix2x4fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  472. impl_UniformMatrix4x2fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  473. impl_UniformMatrix3x4fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  474. impl_UniformMatrix4x3fv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f32)
  475. load_2_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
  476. set_proc_address(&impl_UniformMatrix2x3fv, "glUniformMatrix2x3fv")
  477. set_proc_address(&impl_UniformMatrix3x2fv, "glUniformMatrix3x2fv")
  478. set_proc_address(&impl_UniformMatrix2x4fv, "glUniformMatrix2x4fv")
  479. set_proc_address(&impl_UniformMatrix4x2fv, "glUniformMatrix4x2fv")
  480. set_proc_address(&impl_UniformMatrix3x4fv, "glUniformMatrix3x4fv")
  481. set_proc_address(&impl_UniformMatrix4x3fv, "glUniformMatrix4x3fv")
  482. }
  483. // VERSION_3_0
  484. impl_ColorMaski: proc "c" (index: u32, r: bool, g: bool, b: bool, a: bool)
  485. impl_GetBooleani_v: proc "c" (target: u32, index: u32, data: ^bool)
  486. impl_GetIntegeri_v: proc "c" (target: u32, index: u32, data: ^i32)
  487. impl_Enablei: proc "c" (target: u32, index: u32)
  488. impl_Disablei: proc "c" (target: u32, index: u32)
  489. impl_IsEnabledi: proc "c" (target: u32, index: u32) -> bool
  490. impl_BeginTransformFeedback: proc "c" (primitiveMode: u32)
  491. impl_EndTransformFeedback: proc "c" ()
  492. impl_BindBufferRange: proc "c" (target: u32, index: u32, buffer: u32, offset: int, size: int)
  493. impl_BindBufferBase: proc "c" (target: u32, index: u32, buffer: u32)
  494. impl_TransformFeedbackVaryings: proc "c" (program: u32, count: i32, varyings: [^]cstring, bufferMode: u32)
  495. impl_GetTransformFeedbackVarying: proc "c" (program: u32, index: u32, bufSize: i32, length: ^i32, size: ^i32, type: ^u32, name: [^]u8)
  496. impl_ClampColor: proc "c" (target: u32, clamp: u32)
  497. impl_BeginConditionalRender: proc "c" (id: u32, mode: u32)
  498. impl_EndConditionalRender: proc "c" ()
  499. impl_VertexAttribIPointer: proc "c" (index: u32, size: i32, type: u32, stride: i32, pointer: uintptr)
  500. impl_GetVertexAttribIiv: proc "c" (index: u32, pname: u32, params: [^]i32)
  501. impl_GetVertexAttribIuiv: proc "c" (index: u32, pname: u32, params: [^]u32)
  502. impl_VertexAttribI1i: proc "c" (index: u32, x: i32)
  503. impl_VertexAttribI2i: proc "c" (index: u32, x: i32, y: i32)
  504. impl_VertexAttribI3i: proc "c" (index: u32, x: i32, y: i32, z: i32)
  505. impl_VertexAttribI4i: proc "c" (index: u32, x: i32, y: i32, z: i32, w: i32)
  506. impl_VertexAttribI1ui: proc "c" (index: u32, x: u32)
  507. impl_VertexAttribI2ui: proc "c" (index: u32, x: u32, y: u32)
  508. impl_VertexAttribI3ui: proc "c" (index: u32, x: u32, y: u32, z: u32)
  509. impl_VertexAttribI4ui: proc "c" (index: u32, x: u32, y: u32, z: u32, w: u32)
  510. impl_VertexAttribI1iv: proc "c" (index: u32, v: [^]i32)
  511. impl_VertexAttribI2iv: proc "c" (index: u32, v: [^]i32)
  512. impl_VertexAttribI3iv: proc "c" (index: u32, v: [^]i32)
  513. impl_VertexAttribI4iv: proc "c" (index: u32, v: [^]i32)
  514. impl_VertexAttribI1uiv: proc "c" (index: u32, v: [^]u32)
  515. impl_VertexAttribI2uiv: proc "c" (index: u32, v: [^]u32)
  516. impl_VertexAttribI3uiv: proc "c" (index: u32, v: [^]u32)
  517. impl_VertexAttribI4uiv: proc "c" (index: u32, v: [^]u32)
  518. impl_VertexAttribI4bv: proc "c" (index: u32, v: [^]i8)
  519. impl_VertexAttribI4sv: proc "c" (index: u32, v: [^]i16)
  520. impl_VertexAttribI4ubv: proc "c" (index: u32, v: [^]u8)
  521. impl_VertexAttribI4usv: proc "c" (index: u32, v: [^]u16)
  522. impl_GetUniformuiv: proc "c" (program: u32, location: i32, params: [^]u32)
  523. impl_BindFragDataLocation: proc "c" (program: u32, color: u32, name: cstring)
  524. impl_GetFragDataLocation: proc "c" (program: u32, name: cstring) -> i32
  525. impl_Uniform1ui: proc "c" (location: i32, v0: u32)
  526. impl_Uniform2ui: proc "c" (location: i32, v0: u32, v1: u32)
  527. impl_Uniform3ui: proc "c" (location: i32, v0: u32, v1: u32, v2: u32)
  528. impl_Uniform4ui: proc "c" (location: i32, v0: u32, v1: u32, v2: u32, v3: u32)
  529. impl_Uniform1uiv: proc "c" (location: i32, count: i32, value: [^]u32)
  530. impl_Uniform2uiv: proc "c" (location: i32, count: i32, value: [^]u32)
  531. impl_Uniform3uiv: proc "c" (location: i32, count: i32, value: [^]u32)
  532. impl_Uniform4uiv: proc "c" (location: i32, count: i32, value: [^]u32)
  533. impl_TexParameterIiv: proc "c" (target: u32, pname: u32, params: [^]i32)
  534. impl_TexParameterIuiv: proc "c" (target: u32, pname: u32, params: [^]u32)
  535. impl_GetTexParameterIiv: proc "c" (target: u32, pname: u32, params: [^]i32)
  536. impl_GetTexParameterIuiv: proc "c" (target: u32, pname: u32, params: [^]u32)
  537. impl_ClearBufferiv: proc "c" (buffer: u32, drawbuffer: i32, value: ^i32)
  538. impl_ClearBufferuiv: proc "c" (buffer: u32, drawbuffer: i32, value: ^u32)
  539. impl_ClearBufferfv: proc "c" (buffer: u32, drawbuffer: i32, value: ^f32)
  540. impl_ClearBufferfi: proc "c" (buffer: u32, drawbuffer: i32, depth: f32, stencil: i32) -> rawptr
  541. impl_GetStringi: proc "c" (name: u32, index: u32) -> cstring
  542. impl_IsRenderbuffer: proc "c" (renderbuffer: u32) -> bool
  543. impl_BindRenderbuffer: proc "c" (target: u32, renderbuffer: u32)
  544. impl_DeleteRenderbuffers: proc "c" (n: i32, renderbuffers: [^]u32)
  545. impl_GenRenderbuffers: proc "c" (n: i32, renderbuffers: [^]u32)
  546. impl_RenderbufferStorage: proc "c" (target: u32, internalformat: u32, width: i32, height: i32)
  547. impl_GetRenderbufferParameteriv: proc "c" (target: u32, pname: u32, params: [^]i32)
  548. impl_IsFramebuffer: proc "c" (framebuffer: u32) -> bool
  549. impl_BindFramebuffer: proc "c" (target: u32, framebuffer: u32)
  550. impl_DeleteFramebuffers: proc "c" (n: i32, framebuffers: [^]u32)
  551. impl_GenFramebuffers: proc "c" (n: i32, framebuffers: [^]u32)
  552. impl_CheckFramebufferStatus: proc "c" (target: u32) -> u32
  553. impl_FramebufferTexture1D: proc "c" (target: u32, attachment: u32, textarget: u32, texture: u32, level: i32)
  554. impl_FramebufferTexture2D: proc "c" (target: u32, attachment: u32, textarget: u32, texture: u32, level: i32)
  555. impl_FramebufferTexture3D: proc "c" (target: u32, attachment: u32, textarget: u32, texture: u32, level: i32, zoffset: i32)
  556. impl_FramebufferRenderbuffer: proc "c" (target: u32, attachment: u32, renderbuffertarget: u32, renderbuffer: u32)
  557. impl_GetFramebufferAttachmentParameteriv: proc "c" (target: u32, attachment: u32, pname: u32, params: [^]i32)
  558. impl_GenerateMipmap: proc "c" (target: u32)
  559. impl_BlitFramebuffer: proc "c" (srcX0: i32, srcY0: i32, srcX1: i32, srcY1: i32, dstX0: i32, dstY0: i32, dstX1: i32, dstY1: i32, mask: u32, filter: u32)
  560. impl_RenderbufferStorageMultisample: proc "c" (target: u32, samples: i32, internalformat: u32, width: i32, height: i32)
  561. impl_FramebufferTextureLayer: proc "c" (target: u32, attachment: u32, texture: u32, level: i32, layer: i32)
  562. impl_MapBufferRange: proc "c" (target: u32, offset: int, length: int, access: u32) -> rawptr
  563. impl_FlushMappedBufferRange: proc "c" (target: u32, offset: int, length: int)
  564. impl_BindVertexArray: proc "c" (array: u32)
  565. impl_DeleteVertexArrays: proc "c" (n: i32, arrays: [^]u32)
  566. impl_GenVertexArrays: proc "c" (n: i32, arrays: [^]u32)
  567. impl_IsVertexArray: proc "c" (array: u32) -> bool
  568. load_3_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
  569. set_proc_address(&impl_ColorMaski, "glColorMaski")
  570. set_proc_address(&impl_GetBooleani_v, "glGetBooleani_v")
  571. set_proc_address(&impl_GetIntegeri_v, "glGetIntegeri_v")
  572. set_proc_address(&impl_Enablei, "glEnablei")
  573. set_proc_address(&impl_Disablei, "glDisablei")
  574. set_proc_address(&impl_IsEnabledi, "glIsEnabledi")
  575. set_proc_address(&impl_BeginTransformFeedback, "glBeginTransformFeedback")
  576. set_proc_address(&impl_EndTransformFeedback, "glEndTransformFeedback")
  577. set_proc_address(&impl_BindBufferRange, "glBindBufferRange")
  578. set_proc_address(&impl_BindBufferBase, "glBindBufferBase")
  579. set_proc_address(&impl_TransformFeedbackVaryings, "glTransformFeedbackVaryings")
  580. set_proc_address(&impl_GetTransformFeedbackVarying, "glGetTransformFeedbackVarying")
  581. set_proc_address(&impl_ClampColor, "glClampColor")
  582. set_proc_address(&impl_BeginConditionalRender, "glBeginConditionalRender")
  583. set_proc_address(&impl_EndConditionalRender, "glEndConditionalRender")
  584. set_proc_address(&impl_VertexAttribIPointer, "glVertexAttribIPointer")
  585. set_proc_address(&impl_GetVertexAttribIiv, "glGetVertexAttribIiv")
  586. set_proc_address(&impl_GetVertexAttribIuiv, "glGetVertexAttribIuiv")
  587. set_proc_address(&impl_VertexAttribI1i, "glVertexAttribI1i")
  588. set_proc_address(&impl_VertexAttribI2i, "glVertexAttribI2i")
  589. set_proc_address(&impl_VertexAttribI3i, "glVertexAttribI3i")
  590. set_proc_address(&impl_VertexAttribI4i, "glVertexAttribI4i")
  591. set_proc_address(&impl_VertexAttribI1ui, "glVertexAttribI1ui")
  592. set_proc_address(&impl_VertexAttribI2ui, "glVertexAttribI2ui")
  593. set_proc_address(&impl_VertexAttribI3ui, "glVertexAttribI3ui")
  594. set_proc_address(&impl_VertexAttribI4ui, "glVertexAttribI4ui")
  595. set_proc_address(&impl_VertexAttribI1iv, "glVertexAttribI1iv")
  596. set_proc_address(&impl_VertexAttribI2iv, "glVertexAttribI2iv")
  597. set_proc_address(&impl_VertexAttribI3iv, "glVertexAttribI3iv")
  598. set_proc_address(&impl_VertexAttribI4iv, "glVertexAttribI4iv")
  599. set_proc_address(&impl_VertexAttribI1uiv, "glVertexAttribI1uiv")
  600. set_proc_address(&impl_VertexAttribI2uiv, "glVertexAttribI2uiv")
  601. set_proc_address(&impl_VertexAttribI3uiv, "glVertexAttribI3uiv")
  602. set_proc_address(&impl_VertexAttribI4uiv, "glVertexAttribI4uiv")
  603. set_proc_address(&impl_VertexAttribI4bv, "glVertexAttribI4bv")
  604. set_proc_address(&impl_VertexAttribI4sv, "glVertexAttribI4sv")
  605. set_proc_address(&impl_VertexAttribI4ubv, "glVertexAttribI4ubv")
  606. set_proc_address(&impl_VertexAttribI4usv, "glVertexAttribI4usv")
  607. set_proc_address(&impl_GetUniformuiv, "glGetUniformuiv")
  608. set_proc_address(&impl_BindFragDataLocation, "glBindFragDataLocation")
  609. set_proc_address(&impl_GetFragDataLocation, "glGetFragDataLocation")
  610. set_proc_address(&impl_Uniform1ui, "glUniform1ui")
  611. set_proc_address(&impl_Uniform2ui, "glUniform2ui")
  612. set_proc_address(&impl_Uniform3ui, "glUniform3ui")
  613. set_proc_address(&impl_Uniform4ui, "glUniform4ui")
  614. set_proc_address(&impl_Uniform1uiv, "glUniform1uiv")
  615. set_proc_address(&impl_Uniform2uiv, "glUniform2uiv")
  616. set_proc_address(&impl_Uniform3uiv, "glUniform3uiv")
  617. set_proc_address(&impl_Uniform4uiv, "glUniform4uiv")
  618. set_proc_address(&impl_TexParameterIiv, "glTexParameterIiv")
  619. set_proc_address(&impl_TexParameterIuiv, "glTexParameterIuiv")
  620. set_proc_address(&impl_GetTexParameterIiv, "glGetTexParameterIiv")
  621. set_proc_address(&impl_GetTexParameterIuiv, "glGetTexParameterIuiv")
  622. set_proc_address(&impl_ClearBufferiv, "glClearBufferiv")
  623. set_proc_address(&impl_ClearBufferuiv, "glClearBufferuiv")
  624. set_proc_address(&impl_ClearBufferfv, "glClearBufferfv")
  625. set_proc_address(&impl_ClearBufferfi, "glClearBufferfi")
  626. set_proc_address(&impl_GetStringi, "glGetStringi")
  627. set_proc_address(&impl_IsRenderbuffer, "glIsRenderbuffer")
  628. set_proc_address(&impl_BindRenderbuffer, "glBindRenderbuffer")
  629. set_proc_address(&impl_DeleteRenderbuffers, "glDeleteRenderbuffers")
  630. set_proc_address(&impl_GenRenderbuffers, "glGenRenderbuffers")
  631. set_proc_address(&impl_RenderbufferStorage, "glRenderbufferStorage")
  632. set_proc_address(&impl_GetRenderbufferParameteriv, "glGetRenderbufferParameteriv")
  633. set_proc_address(&impl_IsFramebuffer, "glIsFramebuffer")
  634. set_proc_address(&impl_BindFramebuffer, "glBindFramebuffer")
  635. set_proc_address(&impl_DeleteFramebuffers, "glDeleteFramebuffers")
  636. set_proc_address(&impl_GenFramebuffers, "glGenFramebuffers")
  637. set_proc_address(&impl_CheckFramebufferStatus, "glCheckFramebufferStatus")
  638. set_proc_address(&impl_FramebufferTexture1D, "glFramebufferTexture1D")
  639. set_proc_address(&impl_FramebufferTexture2D, "glFramebufferTexture2D")
  640. set_proc_address(&impl_FramebufferTexture3D, "glFramebufferTexture3D")
  641. set_proc_address(&impl_FramebufferRenderbuffer, "glFramebufferRenderbuffer")
  642. set_proc_address(&impl_GetFramebufferAttachmentParameteriv, "glGetFramebufferAttachmentParameteriv")
  643. set_proc_address(&impl_GenerateMipmap, "glGenerateMipmap")
  644. set_proc_address(&impl_BlitFramebuffer, "glBlitFramebuffer")
  645. set_proc_address(&impl_RenderbufferStorageMultisample, "glRenderbufferStorageMultisample")
  646. set_proc_address(&impl_FramebufferTextureLayer, "glFramebufferTextureLayer")
  647. set_proc_address(&impl_MapBufferRange, "glMapBufferRange")
  648. set_proc_address(&impl_FlushMappedBufferRange, "glFlushMappedBufferRange")
  649. set_proc_address(&impl_BindVertexArray, "glBindVertexArray")
  650. set_proc_address(&impl_DeleteVertexArrays, "glDeleteVertexArrays")
  651. set_proc_address(&impl_GenVertexArrays, "glGenVertexArrays")
  652. set_proc_address(&impl_IsVertexArray, "glIsVertexArray")
  653. }
  654. // VERSION_3_1
  655. impl_DrawArraysInstanced: proc "c" (mode: u32, first: i32, count: i32, instancecount: i32)
  656. impl_DrawElementsInstanced: proc "c" (mode: u32, count: i32, type: u32, indices: rawptr, instancecount: i32)
  657. impl_TexBuffer: proc "c" (target: u32, internalformat: u32, buffer: u32)
  658. impl_PrimitiveRestartIndex: proc "c" (index: u32)
  659. impl_CopyBufferSubData: proc "c" (readTarget: u32, writeTarget: u32, readOffset: int, writeOffset: int, size: int)
  660. impl_GetUniformIndices: proc "c" (program: u32, uniformCount: i32, uniformNames: [^]cstring, uniformIndices: [^]u32)
  661. impl_GetActiveUniformsiv: proc "c" (program: u32, uniformCount: i32, uniformIndices: [^]u32, pname: u32, params: [^]i32)
  662. impl_GetActiveUniformName: proc "c" (program: u32, uniformIndex: u32, bufSize: i32, length: ^i32, uniformName: [^]u8)
  663. impl_GetUniformBlockIndex: proc "c" (program: u32, uniformBlockName: cstring) -> u32
  664. impl_GetActiveUniformBlockiv: proc "c" (program: u32, uniformBlockIndex: u32, pname: u32, params: [^]i32)
  665. impl_GetActiveUniformBlockName: proc "c" (program: u32, uniformBlockIndex: u32, bufSize: i32, length: ^i32, uniformBlockName: [^]u8)
  666. impl_UniformBlockBinding: proc "c" (program: u32, uniformBlockIndex: u32, uniformBlockBinding: u32)
  667. load_3_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
  668. set_proc_address(&impl_DrawArraysInstanced, "glDrawArraysInstanced")
  669. set_proc_address(&impl_DrawElementsInstanced, "glDrawElementsInstanced")
  670. set_proc_address(&impl_TexBuffer, "glTexBuffer")
  671. set_proc_address(&impl_PrimitiveRestartIndex, "glPrimitiveRestartIndex")
  672. set_proc_address(&impl_CopyBufferSubData, "glCopyBufferSubData")
  673. set_proc_address(&impl_GetUniformIndices, "glGetUniformIndices")
  674. set_proc_address(&impl_GetActiveUniformsiv, "glGetActiveUniformsiv")
  675. set_proc_address(&impl_GetActiveUniformName, "glGetActiveUniformName")
  676. set_proc_address(&impl_GetUniformBlockIndex, "glGetUniformBlockIndex")
  677. set_proc_address(&impl_GetActiveUniformBlockiv, "glGetActiveUniformBlockiv")
  678. set_proc_address(&impl_GetActiveUniformBlockName, "glGetActiveUniformBlockName")
  679. set_proc_address(&impl_UniformBlockBinding, "glUniformBlockBinding")
  680. }
  681. // VERSION_3_2
  682. impl_DrawElementsBaseVertex: proc "c" (mode: u32, count: i32, type: u32, indices: rawptr, basevertex: i32)
  683. impl_DrawRangeElementsBaseVertex: proc "c" (mode: u32, start: u32, end: u32, count: i32, type: u32, indices: rawptr, basevertex: i32)
  684. impl_DrawElementsInstancedBaseVertex: proc "c" (mode: u32, count: i32, type: u32, indices: rawptr, instancecount: i32, basevertex: i32)
  685. impl_MultiDrawElementsBaseVertex: proc "c" (mode: u32, count: ^i32, type: u32, indices: [^]rawptr, drawcount: i32, basevertex: ^i32)
  686. impl_ProvokingVertex: proc "c" (mode: u32)
  687. impl_FenceSync: proc "c" (condition: u32, flags: u32) -> sync_t
  688. impl_IsSync: proc "c" (sync: sync_t) -> bool
  689. impl_DeleteSync: proc "c" (sync: sync_t)
  690. impl_ClientWaitSync: proc "c" (sync: sync_t, flags: u32, timeout: u64) -> u32
  691. impl_WaitSync: proc "c" (sync: sync_t, flags: u32, timeout: u64)
  692. impl_GetInteger64v: proc "c" (pname: u32, data: ^i64)
  693. impl_GetSynciv: proc "c" (sync: sync_t, pname: u32, bufSize: i32, length: ^i32, values: [^]i32)
  694. impl_GetInteger64i_v: proc "c" (target: u32, index: u32, data: ^i64)
  695. impl_GetBufferParameteri64v: proc "c" (target: u32, pname: u32, params: [^]i64)
  696. impl_FramebufferTexture: proc "c" (target: u32, attachment: u32, texture: u32, level: i32)
  697. impl_TexImage2DMultisample: proc "c" (target: u32, samples: i32, internalformat: u32, width: i32, height: i32, fixedsamplelocations: bool)
  698. impl_TexImage3DMultisample: proc "c" (target: u32, samples: i32, internalformat: u32, width: i32, height: i32, depth: i32, fixedsamplelocations: bool)
  699. impl_GetMultisamplefv: proc "c" (pname: u32, index: u32, val: ^f32)
  700. impl_SampleMaski: proc "c" (maskNumber: u32, mask: u32)
  701. load_3_2 :: proc(set_proc_address: Set_Proc_Address_Type) {
  702. set_proc_address(&impl_DrawElementsBaseVertex, "glDrawElementsBaseVertex")
  703. set_proc_address(&impl_DrawRangeElementsBaseVertex, "glDrawRangeElementsBaseVertex")
  704. set_proc_address(&impl_DrawElementsInstancedBaseVertex, "glDrawElementsInstancedBaseVertex")
  705. set_proc_address(&impl_MultiDrawElementsBaseVertex, "glMultiDrawElementsBaseVertex")
  706. set_proc_address(&impl_ProvokingVertex, "glProvokingVertex")
  707. set_proc_address(&impl_FenceSync, "glFenceSync")
  708. set_proc_address(&impl_IsSync, "glIsSync")
  709. set_proc_address(&impl_DeleteSync, "glDeleteSync")
  710. set_proc_address(&impl_ClientWaitSync, "glClientWaitSync")
  711. set_proc_address(&impl_WaitSync, "glWaitSync")
  712. set_proc_address(&impl_GetInteger64v, "glGetInteger64v")
  713. set_proc_address(&impl_GetSynciv, "glGetSynciv")
  714. set_proc_address(&impl_GetInteger64i_v, "glGetInteger64i_v")
  715. set_proc_address(&impl_GetBufferParameteri64v, "glGetBufferParameteri64v")
  716. set_proc_address(&impl_FramebufferTexture, "glFramebufferTexture")
  717. set_proc_address(&impl_TexImage2DMultisample, "glTexImage2DMultisample")
  718. set_proc_address(&impl_TexImage3DMultisample, "glTexImage3DMultisample")
  719. set_proc_address(&impl_GetMultisamplefv, "glGetMultisamplefv")
  720. set_proc_address(&impl_SampleMaski, "glSampleMaski")
  721. }
  722. // VERSION_3_3
  723. impl_BindFragDataLocationIndexed: proc "c" (program: u32, colorNumber: u32, index: u32, name: cstring)
  724. impl_GetFragDataIndex: proc "c" (program: u32, name: cstring) -> i32
  725. impl_GenSamplers: proc "c" (count: i32, samplers: [^]u32)
  726. impl_DeleteSamplers: proc "c" (count: i32, samplers: [^]u32)
  727. impl_IsSampler: proc "c" (sampler: u32) -> bool
  728. impl_BindSampler: proc "c" (unit: u32, sampler: u32)
  729. impl_SamplerParameteri: proc "c" (sampler: u32, pname: u32, param: i32)
  730. impl_SamplerParameteriv: proc "c" (sampler: u32, pname: u32, param: ^i32)
  731. impl_SamplerParameterf: proc "c" (sampler: u32, pname: u32, param: f32)
  732. impl_SamplerParameterfv: proc "c" (sampler: u32, pname: u32, param: ^f32)
  733. impl_SamplerParameterIiv: proc "c" (sampler: u32, pname: u32, param: ^i32)
  734. impl_SamplerParameterIuiv: proc "c" (sampler: u32, pname: u32, param: ^u32)
  735. impl_GetSamplerParameteriv: proc "c" (sampler: u32, pname: u32, params: [^]i32)
  736. impl_GetSamplerParameterIiv: proc "c" (sampler: u32, pname: u32, params: [^]i32)
  737. impl_GetSamplerParameterfv: proc "c" (sampler: u32, pname: u32, params: [^]f32)
  738. impl_GetSamplerParameterIuiv: proc "c" (sampler: u32, pname: u32, params: [^]u32)
  739. impl_QueryCounter: proc "c" (id: u32, target: u32)
  740. impl_GetQueryObjecti64v: proc "c" (id: u32, pname: u32, params: [^]i64)
  741. impl_GetQueryObjectui64v: proc "c" (id: u32, pname: u32, params: [^]u64)
  742. impl_VertexAttribDivisor: proc "c" (index: u32, divisor: u32)
  743. impl_VertexAttribP1ui: proc "c" (index: u32, type: u32, normalized: bool, value: u32)
  744. impl_VertexAttribP1uiv: proc "c" (index: u32, type: u32, normalized: bool, value: ^u32)
  745. impl_VertexAttribP2ui: proc "c" (index: u32, type: u32, normalized: bool, value: u32)
  746. impl_VertexAttribP2uiv: proc "c" (index: u32, type: u32, normalized: bool, value: ^u32)
  747. impl_VertexAttribP3ui: proc "c" (index: u32, type: u32, normalized: bool, value: u32)
  748. impl_VertexAttribP3uiv: proc "c" (index: u32, type: u32, normalized: bool, value: ^u32)
  749. impl_VertexAttribP4ui: proc "c" (index: u32, type: u32, normalized: bool, value: u32)
  750. impl_VertexAttribP4uiv: proc "c" (index: u32, type: u32, normalized: bool, value: ^u32)
  751. impl_VertexP2ui: proc "c" (type: u32, value: u32)
  752. impl_VertexP2uiv: proc "c" (type: u32, value: ^u32)
  753. impl_VertexP3ui: proc "c" (type: u32, value: u32)
  754. impl_VertexP3uiv: proc "c" (type: u32, value: ^u32)
  755. impl_VertexP4ui: proc "c" (type: u32, value: u32)
  756. impl_VertexP4uiv: proc "c" (type: u32, value: ^u32)
  757. impl_TexCoordP1ui: proc "c" (type: u32, coords: u32)
  758. impl_TexCoordP1uiv: proc "c" (type: u32, coords: [^]u32)
  759. impl_TexCoordP2ui: proc "c" (type: u32, coords: u32)
  760. impl_TexCoordP2uiv: proc "c" (type: u32, coords: [^]u32)
  761. impl_TexCoordP3ui: proc "c" (type: u32, coords: u32)
  762. impl_TexCoordP3uiv: proc "c" (type: u32, coords: [^]u32)
  763. impl_TexCoordP4ui: proc "c" (type: u32, coords: u32)
  764. impl_TexCoordP4uiv: proc "c" (type: u32, coords: [^]u32)
  765. impl_MultiTexCoordP1ui: proc "c" (texture: u32, type: u32, coords: u32)
  766. impl_MultiTexCoordP1uiv: proc "c" (texture: u32, type: u32, coords: [^]u32)
  767. impl_MultiTexCoordP2ui: proc "c" (texture: u32, type: u32, coords: u32)
  768. impl_MultiTexCoordP2uiv: proc "c" (texture: u32, type: u32, coords: [^]u32)
  769. impl_MultiTexCoordP3ui: proc "c" (texture: u32, type: u32, coords: u32)
  770. impl_MultiTexCoordP3uiv: proc "c" (texture: u32, type: u32, coords: [^]u32)
  771. impl_MultiTexCoordP4ui: proc "c" (texture: u32, type: u32, coords: u32)
  772. impl_MultiTexCoordP4uiv: proc "c" (texture: u32, type: u32, coords: [^]u32)
  773. impl_NormalP3ui: proc "c" (type: u32, coords: u32)
  774. impl_NormalP3uiv: proc "c" (type: u32, coords: [^]u32)
  775. impl_ColorP3ui: proc "c" (type: u32, color: u32)
  776. impl_ColorP3uiv: proc "c" (type: u32, color: ^u32)
  777. impl_ColorP4ui: proc "c" (type: u32, color: u32)
  778. impl_ColorP4uiv: proc "c" (type: u32, color: ^u32)
  779. impl_SecondaryColorP3ui: proc "c" (type: u32, color: u32)
  780. impl_SecondaryColorP3uiv: proc "c" (type: u32, color: ^u32)
  781. load_3_3 :: proc(set_proc_address: Set_Proc_Address_Type) {
  782. set_proc_address(&impl_BindFragDataLocationIndexed, "glBindFragDataLocationIndexed")
  783. set_proc_address(&impl_GetFragDataIndex, "glGetFragDataIndex")
  784. set_proc_address(&impl_GenSamplers, "glGenSamplers")
  785. set_proc_address(&impl_DeleteSamplers, "glDeleteSamplers")
  786. set_proc_address(&impl_IsSampler, "glIsSampler")
  787. set_proc_address(&impl_BindSampler, "glBindSampler")
  788. set_proc_address(&impl_SamplerParameteri, "glSamplerParameteri")
  789. set_proc_address(&impl_SamplerParameteriv, "glSamplerParameteriv")
  790. set_proc_address(&impl_SamplerParameterf, "glSamplerParameterf")
  791. set_proc_address(&impl_SamplerParameterfv, "glSamplerParameterfv")
  792. set_proc_address(&impl_SamplerParameterIiv, "glSamplerParameterIiv")
  793. set_proc_address(&impl_SamplerParameterIuiv, "glSamplerParameterIuiv")
  794. set_proc_address(&impl_GetSamplerParameteriv, "glGetSamplerParameteriv")
  795. set_proc_address(&impl_GetSamplerParameterIiv, "glGetSamplerParameterIiv")
  796. set_proc_address(&impl_GetSamplerParameterfv, "glGetSamplerParameterfv")
  797. set_proc_address(&impl_GetSamplerParameterIuiv, "glGetSamplerParameterIuiv")
  798. set_proc_address(&impl_QueryCounter, "glQueryCounter")
  799. set_proc_address(&impl_GetQueryObjecti64v, "glGetQueryObjecti64v")
  800. set_proc_address(&impl_GetQueryObjectui64v, "glGetQueryObjectui64v")
  801. set_proc_address(&impl_VertexAttribDivisor, "glVertexAttribDivisor")
  802. set_proc_address(&impl_VertexAttribP1ui, "glVertexAttribP1ui")
  803. set_proc_address(&impl_VertexAttribP1uiv, "glVertexAttribP1uiv")
  804. set_proc_address(&impl_VertexAttribP2ui, "glVertexAttribP2ui")
  805. set_proc_address(&impl_VertexAttribP2uiv, "glVertexAttribP2uiv")
  806. set_proc_address(&impl_VertexAttribP3ui, "glVertexAttribP3ui")
  807. set_proc_address(&impl_VertexAttribP3uiv, "glVertexAttribP3uiv")
  808. set_proc_address(&impl_VertexAttribP4ui, "glVertexAttribP4ui")
  809. set_proc_address(&impl_VertexAttribP4uiv, "glVertexAttribP4uiv")
  810. set_proc_address(&impl_VertexP2ui, "glVertexP2ui")
  811. set_proc_address(&impl_VertexP2uiv, "glVertexP2uiv")
  812. set_proc_address(&impl_VertexP3ui, "glVertexP3ui")
  813. set_proc_address(&impl_VertexP3uiv, "glVertexP3uiv")
  814. set_proc_address(&impl_VertexP4ui, "glVertexP4ui")
  815. set_proc_address(&impl_VertexP4uiv, "glVertexP4uiv")
  816. set_proc_address(&impl_TexCoordP1ui, "glTexCoordP1ui")
  817. set_proc_address(&impl_TexCoordP1uiv, "glTexCoordP1uiv")
  818. set_proc_address(&impl_TexCoordP2ui, "glTexCoordP2ui")
  819. set_proc_address(&impl_TexCoordP2uiv, "glTexCoordP2uiv")
  820. set_proc_address(&impl_TexCoordP3ui, "glTexCoordP3ui")
  821. set_proc_address(&impl_TexCoordP3uiv, "glTexCoordP3uiv")
  822. set_proc_address(&impl_TexCoordP4ui, "glTexCoordP4ui")
  823. set_proc_address(&impl_TexCoordP4uiv, "glTexCoordP4uiv")
  824. set_proc_address(&impl_MultiTexCoordP1ui, "glMultiTexCoordP1ui")
  825. set_proc_address(&impl_MultiTexCoordP1uiv, "glMultiTexCoordP1uiv")
  826. set_proc_address(&impl_MultiTexCoordP2ui, "glMultiTexCoordP2ui")
  827. set_proc_address(&impl_MultiTexCoordP2uiv, "glMultiTexCoordP2uiv")
  828. set_proc_address(&impl_MultiTexCoordP3ui, "glMultiTexCoordP3ui")
  829. set_proc_address(&impl_MultiTexCoordP3uiv, "glMultiTexCoordP3uiv")
  830. set_proc_address(&impl_MultiTexCoordP4ui, "glMultiTexCoordP4ui")
  831. set_proc_address(&impl_MultiTexCoordP4uiv, "glMultiTexCoordP4uiv")
  832. set_proc_address(&impl_NormalP3ui, "glNormalP3ui")
  833. set_proc_address(&impl_NormalP3uiv, "glNormalP3uiv")
  834. set_proc_address(&impl_ColorP3ui, "glColorP3ui")
  835. set_proc_address(&impl_ColorP3uiv, "glColorP3uiv")
  836. set_proc_address(&impl_ColorP4ui, "glColorP4ui")
  837. set_proc_address(&impl_ColorP4uiv, "glColorP4uiv")
  838. set_proc_address(&impl_SecondaryColorP3ui, "glSecondaryColorP3ui")
  839. set_proc_address(&impl_SecondaryColorP3uiv, "glSecondaryColorP3uiv")
  840. }
  841. // VERSION_4_0
  842. DrawArraysIndirectCommand :: struct {
  843. count: u32,
  844. instanceCount: u32,
  845. first: u32,
  846. baseInstance: u32,
  847. }
  848. DrawElementsIndirectCommand :: struct {
  849. count: u32,
  850. instanceCount: u32,
  851. firstIndex: u32,
  852. baseVertex: u32,
  853. baseInstance: u32,
  854. }
  855. impl_MinSampleShading: proc "c" (value: f32)
  856. impl_BlendEquationi: proc "c" (buf: u32, mode: u32)
  857. impl_BlendEquationSeparatei: proc "c" (buf: u32, modeRGB: u32, modeAlpha: u32)
  858. impl_BlendFunci: proc "c" (buf: u32, src: u32, dst: u32)
  859. impl_BlendFuncSeparatei: proc "c" (buf: u32, srcRGB: u32, dstRGB: u32, srcAlpha: u32, dstAlpha: u32)
  860. impl_DrawArraysIndirect: proc "c" (mode: u32, indirect: ^DrawArraysIndirectCommand)
  861. impl_DrawElementsIndirect: proc "c" (mode: u32, type: u32, indirect: ^DrawElementsIndirectCommand)
  862. impl_Uniform1d: proc "c" (location: i32, x: f64)
  863. impl_Uniform2d: proc "c" (location: i32, x: f64, y: f64)
  864. impl_Uniform3d: proc "c" (location: i32, x: f64, y: f64, z: f64)
  865. impl_Uniform4d: proc "c" (location: i32, x: f64, y: f64, z: f64, w: f64)
  866. impl_Uniform1dv: proc "c" (location: i32, count: i32, value: [^]f64)
  867. impl_Uniform2dv: proc "c" (location: i32, count: i32, value: [^]f64)
  868. impl_Uniform3dv: proc "c" (location: i32, count: i32, value: [^]f64)
  869. impl_Uniform4dv: proc "c" (location: i32, count: i32, value: [^]f64)
  870. impl_UniformMatrix2dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  871. impl_UniformMatrix3dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  872. impl_UniformMatrix4dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  873. impl_UniformMatrix2x3dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  874. impl_UniformMatrix2x4dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  875. impl_UniformMatrix3x2dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  876. impl_UniformMatrix3x4dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  877. impl_UniformMatrix4x2dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  878. impl_UniformMatrix4x3dv: proc "c" (location: i32, count: i32, transpose: bool, value: [^]f64)
  879. impl_GetUniformdv: proc "c" (program: u32, location: i32, params: [^]f64)
  880. impl_GetSubroutineUniformLocation: proc "c" (program: u32, shadertype: u32, name: cstring) -> i32
  881. impl_GetSubroutineIndex: proc "c" (program: u32, shadertype: u32, name: cstring) -> u32
  882. impl_GetActiveSubroutineUniformiv: proc "c" (program: u32, shadertype: u32, index: u32, pname: u32, values: [^]i32)
  883. impl_GetActiveSubroutineUniformName: proc "c" (program: u32, shadertype: u32, index: u32, bufsize: i32, length: ^i32, name: [^]u8)
  884. impl_GetActiveSubroutineName: proc "c" (program: u32, shadertype: u32, index: u32, bufsize: i32, length: ^i32, name: [^]u8)
  885. impl_UniformSubroutinesuiv: proc "c" (shadertype: u32, count: i32, indices: [^]u32)
  886. impl_GetUniformSubroutineuiv: proc "c" (shadertype: u32, location: i32, params: [^]u32)
  887. impl_GetProgramStageiv: proc "c" (program: u32, shadertype: u32, pname: u32, values: [^]i32)
  888. impl_PatchParameteri: proc "c" (pname: u32, value: i32)
  889. impl_PatchParameterfv: proc "c" (pname: u32, values: [^]f32)
  890. impl_BindTransformFeedback: proc "c" (target: u32, id: u32)
  891. impl_DeleteTransformFeedbacks: proc "c" (n: i32, ids: [^]u32)
  892. impl_GenTransformFeedbacks: proc "c" (n: i32, ids: [^]u32)
  893. impl_IsTransformFeedback: proc "c" (id: u32) -> bool
  894. impl_PauseTransformFeedback: proc "c" ()
  895. impl_ResumeTransformFeedback: proc "c" ()
  896. impl_DrawTransformFeedback: proc "c" (mode: u32, id: u32)
  897. impl_DrawTransformFeedbackStream: proc "c" (mode: u32, id: u32, stream: u32)
  898. impl_BeginQueryIndexed: proc "c" (target: u32, index: u32, id: u32)
  899. impl_EndQueryIndexed: proc "c" (target: u32, index: u32)
  900. impl_GetQueryIndexediv: proc "c" (target: u32, index: u32, pname: u32, params: [^]i32)
  901. impl_GetTextureHandleARB: proc "c" (texture: u32) -> u64
  902. impl_GetTextureSamplerHandleARB: proc "c" (texture, sampler: u32) -> u64
  903. impl_GetImageHandleARB: proc "c" (texture: u32, level: i32, layered: bool, layer: i32, format: u32) -> u64
  904. impl_MakeTextureHandleResidentARB: proc "c" (handle: u64)
  905. impl_MakeImageHandleResidentARB: proc "c" (handle: u64, access: u32)
  906. impl_MakeTextureHandleNonResidentARB:proc "c" (handle: u64)
  907. impl_MakeImageHandleNonResidentARB: proc "c" (handle: u64)
  908. load_4_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
  909. set_proc_address(&impl_MinSampleShading, "glMinSampleShading")
  910. set_proc_address(&impl_BlendEquationi, "glBlendEquationi")
  911. set_proc_address(&impl_BlendEquationSeparatei, "glBlendEquationSeparatei")
  912. set_proc_address(&impl_BlendFunci, "glBlendFunci")
  913. set_proc_address(&impl_BlendFuncSeparatei, "glBlendFuncSeparatei")
  914. set_proc_address(&impl_DrawArraysIndirect, "glDrawArraysIndirect")
  915. set_proc_address(&impl_DrawElementsIndirect, "glDrawElementsIndirect")
  916. set_proc_address(&impl_Uniform1d, "glUniform1d")
  917. set_proc_address(&impl_Uniform2d, "glUniform2d")
  918. set_proc_address(&impl_Uniform3d, "glUniform3d")
  919. set_proc_address(&impl_Uniform4d, "glUniform4d")
  920. set_proc_address(&impl_Uniform1dv, "glUniform1dv")
  921. set_proc_address(&impl_Uniform2dv, "glUniform2dv")
  922. set_proc_address(&impl_Uniform3dv, "glUniform3dv")
  923. set_proc_address(&impl_Uniform4dv, "glUniform4dv")
  924. set_proc_address(&impl_UniformMatrix2dv, "glUniformMatrix2dv")
  925. set_proc_address(&impl_UniformMatrix3dv, "glUniformMatrix3dv")
  926. set_proc_address(&impl_UniformMatrix4dv, "glUniformMatrix4dv")
  927. set_proc_address(&impl_UniformMatrix2x3dv, "glUniformMatrix2x3dv")
  928. set_proc_address(&impl_UniformMatrix2x4dv, "glUniformMatrix2x4dv")
  929. set_proc_address(&impl_UniformMatrix3x2dv, "glUniformMatrix3x2dv")
  930. set_proc_address(&impl_UniformMatrix3x4dv, "glUniformMatrix3x4dv")
  931. set_proc_address(&impl_UniformMatrix4x2dv, "glUniformMatrix4x2dv")
  932. set_proc_address(&impl_UniformMatrix4x3dv, "glUniformMatrix4x3dv")
  933. set_proc_address(&impl_GetUniformdv, "glGetUniformdv")
  934. set_proc_address(&impl_GetSubroutineUniformLocation, "glGetSubroutineUniformLocation")
  935. set_proc_address(&impl_GetSubroutineIndex, "glGetSubroutineIndex")
  936. set_proc_address(&impl_GetActiveSubroutineUniformiv, "glGetActiveSubroutineUniformiv")
  937. set_proc_address(&impl_GetActiveSubroutineUniformName, "glGetActiveSubroutineUniformName")
  938. set_proc_address(&impl_GetActiveSubroutineName, "glGetActiveSubroutineName")
  939. set_proc_address(&impl_UniformSubroutinesuiv, "glUniformSubroutinesuiv")
  940. set_proc_address(&impl_GetUniformSubroutineuiv, "glGetUniformSubroutineuiv")
  941. set_proc_address(&impl_GetProgramStageiv, "glGetProgramStageiv")
  942. set_proc_address(&impl_PatchParameteri, "glPatchParameteri")
  943. set_proc_address(&impl_PatchParameterfv, "glPatchParameterfv")
  944. set_proc_address(&impl_BindTransformFeedback, "glBindTransformFeedback")
  945. set_proc_address(&impl_DeleteTransformFeedbacks, "glDeleteTransformFeedbacks")
  946. set_proc_address(&impl_GenTransformFeedbacks, "glGenTransformFeedbacks")
  947. set_proc_address(&impl_IsTransformFeedback, "glIsTransformFeedback")
  948. set_proc_address(&impl_PauseTransformFeedback, "glPauseTransformFeedback")
  949. set_proc_address(&impl_ResumeTransformFeedback, "glResumeTransformFeedback")
  950. set_proc_address(&impl_DrawTransformFeedback, "glDrawTransformFeedback")
  951. set_proc_address(&impl_DrawTransformFeedbackStream, "glDrawTransformFeedbackStream")
  952. set_proc_address(&impl_BeginQueryIndexed, "glBeginQueryIndexed")
  953. set_proc_address(&impl_EndQueryIndexed, "glEndQueryIndexed")
  954. set_proc_address(&impl_GetQueryIndexediv, "glGetQueryIndexediv")
  955. // Load ARB (architecture review board, vendor specific) extensions that might be available
  956. set_proc_address(&impl_GetTextureHandleARB, "glGetTextureHandleARB")
  957. if impl_GetTextureHandleARB == nil {
  958. set_proc_address(&impl_GetTextureHandleARB, "glGetTextureHandleNV")
  959. }
  960. set_proc_address(&impl_GetTextureSamplerHandleARB, "glGetTextureSamplerHandleARB")
  961. if impl_GetTextureSamplerHandleARB == nil {
  962. set_proc_address(&impl_GetTextureSamplerHandleARB, "glGetTextureSamplerHandleNV")
  963. }
  964. set_proc_address(&impl_GetImageHandleARB, "glGetImageHandleARB")
  965. if impl_GetImageHandleARB == nil {
  966. set_proc_address(&impl_GetImageHandleARB, "glGetImageHandleNV")
  967. }
  968. set_proc_address(&impl_MakeTextureHandleResidentARB, "glMakeTextureHandleResidentARB")
  969. if impl_MakeTextureHandleResidentARB == nil {
  970. set_proc_address(&impl_MakeTextureHandleResidentARB, "glMakeTextureHandleResidentNV")
  971. }
  972. set_proc_address(&impl_MakeImageHandleResidentARB, "glMakeImageHandleResidentARB")
  973. if impl_MakeImageHandleResidentARB == nil {
  974. set_proc_address(&impl_MakeImageHandleResidentARB, "glMakeImageHandleResidentNV")
  975. }
  976. set_proc_address(&impl_MakeTextureHandleNonResidentARB, "glMakeTextureHandleNonResidentARB")
  977. if impl_MakeTextureHandleNonResidentARB == nil {
  978. set_proc_address(&impl_MakeTextureHandleNonResidentARB, "glMakeTextureHandleNonResidentNV")
  979. }
  980. set_proc_address(&impl_MakeImageHandleNonResidentARB, "glMakeImageHandleNonResidentARB")
  981. if impl_MakeImageHandleNonResidentARB == nil {
  982. set_proc_address(&impl_MakeImageHandleNonResidentARB, "glMakeImageHandleNonResidentNV")
  983. }
  984. }
  985. // VERSION_4_1
  986. impl_ReleaseShaderCompiler: proc "c" ()
  987. impl_ShaderBinary: proc "c" (count: i32, shaders: ^u32, binaryformat: u32, binary: rawptr, length: i32)
  988. impl_GetShaderPrecisionFormat: proc "c" (shadertype: u32, precisiontype: u32, range: ^i32, precision: ^i32)
  989. impl_DepthRangef: proc "c" (n: f32, f: f32)
  990. impl_ClearDepthf: proc "c" (d: f32)
  991. impl_GetProgramBinary: proc "c" (program: u32, bufSize: i32, length: ^i32, binaryFormat: ^u32, binary: rawptr)
  992. impl_ProgramBinary: proc "c" (program: u32, binaryFormat: u32, binary: rawptr, length: i32)
  993. impl_ProgramParameteri: proc "c" (program: u32, pname: u32, value: i32)
  994. impl_UseProgramStages: proc "c" (pipeline: u32, stages: u32, program: u32)
  995. impl_ActiveShaderProgram: proc "c" (pipeline: u32, program: u32)
  996. impl_CreateShaderProgramv: proc "c" (type: u32, count: i32, strings: [^]cstring) -> u32
  997. impl_BindProgramPipeline: proc "c" (pipeline: u32)
  998. impl_DeleteProgramPipelines: proc "c" (n: i32, pipelines: [^]u32)
  999. impl_GenProgramPipelines: proc "c" (n: i32, pipelines: [^]u32)
  1000. impl_IsProgramPipeline: proc "c" (pipeline: u32) -> bool
  1001. impl_GetProgramPipelineiv: proc "c" (pipeline: u32, pname: u32, params: [^]i32)
  1002. impl_ProgramUniform1i: proc "c" (program: u32, location: i32, v0: i32)
  1003. impl_ProgramUniform1iv: proc "c" (program: u32, location: i32, count: i32, value: [^]i32)
  1004. impl_ProgramUniform1f: proc "c" (program: u32, location: i32, v0: f32)
  1005. impl_ProgramUniform1fv: proc "c" (program: u32, location: i32, count: i32, value: [^]f32)
  1006. impl_ProgramUniform1d: proc "c" (program: u32, location: i32, v0: f64)
  1007. impl_ProgramUniform1dv: proc "c" (program: u32, location: i32, count: i32, value: [^]f64)
  1008. impl_ProgramUniform1ui: proc "c" (program: u32, location: i32, v0: u32)
  1009. impl_ProgramUniform1uiv: proc "c" (program: u32, location: i32, count: i32, value: [^]u32)
  1010. impl_ProgramUniform2i: proc "c" (program: u32, location: i32, v0: i32, v1: i32)
  1011. impl_ProgramUniform2iv: proc "c" (program: u32, location: i32, count: i32, value: [^]i32)
  1012. impl_ProgramUniform2f: proc "c" (program: u32, location: i32, v0: f32, v1: f32)
  1013. impl_ProgramUniform2fv: proc "c" (program: u32, location: i32, count: i32, value: [^]f32)
  1014. impl_ProgramUniform2d: proc "c" (program: u32, location: i32, v0: f64, v1: f64)
  1015. impl_ProgramUniform2dv: proc "c" (program: u32, location: i32, count: i32, value: [^]f64)
  1016. impl_ProgramUniform2ui: proc "c" (program: u32, location: i32, v0: u32, v1: u32)
  1017. impl_ProgramUniform2uiv: proc "c" (program: u32, location: i32, count: i32, value: [^]u32)
  1018. impl_ProgramUniform3i: proc "c" (program: u32, location: i32, v0: i32, v1: i32, v2: i32)
  1019. impl_ProgramUniform3iv: proc "c" (program: u32, location: i32, count: i32, value: [^]i32)
  1020. impl_ProgramUniform3f: proc "c" (program: u32, location: i32, v0: f32, v1: f32, v2: f32)
  1021. impl_ProgramUniform3fv: proc "c" (program: u32, location: i32, count: i32, value: [^]f32)
  1022. impl_ProgramUniform3d: proc "c" (program: u32, location: i32, v0: f64, v1: f64, v2: f64)
  1023. impl_ProgramUniform3dv: proc "c" (program: u32, location: i32, count: i32, value: [^]f64)
  1024. impl_ProgramUniform3ui: proc "c" (program: u32, location: i32, v0: u32, v1: u32, v2: u32)
  1025. impl_ProgramUniform3uiv: proc "c" (program: u32, location: i32, count: i32, value: [^]u32)
  1026. impl_ProgramUniform4i: proc "c" (program: u32, location: i32, v0: i32, v1: i32, v2: i32, v3: i32)
  1027. impl_ProgramUniform4iv: proc "c" (program: u32, location: i32, count: i32, value: [^]i32)
  1028. impl_ProgramUniform4f: proc "c" (program: u32, location: i32, v0: f32, v1: f32, v2: f32, v3: f32)
  1029. impl_ProgramUniform4fv: proc "c" (program: u32, location: i32, count: i32, value: [^]f32)
  1030. impl_ProgramUniform4d: proc "c" (program: u32, location: i32, v0: f64, v1: f64, v2: f64, v3: f64)
  1031. impl_ProgramUniform4dv: proc "c" (program: u32, location: i32, count: i32, value: [^]f64)
  1032. impl_ProgramUniform4ui: proc "c" (program: u32, location: i32, v0: u32, v1: u32, v2: u32, v3: u32)
  1033. impl_ProgramUniform4uiv: proc "c" (program: u32, location: i32, count: i32, value: [^]u32)
  1034. impl_ProgramUniformMatrix2fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1035. impl_ProgramUniformMatrix3fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1036. impl_ProgramUniformMatrix4fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1037. impl_ProgramUniformMatrix2dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1038. impl_ProgramUniformMatrix3dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1039. impl_ProgramUniformMatrix4dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1040. impl_ProgramUniformMatrix2x3fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1041. impl_ProgramUniformMatrix3x2fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1042. impl_ProgramUniformMatrix2x4fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1043. impl_ProgramUniformMatrix4x2fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1044. impl_ProgramUniformMatrix3x4fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1045. impl_ProgramUniformMatrix4x3fv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f32)
  1046. impl_ProgramUniformMatrix2x3dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1047. impl_ProgramUniformMatrix3x2dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1048. impl_ProgramUniformMatrix2x4dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1049. impl_ProgramUniformMatrix4x2dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1050. impl_ProgramUniformMatrix3x4dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1051. impl_ProgramUniformMatrix4x3dv: proc "c" (program: u32, location: i32, count: i32, transpose: bool, value: [^]f64)
  1052. impl_ValidateProgramPipeline: proc "c" (pipeline: u32)
  1053. impl_GetProgramPipelineInfoLog: proc "c" (pipeline: u32, bufSize: i32, length: ^i32, infoLog: [^]u8)
  1054. impl_VertexAttribL1d: proc "c" (index: u32, x: f64)
  1055. impl_VertexAttribL2d: proc "c" (index: u32, x: f64, y: f64)
  1056. impl_VertexAttribL3d: proc "c" (index: u32, x: f64, y: f64, z: f64)
  1057. impl_VertexAttribL4d: proc "c" (index: u32, x: f64, y: f64, z: f64, w: f64)
  1058. impl_VertexAttribL1dv: proc "c" (index: u32, v: ^f64)
  1059. impl_VertexAttribL2dv: proc "c" (index: u32, v: ^[2]f64)
  1060. impl_VertexAttribL3dv: proc "c" (index: u32, v: ^[3]f64)
  1061. impl_VertexAttribL4dv: proc "c" (index: u32, v: ^[4]f64)
  1062. impl_VertexAttribLPointer: proc "c" (index: u32, size: i32, type: u32, stride: i32, pointer: uintptr)
  1063. impl_GetVertexAttribLdv: proc "c" (index: u32, pname: u32, params: [^]f64)
  1064. impl_ViewportArrayv: proc "c" (first: u32, count: i32, v: [^]f32)
  1065. impl_ViewportIndexedf: proc "c" (index: u32, x: f32, y: f32, w: f32, h: f32)
  1066. impl_ViewportIndexedfv: proc "c" (index: u32, v: ^[4]f32)
  1067. impl_ScissorArrayv: proc "c" (first: u32, count: i32, v: [^]i32)
  1068. impl_ScissorIndexed: proc "c" (index: u32, left: i32, bottom: i32, width: i32, height: i32)
  1069. impl_ScissorIndexedv: proc "c" (index: u32, v: ^[4]i32)
  1070. impl_DepthRangeArrayv: proc "c" (first: u32, count: i32, v: [^]f64)
  1071. impl_DepthRangeIndexed: proc "c" (index: u32, n: f64, f: f64)
  1072. impl_GetFloati_v: proc "c" (target: u32, index: u32, data: ^f32)
  1073. impl_GetDoublei_v: proc "c" (target: u32, index: u32, data: ^f64)
  1074. load_4_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
  1075. set_proc_address(&impl_ReleaseShaderCompiler, "glReleaseShaderCompiler")
  1076. set_proc_address(&impl_ShaderBinary, "glShaderBinary")
  1077. set_proc_address(&impl_GetShaderPrecisionFormat, "glGetShaderPrecisionFormat")
  1078. set_proc_address(&impl_DepthRangef, "glDepthRangef")
  1079. set_proc_address(&impl_ClearDepthf, "glClearDepthf")
  1080. set_proc_address(&impl_GetProgramBinary, "glGetProgramBinary")
  1081. set_proc_address(&impl_ProgramBinary, "glProgramBinary")
  1082. set_proc_address(&impl_ProgramParameteri, "glProgramParameteri")
  1083. set_proc_address(&impl_UseProgramStages, "glUseProgramStages")
  1084. set_proc_address(&impl_ActiveShaderProgram, "glActiveShaderProgram")
  1085. set_proc_address(&impl_CreateShaderProgramv, "glCreateShaderProgramv")
  1086. set_proc_address(&impl_BindProgramPipeline, "glBindProgramPipeline")
  1087. set_proc_address(&impl_DeleteProgramPipelines, "glDeleteProgramPipelines")
  1088. set_proc_address(&impl_GenProgramPipelines, "glGenProgramPipelines")
  1089. set_proc_address(&impl_IsProgramPipeline, "glIsProgramPipeline")
  1090. set_proc_address(&impl_GetProgramPipelineiv, "glGetProgramPipelineiv")
  1091. set_proc_address(&impl_ProgramUniform1i, "glProgramUniform1i")
  1092. set_proc_address(&impl_ProgramUniform1iv, "glProgramUniform1iv")
  1093. set_proc_address(&impl_ProgramUniform1f, "glProgramUniform1f")
  1094. set_proc_address(&impl_ProgramUniform1fv, "glProgramUniform1fv")
  1095. set_proc_address(&impl_ProgramUniform1d, "glProgramUniform1d")
  1096. set_proc_address(&impl_ProgramUniform1dv, "glProgramUniform1dv")
  1097. set_proc_address(&impl_ProgramUniform1ui, "glProgramUniform1ui")
  1098. set_proc_address(&impl_ProgramUniform1uiv, "glProgramUniform1uiv")
  1099. set_proc_address(&impl_ProgramUniform2i, "glProgramUniform2i")
  1100. set_proc_address(&impl_ProgramUniform2iv, "glProgramUniform2iv")
  1101. set_proc_address(&impl_ProgramUniform2f, "glProgramUniform2f")
  1102. set_proc_address(&impl_ProgramUniform2fv, "glProgramUniform2fv")
  1103. set_proc_address(&impl_ProgramUniform2d, "glProgramUniform2d")
  1104. set_proc_address(&impl_ProgramUniform2dv, "glProgramUniform2dv")
  1105. set_proc_address(&impl_ProgramUniform2ui, "glProgramUniform2ui")
  1106. set_proc_address(&impl_ProgramUniform2uiv, "glProgramUniform2uiv")
  1107. set_proc_address(&impl_ProgramUniform3i, "glProgramUniform3i")
  1108. set_proc_address(&impl_ProgramUniform3iv, "glProgramUniform3iv")
  1109. set_proc_address(&impl_ProgramUniform3f, "glProgramUniform3f")
  1110. set_proc_address(&impl_ProgramUniform3fv, "glProgramUniform3fv")
  1111. set_proc_address(&impl_ProgramUniform3d, "glProgramUniform3d")
  1112. set_proc_address(&impl_ProgramUniform3dv, "glProgramUniform3dv")
  1113. set_proc_address(&impl_ProgramUniform3ui, "glProgramUniform3ui")
  1114. set_proc_address(&impl_ProgramUniform3uiv, "glProgramUniform3uiv")
  1115. set_proc_address(&impl_ProgramUniform4i, "glProgramUniform4i")
  1116. set_proc_address(&impl_ProgramUniform4iv, "glProgramUniform4iv")
  1117. set_proc_address(&impl_ProgramUniform4f, "glProgramUniform4f")
  1118. set_proc_address(&impl_ProgramUniform4fv, "glProgramUniform4fv")
  1119. set_proc_address(&impl_ProgramUniform4d, "glProgramUniform4d")
  1120. set_proc_address(&impl_ProgramUniform4dv, "glProgramUniform4dv")
  1121. set_proc_address(&impl_ProgramUniform4ui, "glProgramUniform4ui")
  1122. set_proc_address(&impl_ProgramUniform4uiv, "glProgramUniform4uiv")
  1123. set_proc_address(&impl_ProgramUniformMatrix2fv, "glProgramUniformMatrix2fv")
  1124. set_proc_address(&impl_ProgramUniformMatrix3fv, "glProgramUniformMatrix3fv")
  1125. set_proc_address(&impl_ProgramUniformMatrix4fv, "glProgramUniformMatrix4fv")
  1126. set_proc_address(&impl_ProgramUniformMatrix2dv, "glProgramUniformMatrix2dv")
  1127. set_proc_address(&impl_ProgramUniformMatrix3dv, "glProgramUniformMatrix3dv")
  1128. set_proc_address(&impl_ProgramUniformMatrix4dv, "glProgramUniformMatrix4dv")
  1129. set_proc_address(&impl_ProgramUniformMatrix2x3fv, "glProgramUniformMatrix2x3fv")
  1130. set_proc_address(&impl_ProgramUniformMatrix3x2fv, "glProgramUniformMatrix3x2fv")
  1131. set_proc_address(&impl_ProgramUniformMatrix2x4fv, "glProgramUniformMatrix2x4fv")
  1132. set_proc_address(&impl_ProgramUniformMatrix4x2fv, "glProgramUniformMatrix4x2fv")
  1133. set_proc_address(&impl_ProgramUniformMatrix3x4fv, "glProgramUniformMatrix3x4fv")
  1134. set_proc_address(&impl_ProgramUniformMatrix4x3fv, "glProgramUniformMatrix4x3fv")
  1135. set_proc_address(&impl_ProgramUniformMatrix2x3dv, "glProgramUniformMatrix2x3dv")
  1136. set_proc_address(&impl_ProgramUniformMatrix3x2dv, "glProgramUniformMatrix3x2dv")
  1137. set_proc_address(&impl_ProgramUniformMatrix2x4dv, "glProgramUniformMatrix2x4dv")
  1138. set_proc_address(&impl_ProgramUniformMatrix4x2dv, "glProgramUniformMatrix4x2dv")
  1139. set_proc_address(&impl_ProgramUniformMatrix3x4dv, "glProgramUniformMatrix3x4dv")
  1140. set_proc_address(&impl_ProgramUniformMatrix4x3dv, "glProgramUniformMatrix4x3dv")
  1141. set_proc_address(&impl_ValidateProgramPipeline, "glValidateProgramPipeline")
  1142. set_proc_address(&impl_GetProgramPipelineInfoLog, "glGetProgramPipelineInfoLog")
  1143. set_proc_address(&impl_VertexAttribL1d, "glVertexAttribL1d")
  1144. set_proc_address(&impl_VertexAttribL2d, "glVertexAttribL2d")
  1145. set_proc_address(&impl_VertexAttribL3d, "glVertexAttribL3d")
  1146. set_proc_address(&impl_VertexAttribL4d, "glVertexAttribL4d")
  1147. set_proc_address(&impl_VertexAttribL1dv, "glVertexAttribL1dv")
  1148. set_proc_address(&impl_VertexAttribL2dv, "glVertexAttribL2dv")
  1149. set_proc_address(&impl_VertexAttribL3dv, "glVertexAttribL3dv")
  1150. set_proc_address(&impl_VertexAttribL4dv, "glVertexAttribL4dv")
  1151. set_proc_address(&impl_VertexAttribLPointer, "glVertexAttribLPointer")
  1152. set_proc_address(&impl_GetVertexAttribLdv, "glGetVertexAttribLdv")
  1153. set_proc_address(&impl_ViewportArrayv, "glViewportArrayv")
  1154. set_proc_address(&impl_ViewportIndexedf, "glViewportIndexedf")
  1155. set_proc_address(&impl_ViewportIndexedfv, "glViewportIndexedfv")
  1156. set_proc_address(&impl_ScissorArrayv, "glScissorArrayv")
  1157. set_proc_address(&impl_ScissorIndexed, "glScissorIndexed")
  1158. set_proc_address(&impl_ScissorIndexedv, "glScissorIndexedv")
  1159. set_proc_address(&impl_DepthRangeArrayv, "glDepthRangeArrayv")
  1160. set_proc_address(&impl_DepthRangeIndexed, "glDepthRangeIndexed")
  1161. set_proc_address(&impl_GetFloati_v, "glGetFloati_v")
  1162. set_proc_address(&impl_GetDoublei_v, "glGetDoublei_v")
  1163. }
  1164. // VERSION_4_2
  1165. impl_DrawArraysInstancedBaseInstance: proc "c" (mode: u32, first: i32, count: i32, instancecount: i32, baseinstance: u32)
  1166. impl_DrawElementsInstancedBaseInstance: proc "c" (mode: u32, count: i32, type: u32, indices: rawptr, instancecount: i32, baseinstance: u32)
  1167. impl_DrawElementsInstancedBaseVertexBaseInstance: proc "c" (mode: u32, count: i32, type: u32, indices: rawptr, instancecount: i32, basevertex: i32, baseinstance: u32)
  1168. impl_GetInternalformativ: proc "c" (target: u32, internalformat: u32, pname: u32, bufSize: i32, params: [^]i32)
  1169. impl_GetActiveAtomicCounterBufferiv: proc "c" (program: u32, bufferIndex: u32, pname: u32, params: [^]i32)
  1170. impl_BindImageTexture: proc "c" (unit: u32, texture: u32, level: i32, layered: bool, layer: i32, access: u32, format: u32)
  1171. impl_MemoryBarrier: proc "c" (barriers: u32)
  1172. impl_TexStorage1D: proc "c" (target: u32, levels: i32, internalformat: u32, width: i32)
  1173. impl_TexStorage2D: proc "c" (target: u32, levels: i32, internalformat: u32, width: i32, height: i32)
  1174. impl_TexStorage3D: proc "c" (target: u32, levels: i32, internalformat: u32, width: i32, height: i32, depth: i32)
  1175. impl_DrawTransformFeedbackInstanced: proc "c" (mode: u32, id: u32, instancecount: i32)
  1176. impl_DrawTransformFeedbackStreamInstanced: proc "c" (mode: u32, id: u32, stream: u32, instancecount: i32)
  1177. load_4_2 :: proc(set_proc_address: Set_Proc_Address_Type) {
  1178. set_proc_address(&impl_DrawArraysInstancedBaseInstance, "glDrawArraysInstancedBaseInstance")
  1179. set_proc_address(&impl_DrawElementsInstancedBaseInstance, "glDrawElementsInstancedBaseInstance")
  1180. set_proc_address(&impl_DrawElementsInstancedBaseVertexBaseInstance, "glDrawElementsInstancedBaseVertexBaseInstance")
  1181. set_proc_address(&impl_GetInternalformativ, "glGetInternalformativ")
  1182. set_proc_address(&impl_GetActiveAtomicCounterBufferiv, "glGetActiveAtomicCounterBufferiv")
  1183. set_proc_address(&impl_BindImageTexture, "glBindImageTexture")
  1184. set_proc_address(&impl_MemoryBarrier, "glMemoryBarrier")
  1185. set_proc_address(&impl_TexStorage1D, "glTexStorage1D")
  1186. set_proc_address(&impl_TexStorage2D, "glTexStorage2D")
  1187. set_proc_address(&impl_TexStorage3D, "glTexStorage3D")
  1188. set_proc_address(&impl_DrawTransformFeedbackInstanced, "glDrawTransformFeedbackInstanced")
  1189. set_proc_address(&impl_DrawTransformFeedbackStreamInstanced, "glDrawTransformFeedbackStreamInstanced")
  1190. }
  1191. // VERSION_4_3
  1192. DispatchIndirectCommand :: struct {
  1193. num_groups_x: u32,
  1194. num_groups_y: u32,
  1195. num_groups_z: u32,
  1196. }
  1197. impl_ClearBufferData: proc "c" (target: u32, internalformat: u32, format: u32, type: u32, data: rawptr)
  1198. impl_ClearBufferSubData: proc "c" (target: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: rawptr)
  1199. impl_DispatchCompute: proc "c" (num_groups_x: u32, num_groups_y: u32, num_groups_z: u32)
  1200. impl_DispatchComputeIndirect: proc "c" (indirect: ^DispatchIndirectCommand)
  1201. impl_CopyImageSubData: proc "c" (srcName: u32, srcTarget: u32, srcLevel: i32, srcX: i32, srcY: i32, srcZ: i32, dstName: u32, dstTarget: u32, dstLevel: i32, dstX: i32, dstY: i32, dstZ: i32, srcWidth: i32, srcHeight: i32, srcDepth: i32)
  1202. impl_FramebufferParameteri: proc "c" (target: u32, pname: u32, param: i32)
  1203. impl_GetFramebufferParameteriv: proc "c" (target: u32, pname: u32, params: [^]i32)
  1204. impl_GetInternalformati64v: proc "c" (target: u32, internalformat: u32, pname: u32, bufSize: i32, params: [^]i64)
  1205. impl_InvalidateTexSubImage: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32)
  1206. impl_InvalidateTexImage: proc "c" (texture: u32, level: i32)
  1207. impl_InvalidateBufferSubData: proc "c" (buffer: u32, offset: int, length: int)
  1208. impl_InvalidateBufferData: proc "c" (buffer: u32)
  1209. impl_InvalidateFramebuffer: proc "c" (target: u32, numAttachments: i32, attachments: [^]u32)
  1210. impl_InvalidateSubFramebuffer: proc "c" (target: u32, numAttachments: i32, attachments: [^]u32, x: i32, y: i32, width: i32, height: i32)
  1211. impl_MultiDrawArraysIndirect: proc "c" (mode: u32, indirect: [^]DrawArraysIndirectCommand, drawcount: i32, stride: i32)
  1212. impl_MultiDrawElementsIndirect: proc "c" (mode: u32, type: u32, indirect: [^]DrawElementsIndirectCommand, drawcount: i32, stride: i32)
  1213. impl_GetProgramInterfaceiv: proc "c" (program: u32, programInterface: u32, pname: u32, params: [^]i32)
  1214. impl_GetProgramResourceIndex: proc "c" (program: u32, programInterface: u32, name: cstring) -> u32
  1215. impl_GetProgramResourceName: proc "c" (program: u32, programInterface: u32, index: u32, bufSize: i32, length: ^i32, name: [^]u8)
  1216. impl_GetProgramResourceiv: proc "c" (program: u32, programInterface: u32, index: u32, propCount: i32, props: [^]u32, bufSize: i32, length: ^i32, params: [^]i32)
  1217. impl_GetProgramResourceLocation: proc "c" (program: u32, programInterface: u32, name: cstring) -> i32
  1218. impl_GetProgramResourceLocationIndex: proc "c" (program: u32, programInterface: u32, name: cstring) -> i32
  1219. impl_ShaderStorageBlockBinding: proc "c" (program: u32, storageBlockIndex: u32, storageBlockBinding: u32)
  1220. impl_TexBufferRange: proc "c" (target: u32, internalformat: u32, buffer: u32, offset: int, size: int)
  1221. impl_TexStorage2DMultisample: proc "c" (target: u32, samples: i32, internalformat: u32, width: i32, height: i32, fixedsamplelocations: bool)
  1222. impl_TexStorage3DMultisample: proc "c" (target: u32, samples: i32, internalformat: u32, width: i32, height: i32, depth: i32, fixedsamplelocations: bool)
  1223. impl_TextureView: proc "c" (texture: u32, target: u32, origtexture: u32, internalformat: u32, minlevel: u32, numlevels: u32, minlayer: u32, numlayers: u32)
  1224. impl_BindVertexBuffer: proc "c" (bindingindex: u32, buffer: u32, offset: int, stride: i32)
  1225. impl_VertexAttribFormat: proc "c" (attribindex: u32, size: i32, type: u32, normalized: bool, relativeoffset: u32)
  1226. impl_VertexAttribIFormat: proc "c" (attribindex: u32, size: i32, type: u32, relativeoffset: u32)
  1227. impl_VertexAttribLFormat: proc "c" (attribindex: u32, size: i32, type: u32, relativeoffset: u32)
  1228. impl_VertexAttribBinding: proc "c" (attribindex: u32, bindingindex: u32)
  1229. impl_VertexBindingDivisor: proc "c" (bindingindex: u32, divisor: u32)
  1230. impl_DebugMessageControl: proc "c" (source: u32, type: u32, severity: u32, count: i32, ids: [^]u32, enabled: bool)
  1231. impl_DebugMessageInsert: proc "c" (source: u32, type: u32, id: u32, severity: u32, length: i32, message: cstring)
  1232. impl_DebugMessageCallback: proc "c" (callback: debug_proc_t, userParam: rawptr)
  1233. impl_GetDebugMessageLog: proc "c" (count: u32, bufSize: i32, sources: [^]u32, types: [^]u32, ids: [^]u32, severities: [^]u32, lengths: [^]i32, messageLog: [^]u8) -> u32
  1234. impl_PushDebugGroup: proc "c" (source: u32, id: u32, length: i32, message: cstring)
  1235. impl_PopDebugGroup: proc "c" ()
  1236. impl_ObjectLabel: proc "c" (identifier: u32, name: u32, length: i32, label: cstring)
  1237. impl_GetObjectLabel: proc "c" (identifier: u32, name: u32, bufSize: i32, length: ^i32, label: [^]u8)
  1238. impl_ObjectPtrLabel: proc "c" (ptr: rawptr, length: i32, label: cstring)
  1239. impl_GetObjectPtrLabel: proc "c" (ptr: rawptr, bufSize: i32, length: ^i32, label: [^]u8)
  1240. load_4_3 :: proc(set_proc_address: Set_Proc_Address_Type) {
  1241. set_proc_address(&impl_ClearBufferData, "glClearBufferData")
  1242. set_proc_address(&impl_ClearBufferSubData, "glClearBufferSubData")
  1243. set_proc_address(&impl_DispatchCompute, "glDispatchCompute")
  1244. set_proc_address(&impl_DispatchComputeIndirect, "glDispatchComputeIndirect")
  1245. set_proc_address(&impl_CopyImageSubData, "glCopyImageSubData")
  1246. set_proc_address(&impl_FramebufferParameteri, "glFramebufferParameteri")
  1247. set_proc_address(&impl_GetFramebufferParameteriv, "glGetFramebufferParameteriv")
  1248. set_proc_address(&impl_GetInternalformati64v, "glGetInternalformati64v")
  1249. set_proc_address(&impl_InvalidateTexSubImage, "glInvalidateTexSubImage")
  1250. set_proc_address(&impl_InvalidateTexImage, "glInvalidateTexImage")
  1251. set_proc_address(&impl_InvalidateBufferSubData, "glInvalidateBufferSubData")
  1252. set_proc_address(&impl_InvalidateBufferData, "glInvalidateBufferData")
  1253. set_proc_address(&impl_InvalidateFramebuffer, "glInvalidateFramebuffer")
  1254. set_proc_address(&impl_InvalidateSubFramebuffer, "glInvalidateSubFramebuffer")
  1255. set_proc_address(&impl_MultiDrawArraysIndirect, "glMultiDrawArraysIndirect")
  1256. set_proc_address(&impl_MultiDrawElementsIndirect, "glMultiDrawElementsIndirect")
  1257. set_proc_address(&impl_GetProgramInterfaceiv, "glGetProgramInterfaceiv")
  1258. set_proc_address(&impl_GetProgramResourceIndex, "glGetProgramResourceIndex")
  1259. set_proc_address(&impl_GetProgramResourceName, "glGetProgramResourceName")
  1260. set_proc_address(&impl_GetProgramResourceiv, "glGetProgramResourceiv")
  1261. set_proc_address(&impl_GetProgramResourceLocation, "glGetProgramResourceLocation")
  1262. set_proc_address(&impl_GetProgramResourceLocationIndex, "glGetProgramResourceLocationIndex")
  1263. set_proc_address(&impl_ShaderStorageBlockBinding, "glShaderStorageBlockBinding")
  1264. set_proc_address(&impl_TexBufferRange, "glTexBufferRange")
  1265. set_proc_address(&impl_TexStorage2DMultisample, "glTexStorage2DMultisample")
  1266. set_proc_address(&impl_TexStorage3DMultisample, "glTexStorage3DMultisample")
  1267. set_proc_address(&impl_TextureView, "glTextureView")
  1268. set_proc_address(&impl_BindVertexBuffer, "glBindVertexBuffer")
  1269. set_proc_address(&impl_VertexAttribFormat, "glVertexAttribFormat")
  1270. set_proc_address(&impl_VertexAttribIFormat, "glVertexAttribIFormat")
  1271. set_proc_address(&impl_VertexAttribLFormat, "glVertexAttribLFormat")
  1272. set_proc_address(&impl_VertexAttribBinding, "glVertexAttribBinding")
  1273. set_proc_address(&impl_VertexBindingDivisor, "glVertexBindingDivisor")
  1274. set_proc_address(&impl_DebugMessageControl, "glDebugMessageControl")
  1275. set_proc_address(&impl_DebugMessageInsert, "glDebugMessageInsert")
  1276. set_proc_address(&impl_DebugMessageCallback, "glDebugMessageCallback")
  1277. set_proc_address(&impl_GetDebugMessageLog, "glGetDebugMessageLog")
  1278. set_proc_address(&impl_PushDebugGroup, "glPushDebugGroup")
  1279. set_proc_address(&impl_PopDebugGroup, "glPopDebugGroup")
  1280. set_proc_address(&impl_ObjectLabel, "glObjectLabel")
  1281. set_proc_address(&impl_GetObjectLabel, "glGetObjectLabel")
  1282. set_proc_address(&impl_ObjectPtrLabel, "glObjectPtrLabel")
  1283. set_proc_address(&impl_GetObjectPtrLabel, "glGetObjectPtrLabel")
  1284. }
  1285. // VERSION_4_4
  1286. impl_BufferStorage: proc "c" (target: u32, size: int, data: rawptr, flags: u32)
  1287. impl_ClearTexImage: proc "c" (texture: u32, level: i32, format: u32, type: u32, data: rawptr)
  1288. impl_ClearTexSubImage: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, data: rawptr)
  1289. impl_BindBuffersBase: proc "c" (target: u32, first: u32, count: i32, buffers: [^]u32)
  1290. impl_BindBuffersRange: proc "c" (target: u32, first: u32, count: i32, buffers: [^]u32, offsets: [^]uintptr, sizes: [^]int)
  1291. impl_BindTextures: proc "c" (first: u32, count: i32, textures: [^]u32)
  1292. impl_BindSamplers: proc "c" (first: u32, count: i32, samplers: [^]u32)
  1293. impl_BindImageTextures: proc "c" (first: u32, count: i32, textures: [^]u32)
  1294. impl_BindVertexBuffers: proc "c" (first: u32, count: i32, buffers: [^]u32, offsets: [^]uintptr, strides: [^]i32)
  1295. load_4_4 :: proc(set_proc_address: Set_Proc_Address_Type) {
  1296. set_proc_address(&impl_BufferStorage, "glBufferStorage")
  1297. set_proc_address(&impl_ClearTexImage, "glClearTexImage")
  1298. set_proc_address(&impl_ClearTexSubImage, "glClearTexSubImage")
  1299. set_proc_address(&impl_BindBuffersBase, "glBindBuffersBase")
  1300. set_proc_address(&impl_BindBuffersRange, "glBindBuffersRange")
  1301. set_proc_address(&impl_BindTextures, "glBindTextures")
  1302. set_proc_address(&impl_BindSamplers, "glBindSamplers")
  1303. set_proc_address(&impl_BindImageTextures, "glBindImageTextures")
  1304. set_proc_address(&impl_BindVertexBuffers, "glBindVertexBuffers")
  1305. }
  1306. // VERSION_4_5
  1307. impl_ClipControl: proc "c" (origin: u32, depth: u32)
  1308. impl_CreateTransformFeedbacks: proc "c" (n: i32, ids: [^]u32)
  1309. impl_TransformFeedbackBufferBase: proc "c" (xfb: u32, index: u32, buffer: u32)
  1310. impl_TransformFeedbackBufferRange: proc "c" (xfb: u32, index: u32, buffer: u32, offset: int, size: int)
  1311. impl_GetTransformFeedbackiv: proc "c" (xfb: u32, pname: u32, param: ^i32)
  1312. impl_GetTransformFeedbacki_v: proc "c" (xfb: u32, pname: u32, index: u32, param: ^i32)
  1313. impl_GetTransformFeedbacki64_v: proc "c" (xfb: u32, pname: u32, index: u32, param: ^i64)
  1314. impl_CreateBuffers: proc "c" (n: i32, buffers: [^]u32)
  1315. impl_NamedBufferStorage: proc "c" (buffer: u32, size: int, data: rawptr, flags: u32)
  1316. impl_NamedBufferData: proc "c" (buffer: u32, size: int, data: rawptr, usage: u32)
  1317. impl_NamedBufferSubData: proc "c" (buffer: u32, offset: int, size: int, data: rawptr)
  1318. impl_CopyNamedBufferSubData: proc "c" (readBuffer: u32, writeBuffer: u32, readOffset: int, writeOffset: int, size: int)
  1319. impl_ClearNamedBufferData: proc "c" (buffer: u32, internalformat: u32, format: u32, type: u32, data: rawptr)
  1320. impl_ClearNamedBufferSubData: proc "c" (buffer: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: rawptr)
  1321. impl_MapNamedBuffer: proc "c" (buffer: u32, access: u32) -> rawptr
  1322. impl_MapNamedBufferRange: proc "c" (buffer: u32, offset: int, length: int, access: u32) -> rawptr
  1323. impl_UnmapNamedBuffer: proc "c" (buffer: u32) -> bool
  1324. impl_FlushMappedNamedBufferRange: proc "c" (buffer: u32, offset: int, length: int)
  1325. impl_GetNamedBufferParameteriv: proc "c" (buffer: u32, pname: u32, params: [^]i32)
  1326. impl_GetNamedBufferParameteri64v: proc "c" (buffer: u32, pname: u32, params: [^]i64)
  1327. impl_GetNamedBufferPointerv: proc "c" (buffer: u32, pname: u32, params: [^]rawptr)
  1328. impl_GetNamedBufferSubData: proc "c" (buffer: u32, offset: int, size: int, data: rawptr)
  1329. impl_CreateFramebuffers: proc "c" (n: i32, framebuffers: [^]u32)
  1330. impl_NamedFramebufferRenderbuffer: proc "c" (framebuffer: u32, attachment: u32, renderbuffertarget: u32, renderbuffer: u32)
  1331. impl_NamedFramebufferParameteri: proc "c" (framebuffer: u32, pname: u32, param: i32)
  1332. impl_NamedFramebufferTexture: proc "c" (framebuffer: u32, attachment: u32, texture: u32, level: i32)
  1333. impl_NamedFramebufferTextureLayer: proc "c" (framebuffer: u32, attachment: u32, texture: u32, level: i32, layer: i32)
  1334. impl_NamedFramebufferDrawBuffer: proc "c" (framebuffer: u32, buf: u32)
  1335. impl_NamedFramebufferDrawBuffers: proc "c" (framebuffer: u32, n: i32, bufs: [^]u32)
  1336. impl_NamedFramebufferReadBuffer: proc "c" (framebuffer: u32, src: u32)
  1337. impl_InvalidateNamedFramebufferData: proc "c" (framebuffer: u32, numAttachments: i32, attachments: [^]u32)
  1338. impl_InvalidateNamedFramebufferSubData: proc "c" (framebuffer: u32, numAttachments: i32, attachments: [^]u32, x: i32, y: i32, width: i32, height: i32)
  1339. impl_ClearNamedFramebufferiv: proc "c" (framebuffer: u32, buffer: u32, drawbuffer: i32, value: ^i32)
  1340. impl_ClearNamedFramebufferuiv: proc "c" (framebuffer: u32, buffer: u32, drawbuffer: i32, value: ^u32)
  1341. impl_ClearNamedFramebufferfv: proc "c" (framebuffer: u32, buffer: u32, drawbuffer: i32, value: ^f32)
  1342. impl_ClearNamedFramebufferfi: proc "c" (framebuffer: u32, buffer: u32, drawbuffer: i32, depth: f32, stencil: i32)
  1343. impl_BlitNamedFramebuffer: proc "c" (readFramebuffer: u32, drawFramebuffer: u32, srcX0: i32, srcY0: i32, srcX1: i32, srcY1: i32, dstX0: i32, dstY0: i32, dstX1: i32, dstY1: i32, mask: u32, filter: u32)
  1344. impl_CheckNamedFramebufferStatus: proc "c" (framebuffer: u32, target: u32) -> u32
  1345. impl_GetNamedFramebufferParameteriv: proc "c" (framebuffer: u32, pname: u32, param: ^i32)
  1346. impl_GetNamedFramebufferAttachmentParameteriv: proc "c" (framebuffer: u32, attachment: u32, pname: u32, params: [^]i32)
  1347. impl_CreateRenderbuffers: proc "c" (n: i32, renderbuffers: [^]u32)
  1348. impl_NamedRenderbufferStorage: proc "c" (renderbuffer: u32, internalformat: u32, width: i32, height: i32)
  1349. impl_NamedRenderbufferStorageMultisample: proc "c" (renderbuffer: u32, samples: i32, internalformat: u32, width: i32, height: i32)
  1350. impl_GetNamedRenderbufferParameteriv: proc "c" (renderbuffer: u32, pname: u32, params: [^]i32)
  1351. impl_CreateTextures: proc "c" (target: u32, n: i32, textures: [^]u32)
  1352. impl_TextureBuffer: proc "c" (texture: u32, internalformat: u32, buffer: u32)
  1353. impl_TextureBufferRange: proc "c" (texture: u32, internalformat: u32, buffer: u32, offset: int, size: int)
  1354. impl_TextureStorage1D: proc "c" (texture: u32, levels: i32, internalformat: u32, width: i32)
  1355. impl_TextureStorage2D: proc "c" (texture: u32, levels: i32, internalformat: u32, width: i32, height: i32)
  1356. impl_TextureStorage3D: proc "c" (texture: u32, levels: i32, internalformat: u32, width: i32, height: i32, depth: i32)
  1357. impl_TextureStorage2DMultisample: proc "c" (texture: u32, samples: i32, internalformat: u32, width: i32, height: i32, fixedsamplelocations: bool)
  1358. impl_TextureStorage3DMultisample: proc "c" (texture: u32, samples: i32, internalformat: u32, width: i32, height: i32, depth: i32, fixedsamplelocations: bool)
  1359. impl_TextureSubImage1D: proc "c" (texture: u32, level: i32, xoffset: i32, width: i32, format: u32, type: u32, pixels: rawptr)
  1360. impl_TextureSubImage2D: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, type: u32, pixels: rawptr)
  1361. impl_TextureSubImage3D: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, pixels: rawptr)
  1362. impl_CompressedTextureSubImage1D: proc "c" (texture: u32, level: i32, xoffset: i32, width: i32, format: u32, imageSize: i32, data: rawptr)
  1363. impl_CompressedTextureSubImage2D: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, imageSize: i32, data: rawptr)
  1364. impl_CompressedTextureSubImage3D: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, imageSize: i32, data: rawptr)
  1365. impl_CopyTextureSubImage1D: proc "c" (texture: u32, level: i32, xoffset: i32, x: i32, y: i32, width: i32)
  1366. impl_CopyTextureSubImage2D: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, x: i32, y: i32, width: i32, height: i32)
  1367. impl_CopyTextureSubImage3D: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, x: i32, y: i32, width: i32, height: i32)
  1368. impl_TextureParameterf: proc "c" (texture: u32, pname: u32, param: f32)
  1369. impl_TextureParameterfv: proc "c" (texture: u32, pname: u32, param: ^f32)
  1370. impl_TextureParameteri: proc "c" (texture: u32, pname: u32, param: i32)
  1371. impl_TextureParameterIiv: proc "c" (texture: u32, pname: u32, params: [^]i32)
  1372. impl_TextureParameterIuiv: proc "c" (texture: u32, pname: u32, params: [^]u32)
  1373. impl_TextureParameteriv: proc "c" (texture: u32, pname: u32, param: ^i32)
  1374. impl_GenerateTextureMipmap: proc "c" (texture: u32)
  1375. impl_BindTextureUnit: proc "c" (unit: u32, texture: u32)
  1376. impl_GetTextureImage: proc "c" (texture: u32, level: i32, format: u32, type: u32, bufSize: i32, pixels: rawptr)
  1377. impl_GetCompressedTextureImage: proc "c" (texture: u32, level: i32, bufSize: i32, pixels: rawptr)
  1378. impl_GetTextureLevelParameterfv: proc "c" (texture: u32, level: i32, pname: u32, params: [^]f32)
  1379. impl_GetTextureLevelParameteriv: proc "c" (texture: u32, level: i32, pname: u32, params: [^]i32)
  1380. impl_GetTextureParameterfv: proc "c" (texture: u32, pname: u32, params: [^]f32)
  1381. impl_GetTextureParameterIiv: proc "c" (texture: u32, pname: u32, params: [^]i32)
  1382. impl_GetTextureParameterIuiv: proc "c" (texture: u32, pname: u32, params: [^]u32)
  1383. impl_GetTextureParameteriv: proc "c" (texture: u32, pname: u32, params: [^]i32)
  1384. impl_CreateVertexArrays: proc "c" (n: i32, arrays: [^]u32)
  1385. impl_DisableVertexArrayAttrib: proc "c" (vaobj: u32, index: u32)
  1386. impl_EnableVertexArrayAttrib: proc "c" (vaobj: u32, index: u32)
  1387. impl_VertexArrayElementBuffer: proc "c" (vaobj: u32, buffer: u32)
  1388. impl_VertexArrayVertexBuffer: proc "c" (vaobj: u32, bindingindex: u32, buffer: u32, offset: int, stride: i32)
  1389. impl_VertexArrayVertexBuffers: proc "c" (vaobj: u32, first: u32, count: i32, buffers: [^]u32, offsets: [^]uintptr, strides: [^]i32)
  1390. impl_VertexArrayAttribBinding: proc "c" (vaobj: u32, attribindex: u32, bindingindex: u32)
  1391. impl_VertexArrayAttribFormat: proc "c" (vaobj: u32, attribindex: u32, size: i32, type: u32, normalized: bool, relativeoffset: u32)
  1392. impl_VertexArrayAttribIFormat: proc "c" (vaobj: u32, attribindex: u32, size: i32, type: u32, relativeoffset: u32)
  1393. impl_VertexArrayAttribLFormat: proc "c" (vaobj: u32, attribindex: u32, size: i32, type: u32, relativeoffset: u32)
  1394. impl_VertexArrayBindingDivisor: proc "c" (vaobj: u32, bindingindex: u32, divisor: u32)
  1395. impl_GetVertexArrayiv: proc "c" (vaobj: u32, pname: u32, param: ^i32)
  1396. impl_GetVertexArrayIndexediv: proc "c" (vaobj: u32, index: u32, pname: u32, param: ^i32)
  1397. impl_GetVertexArrayIndexed64iv: proc "c" (vaobj: u32, index: u32, pname: u32, param: ^i64)
  1398. impl_CreateSamplers: proc "c" (n: i32, samplers: [^]u32)
  1399. impl_CreateProgramPipelines: proc "c" (n: i32, pipelines: [^]u32)
  1400. impl_CreateQueries: proc "c" (target: u32, n: i32, ids: [^]u32)
  1401. impl_GetQueryBufferObjecti64v: proc "c" (id: u32, buffer: u32, pname: u32, offset: int)
  1402. impl_GetQueryBufferObjectiv: proc "c" (id: u32, buffer: u32, pname: u32, offset: int)
  1403. impl_GetQueryBufferObjectui64v: proc "c" (id: u32, buffer: u32, pname: u32, offset: int)
  1404. impl_GetQueryBufferObjectuiv: proc "c" (id: u32, buffer: u32, pname: u32, offset: int)
  1405. impl_MemoryBarrierByRegion: proc "c" (barriers: u32)
  1406. impl_GetTextureSubImage: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, bufSize: i32, pixels: rawptr)
  1407. impl_GetCompressedTextureSubImage: proc "c" (texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, bufSize: i32, pixels: rawptr)
  1408. impl_GetGraphicsResetStatus: proc "c" () -> u32
  1409. impl_GetnCompressedTexImage: proc "c" (target: u32, lod: i32, bufSize: i32, pixels: rawptr)
  1410. impl_GetnTexImage: proc "c" (target: u32, level: i32, format: u32, type: u32, bufSize: i32, pixels: rawptr)
  1411. impl_GetnUniformdv: proc "c" (program: u32, location: i32, bufSize: i32, params: [^]f64)
  1412. impl_GetnUniformfv: proc "c" (program: u32, location: i32, bufSize: i32, params: [^]f32)
  1413. impl_GetnUniformiv: proc "c" (program: u32, location: i32, bufSize: i32, params: [^]i32)
  1414. impl_GetnUniformuiv: proc "c" (program: u32, location: i32, bufSize: i32, params: [^]u32)
  1415. impl_ReadnPixels: proc "c" (x: i32, y: i32, width: i32, height: i32, format: u32, type: u32, bufSize: i32, data: rawptr)
  1416. impl_GetnMapdv: proc "c" (target: u32, query: u32, bufSize: i32, v: [^]f64)
  1417. impl_GetnMapfv: proc "c" (target: u32, query: u32, bufSize: i32, v: [^]f32)
  1418. impl_GetnMapiv: proc "c" (target: u32, query: u32, bufSize: i32, v: [^]i32)
  1419. impl_GetnPixelMapusv: proc "c" (map_: u32, bufSize: i32, values: [^]u16)
  1420. impl_GetnPixelMapfv: proc "c" (map_: u32, bufSize: i32, values: [^]f32)
  1421. impl_GetnPixelMapuiv: proc "c" (map_: u32, bufSize: i32, values: [^]u32)
  1422. impl_GetnPolygonStipple: proc "c" (bufSize: i32, pattern: [^]u8)
  1423. impl_GetnColorTable: proc "c" (target: u32, format: u32, type: u32, bufSize: i32, table: rawptr)
  1424. impl_GetnConvolutionFilter: proc "c" (target: u32, format: u32, type: u32, bufSize: i32, image: rawptr)
  1425. impl_GetnSeparableFilter: proc "c" (target: u32, format: u32, type: u32, rowBufSize: i32, row: rawptr, columnBufSize: i32, column: rawptr, span: rawptr)
  1426. impl_GetnHistogram: proc "c" (target: u32, reset: bool, format: u32, type: u32, bufSize: i32, values: rawptr)
  1427. impl_GetnMinmax: proc "c" (target: u32, reset: bool, format: u32, type: u32, bufSize: i32, values: rawptr)
  1428. impl_TextureBarrier: proc "c" ()
  1429. impl_GetUnsignedBytevEXT: proc "c" (pname: u32, data: ^byte)
  1430. impl_TexPageCommitmentARB: proc "c" (target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, commit: bool)
  1431. load_4_5 :: proc(set_proc_address: Set_Proc_Address_Type) {
  1432. set_proc_address(&impl_ClipControl, "glClipControl")
  1433. set_proc_address(&impl_CreateTransformFeedbacks, "glCreateTransformFeedbacks")
  1434. set_proc_address(&impl_TransformFeedbackBufferBase, "glTransformFeedbackBufferBase")
  1435. set_proc_address(&impl_TransformFeedbackBufferRange, "glTransformFeedbackBufferRange")
  1436. set_proc_address(&impl_GetTransformFeedbackiv, "glGetTransformFeedbackiv")
  1437. set_proc_address(&impl_GetTransformFeedbacki_v, "glGetTransformFeedbacki_v")
  1438. set_proc_address(&impl_GetTransformFeedbacki64_v, "glGetTransformFeedbacki64_v")
  1439. set_proc_address(&impl_CreateBuffers, "glCreateBuffers")
  1440. set_proc_address(&impl_NamedBufferStorage, "glNamedBufferStorage")
  1441. set_proc_address(&impl_NamedBufferData, "glNamedBufferData")
  1442. set_proc_address(&impl_NamedBufferSubData, "glNamedBufferSubData")
  1443. set_proc_address(&impl_CopyNamedBufferSubData, "glCopyNamedBufferSubData")
  1444. set_proc_address(&impl_ClearNamedBufferData, "glClearNamedBufferData")
  1445. set_proc_address(&impl_ClearNamedBufferSubData, "glClearNamedBufferSubData")
  1446. set_proc_address(&impl_MapNamedBuffer, "glMapNamedBuffer")
  1447. set_proc_address(&impl_MapNamedBufferRange, "glMapNamedBufferRange")
  1448. set_proc_address(&impl_UnmapNamedBuffer, "glUnmapNamedBuffer")
  1449. set_proc_address(&impl_FlushMappedNamedBufferRange, "glFlushMappedNamedBufferRange")
  1450. set_proc_address(&impl_GetNamedBufferParameteriv, "glGetNamedBufferParameteriv")
  1451. set_proc_address(&impl_GetNamedBufferParameteri64v, "glGetNamedBufferParameteri64v")
  1452. set_proc_address(&impl_GetNamedBufferPointerv, "glGetNamedBufferPointerv")
  1453. set_proc_address(&impl_GetNamedBufferSubData, "glGetNamedBufferSubData")
  1454. set_proc_address(&impl_CreateFramebuffers, "glCreateFramebuffers")
  1455. set_proc_address(&impl_NamedFramebufferRenderbuffer, "glNamedFramebufferRenderbuffer")
  1456. set_proc_address(&impl_NamedFramebufferParameteri, "glNamedFramebufferParameteri")
  1457. set_proc_address(&impl_NamedFramebufferTexture, "glNamedFramebufferTexture")
  1458. set_proc_address(&impl_NamedFramebufferTextureLayer, "glNamedFramebufferTextureLayer")
  1459. set_proc_address(&impl_NamedFramebufferDrawBuffer, "glNamedFramebufferDrawBuffer")
  1460. set_proc_address(&impl_NamedFramebufferDrawBuffers, "glNamedFramebufferDrawBuffers")
  1461. set_proc_address(&impl_NamedFramebufferReadBuffer, "glNamedFramebufferReadBuffer")
  1462. set_proc_address(&impl_InvalidateNamedFramebufferData, "glInvalidateNamedFramebufferData")
  1463. set_proc_address(&impl_InvalidateNamedFramebufferSubData, "glInvalidateNamedFramebufferSubData")
  1464. set_proc_address(&impl_ClearNamedFramebufferiv, "glClearNamedFramebufferiv")
  1465. set_proc_address(&impl_ClearNamedFramebufferuiv, "glClearNamedFramebufferuiv")
  1466. set_proc_address(&impl_ClearNamedFramebufferfv, "glClearNamedFramebufferfv")
  1467. set_proc_address(&impl_ClearNamedFramebufferfi, "glClearNamedFramebufferfi")
  1468. set_proc_address(&impl_BlitNamedFramebuffer, "glBlitNamedFramebuffer")
  1469. set_proc_address(&impl_CheckNamedFramebufferStatus, "glCheckNamedFramebufferStatus")
  1470. set_proc_address(&impl_GetNamedFramebufferParameteriv, "glGetNamedFramebufferParameteriv")
  1471. set_proc_address(&impl_GetNamedFramebufferAttachmentParameteriv, "glGetNamedFramebufferAttachmentParameteriv")
  1472. set_proc_address(&impl_CreateRenderbuffers, "glCreateRenderbuffers")
  1473. set_proc_address(&impl_NamedRenderbufferStorage, "glNamedRenderbufferStorage")
  1474. set_proc_address(&impl_NamedRenderbufferStorageMultisample, "glNamedRenderbufferStorageMultisample")
  1475. set_proc_address(&impl_GetNamedRenderbufferParameteriv, "glGetNamedRenderbufferParameteriv")
  1476. set_proc_address(&impl_CreateTextures, "glCreateTextures")
  1477. set_proc_address(&impl_TextureBuffer, "glTextureBuffer")
  1478. set_proc_address(&impl_TextureBufferRange, "glTextureBufferRange")
  1479. set_proc_address(&impl_TextureStorage1D, "glTextureStorage1D")
  1480. set_proc_address(&impl_TextureStorage2D, "glTextureStorage2D")
  1481. set_proc_address(&impl_TextureStorage3D, "glTextureStorage3D")
  1482. set_proc_address(&impl_TextureStorage2DMultisample, "glTextureStorage2DMultisample")
  1483. set_proc_address(&impl_TextureStorage3DMultisample, "glTextureStorage3DMultisample")
  1484. set_proc_address(&impl_TextureSubImage1D, "glTextureSubImage1D")
  1485. set_proc_address(&impl_TextureSubImage2D, "glTextureSubImage2D")
  1486. set_proc_address(&impl_TextureSubImage3D, "glTextureSubImage3D")
  1487. set_proc_address(&impl_CompressedTextureSubImage1D, "glCompressedTextureSubImage1D")
  1488. set_proc_address(&impl_CompressedTextureSubImage2D, "glCompressedTextureSubImage2D")
  1489. set_proc_address(&impl_CompressedTextureSubImage3D, "glCompressedTextureSubImage3D")
  1490. set_proc_address(&impl_CopyTextureSubImage1D, "glCopyTextureSubImage1D")
  1491. set_proc_address(&impl_CopyTextureSubImage2D, "glCopyTextureSubImage2D")
  1492. set_proc_address(&impl_CopyTextureSubImage3D, "glCopyTextureSubImage3D")
  1493. set_proc_address(&impl_TextureParameterf, "glTextureParameterf")
  1494. set_proc_address(&impl_TextureParameterfv, "glTextureParameterfv")
  1495. set_proc_address(&impl_TextureParameteri, "glTextureParameteri")
  1496. set_proc_address(&impl_TextureParameterIiv, "glTextureParameterIiv")
  1497. set_proc_address(&impl_TextureParameterIuiv, "glTextureParameterIuiv")
  1498. set_proc_address(&impl_TextureParameteriv, "glTextureParameteriv")
  1499. set_proc_address(&impl_GenerateTextureMipmap, "glGenerateTextureMipmap")
  1500. set_proc_address(&impl_BindTextureUnit, "glBindTextureUnit")
  1501. set_proc_address(&impl_GetTextureImage, "glGetTextureImage")
  1502. set_proc_address(&impl_GetCompressedTextureImage, "glGetCompressedTextureImage")
  1503. set_proc_address(&impl_GetTextureLevelParameterfv, "glGetTextureLevelParameterfv")
  1504. set_proc_address(&impl_GetTextureLevelParameteriv, "glGetTextureLevelParameteriv")
  1505. set_proc_address(&impl_GetTextureParameterfv, "glGetTextureParameterfv")
  1506. set_proc_address(&impl_GetTextureParameterIiv, "glGetTextureParameterIiv")
  1507. set_proc_address(&impl_GetTextureParameterIuiv, "glGetTextureParameterIuiv")
  1508. set_proc_address(&impl_GetTextureParameteriv, "glGetTextureParameteriv")
  1509. set_proc_address(&impl_CreateVertexArrays, "glCreateVertexArrays")
  1510. set_proc_address(&impl_DisableVertexArrayAttrib, "glDisableVertexArrayAttrib")
  1511. set_proc_address(&impl_EnableVertexArrayAttrib, "glEnableVertexArrayAttrib")
  1512. set_proc_address(&impl_VertexArrayElementBuffer, "glVertexArrayElementBuffer")
  1513. set_proc_address(&impl_VertexArrayVertexBuffer, "glVertexArrayVertexBuffer")
  1514. set_proc_address(&impl_VertexArrayVertexBuffers, "glVertexArrayVertexBuffers")
  1515. set_proc_address(&impl_VertexArrayAttribBinding, "glVertexArrayAttribBinding")
  1516. set_proc_address(&impl_VertexArrayAttribFormat, "glVertexArrayAttribFormat")
  1517. set_proc_address(&impl_VertexArrayAttribIFormat, "glVertexArrayAttribIFormat")
  1518. set_proc_address(&impl_VertexArrayAttribLFormat, "glVertexArrayAttribLFormat")
  1519. set_proc_address(&impl_VertexArrayBindingDivisor, "glVertexArrayBindingDivisor")
  1520. set_proc_address(&impl_GetVertexArrayiv, "glGetVertexArrayiv")
  1521. set_proc_address(&impl_GetVertexArrayIndexediv, "glGetVertexArrayIndexediv")
  1522. set_proc_address(&impl_GetVertexArrayIndexed64iv, "glGetVertexArrayIndexed64iv")
  1523. set_proc_address(&impl_CreateSamplers, "glCreateSamplers")
  1524. set_proc_address(&impl_CreateProgramPipelines, "glCreateProgramPipelines")
  1525. set_proc_address(&impl_CreateQueries, "glCreateQueries")
  1526. set_proc_address(&impl_GetQueryBufferObjecti64v, "glGetQueryBufferObjecti64v")
  1527. set_proc_address(&impl_GetQueryBufferObjectiv, "glGetQueryBufferObjectiv")
  1528. set_proc_address(&impl_GetQueryBufferObjectui64v, "glGetQueryBufferObjectui64v")
  1529. set_proc_address(&impl_GetQueryBufferObjectuiv, "glGetQueryBufferObjectuiv")
  1530. set_proc_address(&impl_MemoryBarrierByRegion, "glMemoryBarrierByRegion")
  1531. set_proc_address(&impl_GetTextureSubImage, "glGetTextureSubImage")
  1532. set_proc_address(&impl_GetCompressedTextureSubImage, "glGetCompressedTextureSubImage")
  1533. set_proc_address(&impl_GetGraphicsResetStatus, "glGetGraphicsResetStatus")
  1534. set_proc_address(&impl_GetnCompressedTexImage, "glGetnCompressedTexImage")
  1535. set_proc_address(&impl_GetnTexImage, "glGetnTexImage")
  1536. set_proc_address(&impl_GetnUniformdv, "glGetnUniformdv")
  1537. set_proc_address(&impl_GetnUniformfv, "glGetnUniformfv")
  1538. set_proc_address(&impl_GetnUniformiv, "glGetnUniformiv")
  1539. set_proc_address(&impl_GetnUniformuiv, "glGetnUniformuiv")
  1540. set_proc_address(&impl_ReadnPixels, "glReadnPixels")
  1541. set_proc_address(&impl_GetnMapdv, "glGetnMapdv")
  1542. set_proc_address(&impl_GetnMapfv, "glGetnMapfv")
  1543. set_proc_address(&impl_GetnMapiv, "glGetnMapiv")
  1544. set_proc_address(&impl_GetnPixelMapfv, "glGetnPixelMapfv")
  1545. set_proc_address(&impl_GetnPixelMapuiv, "glGetnPixelMapuiv")
  1546. set_proc_address(&impl_GetnPixelMapusv, "glGetnPixelMapusv")
  1547. set_proc_address(&impl_GetnPolygonStipple, "glGetnPolygonStipple")
  1548. set_proc_address(&impl_GetnColorTable, "glGetnColorTable")
  1549. set_proc_address(&impl_GetnConvolutionFilter, "glGetnConvolutionFilter")
  1550. set_proc_address(&impl_GetnSeparableFilter, "glGetnSeparableFilter")
  1551. set_proc_address(&impl_GetnHistogram, "glGetnHistogram")
  1552. set_proc_address(&impl_GetnMinmax, "glGetnMinmax")
  1553. set_proc_address(&impl_TextureBarrier, "glTextureBarrier")
  1554. set_proc_address(&impl_GetUnsignedBytevEXT, "glGetUnsignedBytevEXT")
  1555. set_proc_address(&impl_TexPageCommitmentARB, "glTexPageCommitmentARB")
  1556. }
  1557. // VERSION_4_6
  1558. impl_SpecializeShader: proc "c" (shader: u32, pEntryPoint: cstring, numSpecializationConstants: u32, pConstantIndex: ^u32, pConstantValue: ^u32)
  1559. impl_MultiDrawArraysIndirectCount: proc "c" (mode: i32, indirect: [^]DrawArraysIndirectCommand, drawcount: i32, maxdrawcount, stride: i32)
  1560. impl_MultiDrawElementsIndirectCount: proc "c" (mode: i32, type: i32, indirect: [^]DrawElementsIndirectCommand, drawcount: i32, maxdrawcount, stride: i32)
  1561. impl_PolygonOffsetClamp: proc "c" (factor, units, clamp: f32)
  1562. load_4_6 :: proc(set_proc_address: Set_Proc_Address_Type) {
  1563. set_proc_address(&impl_SpecializeShader, "glSpecializeShader")
  1564. set_proc_address(&impl_MultiDrawArraysIndirectCount, "glMultiDrawArraysIndirectCount")
  1565. set_proc_address(&impl_MultiDrawElementsIndirectCount, "glMultiDrawElementsIndirectCount")
  1566. set_proc_address(&impl_PolygonOffsetClamp, "glPolygonOffsetClamp")
  1567. }