Advertisement
sufokmpc

glbase.pb

Dec 24th, 2011
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; *---------------------------------*
  2. ; *   OpenGL Base                   *
  3. ; *   xorc1zt                       *
  4. ; *   2011                          *
  5. ; *---------------------------------*
  6.  
  7. EnableExplicit
  8. ; Debug trace
  9. #TRACEFUNCTION = #True
  10.  
  11. Macro traceFunction(string)
  12.   CompilerIf #TRACEFUNCTION
  13.     Debug "[ TRACE ]: "+string
  14.   CompilerEndIf
  15. EndMacro
  16.  
  17. IncludeFile "glconst.pb"
  18. IncludeFile "matrix.pb"
  19.  
  20. ; Use these for enable/disable loading of extensions
  21. #ENABLEGL1_0 = #True
  22. #ENABLEGL1_1 = #True
  23. #ENABLEGL1_2 = #True
  24. #ENABLEGL1_3 = #True
  25. #ENABLEGL1_4 = #True
  26. #ENABLEGL1_5 = #True
  27. #ENABLEGL2_0 = #True
  28. #ENABLEGL2_1 = #True
  29. #ENABLEGL3_0 = #True
  30. #ENABLEGL3_1 = #True
  31. #ENABLEGL3_2 = #True
  32. #ENABLEGL3_3 = #True
  33. #ENABLEGLMISC = #True
  34.  
  35. ;- OpenGL 1.0
  36. CompilerIf #ENABLEGL1_0
  37. Prototype PFNGLCULLFACEPROC ( mode.l )
  38. Prototype PFNGLFRONTFACEPROC ( mode.l )
  39. Prototype PFNGLHINTPROC ( target.l, mode.l )
  40. Prototype PFNGLLINEWIDTHPROC ( width.f )
  41. Prototype PFNGLPOINTSIZEPROC ( size.f )
  42. Prototype PFNGLPOLYGONMODEPROC ( face.l, mode.l )
  43. Prototype PFNGLSCISSORPROC ( x.i, y.i, width.i, height.i )
  44. Prototype PFNGLTEXPARAMETERFPROC ( target.l, pname.l, param.f )
  45. Prototype PFNGLTEXPARAMETERFVPROC ( target.l, pname.l, *params.f )
  46. Prototype PFNGLTEXPARAMETERIPROC ( target.l, pname.l, param.i )
  47. Prototype PFNGLTEXPARAMETERIVPROC ( target.l, pname.l, *params.i )
  48. Prototype PFNGLTEXIMAGE1DPROC ( target.l, level.i, internalformat.i, width.i, border.i, format.l, type.l, *pixels )
  49. Prototype PFNGLTEXIMAGE2DPROC ( target.l, level.i, internalformat.i, width.i, height.i, border.i, format.l, type.l, *pixels )
  50. Prototype PFNGLDRAWBUFFERPROC ( mode.l )
  51. Prototype PFNGLCLEARPROC ( mask.i )
  52. Prototype PFNGLCLEARCOLORPROC ( red.f, green.f, blue.f, alpha.f )
  53. Prototype PFNGLCLEARSTENCILPROC ( s.i )
  54. Prototype PFNGLCLEARDEPTHPROC ( depth.d )
  55. Prototype PFNGLSTENCILMASKPROC ( mask.i )
  56. Prototype PFNGLCOLORMASKPROC ( red.b, green.b, blue.b, alpha.b )
  57. Prototype PFNGLDEPTHMASKPROC ( flag.b )
  58. Prototype PFNGLDISABLEPROC ( cap.l )
  59. Prototype PFNGLENABLEPROC ( cap.l )
  60. Prototype PFNGLFINISHPROC (  )
  61. Prototype PFNGLFLUSHPROC (  )
  62. Prototype PFNGLBLENDFUNCPROC ( sfactor.l, dfactor.l )
  63. Prototype PFNGLLOGICOPPROC ( opcode.l )
  64. Prototype PFNGLSTENCILFUNCPROC ( func.l, ref.i, mask.i )
  65. Prototype PFNGLSTENCILOPPROC ( fail.l, zfail.l, zpass.l )
  66. Prototype PFNGLDEPTHFUNCPROC ( func.l )
  67. Prototype PFNGLPIXELSTOREFPROC ( pname.l, param.f )
  68. Prototype PFNGLPIXELSTOREIPROC ( pname.l, param.i )
  69. Prototype PFNGLREADBUFFERPROC ( mode.l )
  70. Prototype PFNGLREADPIXELSPROC ( x.i, y.i, width.i, height.i, format.l, type.l, *pixels )
  71. Prototype PFNGLGETBOOLEANVPROC ( pname.l, *params.b)
  72. Prototype PFNGLGETDOUBLEVPROC ( pname.l, *params.d )
  73. Prototype.l PFNGLGETERRORPROC (  )
  74. Prototype PFNGLGETFLOATVPROC ( pname.l, *params.f )
  75. Prototype PFNGLGETINTEGERVPROC ( pname.l, *params.i )
  76. Prototype PFNGLGETSTRINGPROC ( name.l )
  77. Prototype PFNGLGETTEXIMAGEPROC ( target.l, level.i, format.l, type.l, *pixels )
  78. Prototype PFNGLGETTEXPARAMETERFVPROC ( target.l, pname.l, *params.f )
  79. Prototype PFNGLGETTEXPARAMETERIVPROC ( target.l, pname.l, *params.i )
  80. Prototype PFNGLGETTEXLEVELPARAMETERFVPROC ( target.l, level.i, pname.l, *params.f )
  81. Prototype PFNGLGETTEXLEVELPARAMETERIVPROC ( target.l, level.i, pname.l, *params.i )
  82. Prototype.b PFNGLISENABLEDPROC ( cap.l )
  83. Prototype PFNGLDEPTHRANGEPROC ( near.d, far.d )
  84. Prototype PFNGLVIEWPORTPROC ( x.i, y.i, width.i, height.i )
  85.  
  86. Global glCullFace.PFNGLCULLFACEPROC
  87. Global glFrontFace.PFNGLFRONTFACEPROC
  88. Global glHint.PFNGLHINTPROC
  89. Global glLineWidth.PFNGLLINEWIDTHPROC
  90. Global glPointSize.PFNGLPOINTSIZEPROC
  91. Global glPolygonMode.PFNGLPOLYGONMODEPROC
  92. Global glScissor.PFNGLSCISSORPROC
  93. Global glTexParameterf.PFNGLTEXPARAMETERFPROC
  94. Global glTexParameterfv.PFNGLTEXPARAMETERFVPROC
  95. Global glTexParameteri.PFNGLTEXPARAMETERIPROC
  96. Global glTexParameteriv.PFNGLTEXPARAMETERIVPROC
  97. Global glTexImage1D.PFNGLTEXIMAGE1DPROC
  98. Global glTexImage2D.PFNGLTEXIMAGE2DPROC
  99. Global glDrawBuffer.PFNGLDRAWBUFFERPROC
  100. Global glClear.PFNGLCLEARPROC
  101. Global glClearColor.PFNGLCLEARCOLORPROC
  102. Global glClearStencil.PFNGLCLEARSTENCILPROC
  103. Global glClearDepth.PFNGLCLEARDEPTHPROC
  104. Global glStencilMask.PFNGLSTENCILMASKPROC
  105. Global glColorMask.PFNGLCOLORMASKPROC
  106. Global glDepthMask.PFNGLDEPTHMASKPROC
  107. Global glDisable.PFNGLDISABLEPROC
  108. Global glEnable.PFNGLENABLEPROC
  109. Global glFinish.PFNGLFINISHPROC
  110. Global glFlush.PFNGLFLUSHPROC
  111. Global glBlendFunc.PFNGLBLENDFUNCPROC
  112. Global glLogicOp.PFNGLLOGICOPPROC
  113. Global glStencilFunc.PFNGLSTENCILFUNCPROC
  114. Global glStencilOp.PFNGLSTENCILOPPROC
  115. Global glDepthFunc.PFNGLDEPTHFUNCPROC
  116. Global glPixelStoref.PFNGLPIXELSTOREFPROC
  117. Global glPixelStorei.PFNGLPIXELSTOREIPROC
  118. Global glReadBuffer.PFNGLREADBUFFERPROC
  119. Global glReadPixels.PFNGLREADPIXELSPROC
  120. Global glGetBooleanv.PFNGLGETBOOLEANVPROC
  121. Global glGetDoublev.PFNGLGETDOUBLEVPROC
  122. Global glGetError.PFNGLGETERRORPROC
  123. Global glGetFloatv.PFNGLGETFLOATVPROC
  124. Global glGetIntegerv.PFNGLGETINTEGERVPROC
  125. Global glGetString_.PFNGLGETSTRINGPROC
  126. Global glGetTexImage.PFNGLGETTEXIMAGEPROC
  127. Global glGetTexParameterfv.PFNGLGETTEXPARAMETERFVPROC
  128. Global glGetTexParameteriv.PFNGLGETTEXPARAMETERIVPROC
  129. Global glGetTexLevelParameterfv.PFNGLGETTEXLEVELPARAMETERFVPROC
  130. Global glGetTexLevelParameteriv.PFNGLGETTEXLEVELPARAMETERIVPROC
  131. Global glIsEnabled.PFNGLISENABLEDPROC
  132. Global glDepthRange.PFNGLDEPTHRANGEPROC
  133. Global glViewport.PFNGLVIEWPORTPROC
  134. CompilerEndIf
  135.  
  136. ;- OpenGL 1.1
  137. CompilerIf #ENABLEGL1_1
  138. Prototype PFNGLDRAWARRAYSPROC ( mode.l, first.i, count.i )
  139. Prototype PFNGLDRAWELEMENTSPROC ( mode.l, count.i, type.l, *indices )
  140. Prototype PFNGLGETPOINTERVPROC ( pname.l, *params )
  141. Prototype PFNGLPOLYGONOFFSETPROC ( factor.f, units.f )
  142. Prototype PFNGLCOPYTEXIMAGE1DPROC ( target.l, level.i, internalformat.l, x.i, y.i, width.i, border.i )
  143. Prototype PFNGLCOPYTEXIMAGE2DPROC ( target.l, level.i, internalformat.l, x.i, y.i, width.i, height.i, border.i )
  144. Prototype PFNGLCOPYTEXSUBIMAGE1DPROC ( target.l, level.i, xoffset.i, x.i, y.i, width.i )
  145. Prototype PFNGLCOPYTEXSUBIMAGE2DPROC ( target.l, level.i, xoffset.i, yoffset.i, x.i, y.i, width.i, height.i )
  146. Prototype PFNGLTEXSUBIMAGE1DPROC ( target.l, level.i, xoffset.i, width.i, format.l, type.l, *pixels )
  147. Prototype PFNGLTEXSUBIMAGE2DPROC ( target.l, level.i, xoffset.i, yoffset.i, width.i, height.i, format.l, type.l, *pixels )
  148. Prototype PFNGLBINDTEXTUREPROC ( target.l, texture.i )
  149. Prototype PFNGLDELETETEXTURESPROC ( n.i, *textures.i )
  150. Prototype PFNGLGENTEXTURESPROC ( n.i, *textures.i )
  151. Prototype.b PFNGLISTEXTUREPROC ( texture.i )
  152.  
  153. Global glDrawArrays.PFNGLDRAWARRAYSPROC
  154. Global glDrawElements.PFNGLDRAWELEMENTSPROC
  155. Global glGetPointerv.PFNGLGETPOINTERVPROC
  156. Global glPolygonOffset.PFNGLPOLYGONOFFSETPROC
  157. Global glCopyTexImage1D.PFNGLCOPYTEXIMAGE1DPROC
  158. Global glCopyTexImage2D.PFNGLCOPYTEXIMAGE2DPROC
  159. Global glCopyTexSubImage1D.PFNGLCOPYTEXSUBIMAGE1DPROC
  160. Global glCopyTexSubImage2D.PFNGLCOPYTEXSUBIMAGE2DPROC
  161. Global glTexSubImage1D.PFNGLTEXSUBIMAGE1DPROC
  162. Global glTexSubImage2D.PFNGLTEXSUBIMAGE2DPROC
  163. Global glBindTexture.PFNGLBINDTEXTUREPROC
  164. Global glDeleteTextures.PFNGLDELETETEXTURESPROC
  165. Global glGenTextures.PFNGLGENTEXTURESPROC
  166. Global glIsTexture.PFNGLISTEXTUREPROC
  167. CompilerEndIf
  168.  
  169. ;- OpenGL 1.2
  170. CompilerIf #ENABLEGL1_2
  171. Prototype PFNGLBLENDCOLORPROC ( red.f, green.f, blue.f, alpha.f)
  172. Prototype PFNGLBLENDEQUATIONPROC ( mode.l )
  173. Prototype PFNGLDRAWRANGEELEMENTSPROC ( mode.l, start.i, End_.i, count.i, type.l, indices.l)
  174. Prototype PFNGLTEXIMAGE3DPROC ( target.l, level.i, internalformat.i, width.i, height.i, depth.i, border.i, format.l, type.l, pixels.l)
  175. Prototype PFNGLTEXSUBIMAGE3DPROC ( target.l, level.i, xoffset.i, yoffset.i, zoffset.i, width.i, height.i, depth.i, format.l, type.l, pixels.l)
  176. Prototype PFNGLCOPYTEXSUBIMAGE3DPROC ( target.l, level.i, xoffset.i, yoffset.i, zoffset.i, x.i, y.i, width.i, height.i )
  177.  
  178. Global glBlendColor.PFNGLBLENDCOLORPROC
  179. Global glBlendEquation.PFNGLBLENDEQUATIONPROC
  180. Global glDrawRangeElements.PFNGLDRAWRANGEELEMENTSPROC
  181. Global glTexImage3D.PFNGLTEXIMAGE3DPROC
  182. Global glTexSubImage3D.PFNGLTEXSUBIMAGE3DPROC
  183. Global glCopyTexSubImage3D.PFNGLCOPYTEXSUBIMAGE3DPROC
  184. CompilerEndIf
  185.  
  186. ;- OpenGL 1.3
  187. CompilerIf #ENABLEGL1_3
  188. Prototype PFNGLACTIVETEXTUREPROC ( texture.l )
  189. Prototype PFNGLSAMPLECOVERAGEPROC ( value.f, invert.b )
  190. Prototype PFNGLCOMPRESSEDTEXIMAGE3DPROC ( target.l, level.i, internalformat.l, width.i, height.i, depth.i, border.i, imageSize.i, Data_.l )
  191. Prototype PFNGLCOMPRESSEDTEXIMAGE2DPROC ( target.l, level.i, internalformat.l, width.i, height.i, border.i, imageSize.i, Data_.l )
  192. Prototype PFNGLCOMPRESSEDTEXIMAGE1DPROC ( target.l, level.i, internalformat.l, width.i, border.i, imageSize.i, Data_.l )
  193. Prototype PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC ( target.l, level.i, xoffset.i, yoffset.i, zoffset.i, width.i, height.i, depth.i, format.l, imageSize.i, Data_.l )
  194. Prototype PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC ( target.l, level.i, xoffset.i, yoffset.i, width.i, height.i, format.l, imageSize.i, Data_.l )
  195. Prototype PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC ( target.l, level.i, xoffset.i, width.i, format.l, imageSize.i, Data_.l )
  196. Prototype PFNGLGETCOMPRESSEDTEXIMAGEPROC ( target.l, level.i, img.l)
  197.  
  198. Global glActiveTexture.PFNGLACTIVETEXTUREPROC
  199. Global glSampleCoverage.PFNGLSAMPLECOVERAGEPROC
  200. Global glCompressedTexImage3D.PFNGLCOMPRESSEDTEXIMAGE3DPROC
  201. Global glCompressedTexImage2D.PFNGLCOMPRESSEDTEXIMAGE2DPROC
  202. Global glCompressedTexImage1D.PFNGLCOMPRESSEDTEXIMAGE1DPROC
  203. Global glCompressedTexSubImage3D.PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC
  204. Global glCompressedTexSubImage2D.PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC
  205. Global glCompressedTexSubImage1D.PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC
  206. Global glGetCompressedTexImage.PFNGLGETCOMPRESSEDTEXIMAGEPROC
  207. CompilerEndIf
  208.  
  209. ;- OpenGL 1.4
  210. CompilerIf #ENABLEGL1_4
  211. Prototype PFNGLBLENDFUNCSEPARATEPROC ( sfactorRGB.l, dfactorRGB.l, sfactorAlpha.l, dfactorAlpha.l)
  212. Prototype PFNGLMULTIDRAWARRAYSPROC ( mode.l, *first.i, *count.i, primcount.i)
  213. Prototype PFNGLMULTIDRAWELEMENTSPROC ( mode.l, *count.i, type.l, *indices.l, primcount.i )
  214. Prototype PFNGLPOINTPARAMETERFPROC ( pname.l, param.f )
  215. Prototype PFNGLPOINTPARAMETERFVPROC ( pname.l, *param.f )
  216. Prototype PFNGLPOINTPARAMETERIPROC ( pname.l, param.i )
  217. Prototype PFNGLPOINTPARAMETERIVPROC ( pname.l, *param.i )
  218.  
  219. Global glBlendFuncSeparate.PFNGLBLENDFUNCSEPARATEPROC
  220. Global glMultiDrawArrays.PFNGLMULTIDRAWARRAYSPROC
  221. Global glMultiDrawElements.PFNGLMULTIDRAWELEMENTSPROC
  222. Global glPointParameterf.PFNGLPOINTPARAMETERFPROC
  223. Global glPointParameterfv.PFNGLPOINTPARAMETERFVPROC
  224. Global glPointParameteri.PFNGLPOINTPARAMETERIPROC
  225. Global glPointParameteriv.PFNGLPOINTPARAMETERIVPROC
  226. CompilerEndIf
  227.  
  228. ;- OpenGL 1.5
  229. CompilerIf #ENABLEGL1_5
  230. Prototype PFNGLGENQUERIESPROC (n.i, *ids.i)
  231. Prototype PFNGLDELETEQUERIESPROC (n.i,*ids.i)
  232. Prototype.b PFNGLISQUERYPROC (id.i)
  233. Prototype PFNGLBEGINQUERYPROC (target.l, id.i)
  234. Prototype PFNGLENDQUERYPROC (target.l)
  235. Prototype PFNGLGETQUERYIVPROC (target.l, pname.l, *params.i)
  236. Prototype PFNGLGETQUERYOBJECTIVPROC (id.i, pname.l, *params.i)
  237. Prototype PFNGLGETQUERYOBJECTUIVPROC (id.i, pname.l, *params.i)
  238. Prototype PFNGLBINDBUFFERPROC (target.l, buffer.i)
  239. Prototype PFNGLDELETEBUFFERSPROC (n.i, *buffers.i)
  240. Prototype PFNGLGENBUFFERSPROC (n.i, *buffers.i)
  241. Prototype.b PFNGLISBUFFERPROC (buffer.i)
  242. Prototype PFNGLBUFFERDATAPROC (target.l, size.i, *Data_.l, usage.l)
  243. Prototype PFNGLBUFFERSUBDATAPROC (target.l, offset.i, size.i, *Data_.l)
  244. Prototype PFNGLGETBUFFERSUBDATAPROC (target.l, offset.i, size.i, *Data_.l)
  245. Prototype PFNGLMAPBUFFERPROC (target.l, access.l)
  246. Prototype.b PFNGLUNMAPBUFFERPROC (target.l)
  247. Prototype PFNGLGETBUFFERPARAMETERIVPROC (target.l, pname.l, *params.i)
  248. Prototype PFNGLGETBUFFERPOINTERVPROC (target.l, pname.l, *params.l)
  249.  
  250. Global glGenQueries.PFNGLGENQUERIESPROC
  251. Global glDeleteQueries.PFNGLDELETEQUERIESPROC
  252. Global glIsQuery.PFNGLISQUERYPROC
  253. Global glBeginQuery.PFNGLBEGINQUERYPROC
  254. Global glEndQuery.PFNGLENDQUERYPROC
  255. Global glGetQueryiv.PFNGLGETQUERYIVPROC
  256. Global glGetQueryObjectiv.PFNGLGETQUERYOBJECTIVPROC
  257. Global glGetQueryObjectuiv.PFNGLGETQUERYOBJECTUIVPROC
  258. Global glBindBuffer.PFNGLBINDBUFFERPROC
  259. Global glDeleteBuffers.PFNGLDELETEBUFFERSPROC
  260. Global glGenBuffers.PFNGLGENBUFFERSPROC
  261. Global glIsBuffer.PFNGLISBUFFERPROC
  262. Global glBufferData.PFNGLBUFFERDATAPROC
  263. Global glBufferSubData.PFNGLBUFFERSUBDATAPROC
  264. Global glGetBufferSubData.PFNGLGETBUFFERSUBDATAPROC
  265. Global glMapBuffer.PFNGLMAPBUFFERPROC
  266. Global glUnmapBuffer.PFNGLUNMAPBUFFERPROC
  267. Global glGetBufferParameteriv.PFNGLGETBUFFERPARAMETERIVPROC
  268. Global glGetBufferPointerv.PFNGLGETBUFFERPOINTERVPROC
  269. CompilerEndIf
  270.  
  271. ;- OpenGL 2.0
  272. CompilerIf #ENABLEGL2_0
  273. Prototype PFNGLBLENDEQUATIONSEPARATEPROC ( modeRGB.l, modeAlpha.l )
  274. Prototype PFNGLDRAWBUFFERSPROC ( n.i, *bufs.l )
  275. Prototype PFNGLSTENCILOPSEPARATEPROC ( face.l, sfail.l, dpfail.l, dppass.l )
  276. Prototype PFNGLSTENCILFUNCSEPARATEPROC ( face.l, func.l, ref.i, mask.i )
  277. Prototype PFNGLSTENCILMASKSEPARATEPROC ( face.l, mask.i )
  278. Prototype PFNGLATTACHSHADERPROC ( program.i, shader.i )
  279. Prototype PFNGLBINDATTRIBLOCATIONPROC ( program.i, index.i, name.s )
  280. Prototype PFNGLCOMPILESHADERPROC ( shader.i )
  281. Prototype.i PFNGLCREATEPROGRAMPROC ( )
  282. Prototype.i PFNGLCREATESHADERPROC ( type.l )
  283. Prototype PFNGLDELETEPROGRAMPROC ( program.i )
  284. Prototype PFNGLDELETESHADERPROC ( shader.i )
  285. Prototype PFNGLDETACHSHADERPROC ( program.i, shader.i )
  286. Prototype PFNGLDISABLEVERTEXATTRIBARRAYPROC ( index.i )
  287. Prototype PFNGLENABLEVERTEXATTRIBARRAYPROC ( index.i )
  288. Prototype PFNGLGETACTIVEATTRIBPROC ( program.i, index.i, bufSize.i, *length.i, *size.i, *type.l, *name.s )
  289. Prototype PFNGLGETACTIVEUNIFORMPROC ( program.i, index.i, bufSize.i, *length.i, *size.i, *type.l, *name.s )
  290. Prototype PFNGLGETATTACHEDSHADERSPROC ( program.i, maxCount.i, *count.i, *obj.i )
  291. Prototype PFNGLGETATTRIBLOCATIONPROC ( program.i, name.s )
  292. Prototype PFNGLGETPROGRAMIVPROC ( program.i, pname.l, *params.i )
  293. Prototype PFNGLGETPROGRAMINFOLOGPROC ( program.i, bufSize.i, *length.i, *infoLog.s )
  294. Prototype PFNGLGETSHADERIVPROC ( shader.i, pname.l, *params.i )
  295. Prototype PFNGLGETSHADERINFOLOGPROC ( shader.i, bufSize.i, *length.i, *infoLog.s )
  296. Prototype PFNGLGETSHADERSOURCEPROC ( shader.i, bufSize.i, *length.i, *source.s )
  297. Prototype PFNGLGETUNIFORMLOCATIONPROC ( program.i, name.s )
  298. Prototype PFNGLGETUNIFORMFVPROC ( program.i, location.i, *params.f )
  299. Prototype PFNGLGETUNIFORMIVPROC ( program.i, location.i, *params.i )
  300. Prototype PFNGLGETVERTEXATTRIBDVPROC ( index.i, pname.l, *params.d )
  301. Prototype PFNGLGETVERTEXATTRIBFVPROC ( index.i, pname.l, *params.f )
  302. Prototype PFNGLGETVERTEXATTRIBIVPROC ( index.i, pname.l, *params.i )
  303. Prototype PFNGLGETVERTEXATTRIBPOINTERVPROC ( index.i, pname.l, *pointer )
  304. Prototype.b PFNGLISPROGRAMPROC ( program.i )
  305. Prototype.b PFNGLISSHADERPROC ( shader.i )
  306. Prototype PFNGLLINKPROGRAMPROC ( program.i )
  307. Prototype PFNGLSHADERSOURCEPROC ( shader.i, count.i, *string.s, *length.i )
  308. Prototype PFNGLUSEPROGRAMPROC ( program.i )
  309. Prototype PFNGLUNIFORM1FPROC ( location.i, v0.f )
  310. Prototype PFNGLUNIFORM2FPROC ( location.i, v0.f, v1.f )
  311. Prototype PFNGLUNIFORM3FPROC ( location.i, v0.f, v1.f, v2.f )
  312. Prototype PFNGLUNIFORM4FPROC ( location.i, v0.f, v1.f, v2.f, v3.f )
  313. Prototype PFNGLUNIFORM1IPROC ( location.i, v0.i )
  314. Prototype PFNGLUNIFORM2IPROC ( location.i, v0.i, v1.i )
  315. Prototype PFNGLUNIFORM3IPROC ( location.i, v0.i, v1.i, v2.i )
  316. Prototype PFNGLUNIFORM4IPROC ( location.i, v0.i, v1.i, v2.i, v3.i )
  317. Prototype PFNGLUNIFORM1FVPROC ( location.i, count.i, *value.f )
  318. Prototype PFNGLUNIFORM2FVPROC ( location.i, count.i, *value.f )
  319. Prototype PFNGLUNIFORM3FVPROC ( location.i, count.i, *value.f )
  320. Prototype PFNGLUNIFORM4FVPROC ( location.i, count.i, *value.f )
  321. Prototype PFNGLUNIFORM1IVPROC ( location.i, count.i, *value.i )
  322. Prototype PFNGLUNIFORM2IVPROC ( location.i, count.i, *value.i )
  323. Prototype PFNGLUNIFORM3IVPROC ( location.i, count.i, *value.i )
  324. Prototype PFNGLUNIFORM4IVPROC ( location.i, count.i, *value.i )
  325. Prototype PFNGLUNIFORMMATRIX2FVPROC ( location.i, count.i, transpose.b, *value.f )
  326. Prototype PFNGLUNIFORMMATRIX3FVPROC ( location.i, count.i, transpose.b, *value.f )
  327. Prototype PFNGLUNIFORMMATRIX4FVPROC ( location.i, count.i, transpose.b, *value.f )
  328. Prototype PFNGLVALIDATEPROGRAMPROC ( program.i )
  329. Prototype PFNGLVERTEXATTRIB1DPROC ( index.i, x.d )
  330. Prototype PFNGLVERTEXATTRIB1DVPROC ( index.i, *v.d )
  331. Prototype PFNGLVERTEXATTRIB1FPROC ( index.i, x.f )
  332. Prototype PFNGLVERTEXATTRIB1FVPROC ( index.i, *v.f )
  333. Prototype PFNGLVERTEXATTRIB1SPROC ( index.i, x.w )
  334. Prototype PFNGLVERTEXATTRIB1SVPROC ( index.i, *v.w )
  335. Prototype PFNGLVERTEXATTRIB2DPROC ( index.i, x.d, y.d )
  336. Prototype PFNGLVERTEXATTRIB2DVPROC ( index.i, *v.d )
  337. Prototype PFNGLVERTEXATTRIB2FPROC ( index.i, x.f, y.f )
  338. Prototype PFNGLVERTEXATTRIB2FVPROC ( index.i, *v.f )
  339. Prototype PFNGLVERTEXATTRIB2SPROC ( index.i, x.w, y.w )
  340. Prototype PFNGLVERTEXATTRIB2SVPROC ( index.i, *v.w )
  341. Prototype PFNGLVERTEXATTRIB3DPROC ( index.i, x.d, y.d, z.d )
  342. Prototype PFNGLVERTEXATTRIB3DVPROC ( index.i, *v.d )
  343. Prototype PFNGLVERTEXATTRIB3FPROC ( index.i, x.f, y.f, z.f )
  344. Prototype PFNGLVERTEXATTRIB3FVPROC ( index.i, *v.f )
  345. Prototype PFNGLVERTEXATTRIB3SPROC ( index.i, x.w, y.w, z.w )
  346. Prototype PFNGLVERTEXATTRIB3SVPROC ( index.i, *v.w )
  347. Prototype PFNGLVERTEXATTRIB4NBVPROC ( index.i, *v.b )
  348. Prototype PFNGLVERTEXATTRIB4NIVPROC ( index.i, *v.i )
  349. Prototype PFNGLVERTEXATTRIB4NSVPROC ( index.i, *v.w )
  350. Prototype PFNGLVERTEXATTRIB4NUBPROC ( index.i, x.b, y.b, z.b, w.b )
  351. Prototype PFNGLVERTEXATTRIB4NUBVPROC ( index.i, *v.b )
  352. Prototype PFNGLVERTEXATTRIB4NUIVPROC ( index.i, *v.i )
  353. Prototype PFNGLVERTEXATTRIB4NUSVPROC ( index.i, *v.w)
  354. Prototype PFNGLVERTEXATTRIB4BVPROC ( index.i, *v.b )
  355. Prototype PFNGLVERTEXATTRIB4DPROC ( index.i, x.d, y.d, z.d, w.d )
  356. Prototype PFNGLVERTEXATTRIB4DVPROC ( index.i, *v.d )
  357. Prototype PFNGLVERTEXATTRIB4FPROC ( index.i, x.f, y.f, z.f, w.f )
  358. Prototype PFNGLVERTEXATTRIB4FVPROC ( index.i, *v.f )
  359. Prototype PFNGLVERTEXATTRIB4IVPROC ( index.i, *v.i )
  360. Prototype PFNGLVERTEXATTRIB4SPROC ( index.i, x.w, y.w, z.w, w.w )
  361. Prototype PFNGLVERTEXATTRIB4SVPROC ( index.i, *v.w )
  362. Prototype PFNGLVERTEXATTRIB4UBVPROC ( index.i, *v.b )
  363. Prototype PFNGLVERTEXATTRIB4UIVPROC ( index.i, *v.i )
  364. Prototype PFNGLVERTEXATTRIB4USVPROC ( index.i, *v.w)
  365. Prototype PFNGLVERTEXATTRIBPOINTERPROC ( index.i, size.i, type.l, normalized.b, stride.i, *pointer )
  366.  
  367. Global glBlendEquationSeparate.PFNGLBLENDEQUATIONSEPARATEPROC
  368. Global glDrawBuffers.PFNGLDRAWBUFFERSPROC
  369. Global glStencilOpSeparate.PFNGLSTENCILOPSEPARATEPROC
  370. Global glStencilFuncSeparate.PFNGLSTENCILFUNCSEPARATEPROC
  371. Global glStencilMaskSeparate.PFNGLSTENCILMASKSEPARATEPROC
  372. Global glAttachShader.PFNGLATTACHSHADERPROC
  373. Global glBindAttribLocation.PFNGLBINDATTRIBLOCATIONPROC
  374. Global glCompileShader.PFNGLCOMPILESHADERPROC
  375. Global glCreateProgram.PFNGLCREATEPROGRAMPROC
  376. Global glCreateShader.PFNGLCREATESHADERPROC
  377. Global glDeleteProgram.PFNGLDELETEPROGRAMPROC
  378. Global glDeleteShader.PFNGLDELETESHADERPROC
  379. Global glDetachShader.PFNGLDETACHSHADERPROC
  380. Global glDisableVertexAttribArray.PFNGLDISABLEVERTEXATTRIBARRAYPROC
  381. Global glEnableVertexAttribArray.PFNGLENABLEVERTEXATTRIBARRAYPROC
  382. Global glGetActiveAttrib.PFNGLGETACTIVEATTRIBPROC
  383. Global glGetActiveUniform.PFNGLGETACTIVEUNIFORMPROC
  384. Global glGetAttachedShaders.PFNGLGETATTACHEDSHADERSPROC
  385. Global glGetAttribLocation.PFNGLGETATTRIBLOCATIONPROC
  386. Global glGetProgramiv.PFNGLGETPROGRAMIVPROC
  387. Global glGetProgramInfoLog.PFNGLGETPROGRAMINFOLOGPROC
  388. Global glGetShaderiv.PFNGLGETSHADERIVPROC
  389. Global glGetShaderInfoLog.PFNGLGETSHADERINFOLOGPROC
  390. Global glGetShaderSource.PFNGLGETSHADERSOURCEPROC
  391. Global glGetUniformLocation.PFNGLGETUNIFORMLOCATIONPROC
  392. Global glGetUniformfv.PFNGLGETUNIFORMFVPROC
  393. Global glGetUniformiv.PFNGLGETUNIFORMIVPROC
  394. Global glGetVertexAttribdv.PFNGLGETVERTEXATTRIBDVPROC
  395. Global glGetVertexAttribfv.PFNGLGETVERTEXATTRIBFVPROC
  396. Global glGetVertexAttribiv.PFNGLGETVERTEXATTRIBIVPROC
  397. Global glGetVertexAttribPointerv.PFNGLGETVERTEXATTRIBPOINTERVPROC
  398. Global glIsProgram.PFNGLISPROGRAMPROC
  399. Global glIsShader.PFNGLISSHADERPROC
  400. Global glLinkProgram.PFNGLLINKPROGRAMPROC
  401. Global glShaderSource.PFNGLSHADERSOURCEPROC
  402. Global glUseProgram.PFNGLUSEPROGRAMPROC
  403. Global glUniform1f.PFNGLUNIFORM1FPROC
  404. Global glUniform2f.PFNGLUNIFORM2FPROC
  405. Global glUniform3f.PFNGLUNIFORM3FPROC
  406. Global glUniform4f.PFNGLUNIFORM4FPROC
  407. Global glUniform1i.PFNGLUNIFORM1IPROC
  408. Global glUniform2i.PFNGLUNIFORM2IPROC
  409. Global glUniform3i.PFNGLUNIFORM3IPROC
  410. Global glUniform4i.PFNGLUNIFORM4IPROC
  411. Global glUniform1fv.PFNGLUNIFORM1FVPROC
  412. Global glUniform2fv.PFNGLUNIFORM2FVPROC
  413. Global glUniform3fv.PFNGLUNIFORM3FVPROC
  414. Global glUniform4fv.PFNGLUNIFORM4FVPROC
  415. Global glUniform1iv.PFNGLUNIFORM1IVPROC
  416. Global glUniform2iv.PFNGLUNIFORM2IVPROC
  417. Global glUniform3iv.PFNGLUNIFORM3IVPROC
  418. Global glUniform4iv.PFNGLUNIFORM4IVPROC
  419. Global glUniformMatrix2fv.PFNGLUNIFORMMATRIX2FVPROC
  420. Global glUniformMatrix3fv.PFNGLUNIFORMMATRIX3FVPROC
  421. Global glUniformMatrix4fv.PFNGLUNIFORMMATRIX4FVPROC
  422. Global glValidateProgram.PFNGLVALIDATEPROGRAMPROC
  423. Global glVertexAttrib1d.PFNGLVERTEXATTRIB1DPROC
  424. Global glVertexAttrib1dv.PFNGLVERTEXATTRIB1DVPROC
  425. Global glVertexAttrib1f.PFNGLVERTEXATTRIB1FPROC
  426. Global glVertexAttrib1fv.PFNGLVERTEXATTRIB1FVPROC
  427. Global glVertexAttrib1s.PFNGLVERTEXATTRIB1SPROC
  428. Global glVertexAttrib1sv.PFNGLVERTEXATTRIB1SVPROC
  429. Global glVertexAttrib2d.PFNGLVERTEXATTRIB2DPROC
  430. Global glVertexAttrib2dv.PFNGLVERTEXATTRIB2DVPROC
  431. Global glVertexAttrib2f.PFNGLVERTEXATTRIB2FPROC
  432. Global glVertexAttrib2fv.PFNGLVERTEXATTRIB2FVPROC
  433. Global glVertexAttrib2s.PFNGLVERTEXATTRIB2SPROC
  434. Global glVertexAttrib2sv.PFNGLVERTEXATTRIB2SVPROC
  435. Global glVertexAttrib3d.PFNGLVERTEXATTRIB3DPROC
  436. Global glVertexAttrib3dv.PFNGLVERTEXATTRIB3DVPROC
  437. Global glVertexAttrib3f.PFNGLVERTEXATTRIB3FPROC
  438. Global glVertexAttrib3fv.PFNGLVERTEXATTRIB3FVPROC
  439. Global glVertexAttrib3s.PFNGLVERTEXATTRIB3SPROC
  440. Global glVertexAttrib3sv.PFNGLVERTEXATTRIB3SVPROC
  441. Global glVertexAttrib4Nbv.PFNGLVERTEXATTRIB4NBVPROC
  442. Global glVertexAttrib4Niv.PFNGLVERTEXATTRIB4NIVPROC
  443. Global glVertexAttrib4Nsv.PFNGLVERTEXATTRIB4NSVPROC
  444. Global glVertexAttrib4Nub.PFNGLVERTEXATTRIB4NUBPROC
  445. Global glVertexAttrib4Nubv.PFNGLVERTEXATTRIB4NUBVPROC
  446. Global glVertexAttrib4Nuiv.PFNGLVERTEXATTRIB4NUIVPROC
  447. Global glVertexAttrib4Nusv.PFNGLVERTEXATTRIB4NUSVPROC
  448. Global glVertexAttrib4bv.PFNGLVERTEXATTRIB4BVPROC
  449. Global glVertexAttrib4d.PFNGLVERTEXATTRIB4DPROC
  450. Global glVertexAttrib4dv.PFNGLVERTEXATTRIB4DVPROC
  451. Global glVertexAttrib4f.PFNGLVERTEXATTRIB4FPROC
  452. Global glVertexAttrib4fv.PFNGLVERTEXATTRIB4FVPROC
  453. Global glVertexAttrib4iv.PFNGLVERTEXATTRIB4IVPROC
  454. Global glVertexAttrib4s.PFNGLVERTEXATTRIB4SPROC
  455. Global glVertexAttrib4sv.PFNGLVERTEXATTRIB4SVPROC
  456. Global glVertexAttrib4ubv.PFNGLVERTEXATTRIB4UBVPROC
  457. Global glVertexAttrib4uiv.PFNGLVERTEXATTRIB4UIVPROC
  458. Global glVertexAttrib4usv.PFNGLVERTEXATTRIB4USVPROC
  459. Global glVertexAttribPointer.PFNGLVERTEXATTRIBPOINTERPROC
  460. CompilerEndIf
  461.  
  462. ;- OpenGL 2.1
  463. CompilerIf #ENABLEGL2_1
  464. Prototype PFNGLUNIFORMMATRIX2X3FVPROC ( location.i, count.i, transpose.b, *value.f )
  465. Prototype PFNGLUNIFORMMATRIX3X2FVPROC ( location.i, count.i, transpose.b, *value.f )
  466. Prototype PFNGLUNIFORMMATRIX2X4FVPROC ( location.i, count.i, transpose.b, *value.f )
  467. Prototype PFNGLUNIFORMMATRIX4X2FVPROC ( location.i, count.i, transpose.b, *value.f )
  468. Prototype PFNGLUNIFORMMATRIX3X4FVPROC ( location.i, count.i, transpose.b, *value.f )
  469. Prototype PFNGLUNIFORMMATRIX4X3FVPROC ( location.i, count.i, transpose.b, *value.f )
  470.  
  471. Global glUniformMatrix2x3fv.PFNGLUNIFORMMATRIX2X3FVPROC
  472. Global glUniformMatrix3x2fv.PFNGLUNIFORMMATRIX3X2FVPROC
  473. Global glUniformMatrix2x4fv.PFNGLUNIFORMMATRIX2X4FVPROC
  474. Global glUniformMatrix4x2fv.PFNGLUNIFORMMATRIX4X2FVPROC
  475. Global glUniformMatrix3x4fv.PFNGLUNIFORMMATRIX3X4FVPROC
  476. Global glUniformMatrix4x3fv.PFNGLUNIFORMMATRIX4X3FVPROC
  477. CompilerEndIf
  478.  
  479. ;- OpenGL 3.0
  480. CompilerIf #ENABLEGL3_0
  481. Prototype PFNGLCOLORMASKIPROC ( index.i, r.b, g.b, b.b, a.b )
  482. Prototype PFNGLGETBOOLEANI_VPROC ( target.i, index.i, *data_.b )
  483. Prototype PFNGLGETINTEGERI_VPROC ( target.i, index.i, *data_.i )
  484. Prototype PFNGLENABLEIPROC ( target.i, index.i )
  485. Prototype PFNGLDISABLEIPROC ( target.i, index.i )
  486. Prototype.b PFNGLISENABLEDIPROC ( target.i, index.i )
  487. Prototype PFNGLBEGINTRANSFORMFEEDBACKPROC ( primitiveMode.l )
  488. Prototype PFNGLENDTRANSFORMFEEDBACKPROC (  )
  489. Prototype PFNGLBINDBUFFERRANGEPROC ( target.i, index.i, buffer.i, offset.i, size.i )
  490. Prototype PFNGLBINDBUFFERBASEPROC ( target.i, index.i, buffer.i )
  491. Prototype PFNGLTRANSFORMFEEDBACKVARYINGSPROC ( program.i, count.i, *varyings.s, bufferMode.l )
  492. Prototype PFNGLGETTRANSFORMFEEDBACKVARYINGPROC ( program.i, index.i, bufSize.i, *length.i, *size.i, *type.l, *name.s )
  493. Prototype PFNGLCLAMPCOLORPROC ( target.i, clamp.l )
  494. Prototype PFNGLBEGINCONDITIONALRENDERPROC ( id.i, mode.l )
  495. Prototype PFNGLENDCONDITIONALRENDERPROC (  )
  496. Prototype PFNGLVERTEXATTRIBIPOINTERPROC ( index.i, size.i, type.i, stride.i, *pointer )
  497. Prototype PFNGLGETVERTEXATTRIBIIVPROC ( index.i, pname.l, *params.i )
  498. Prototype PFNGLGETVERTEXATTRIBIUIVPROC ( index.i, pname.l, *params.i )
  499. Prototype PFNGLVERTEXATTRIBI1IPROC ( index.i, x.i )
  500. Prototype PFNGLVERTEXATTRIBI2IPROC ( index.i, x.i, y.i )
  501. Prototype PFNGLVERTEXATTRIBI3IPROC ( index.i, x.i, y.i, z.i )
  502. Prototype PFNGLVERTEXATTRIBI4IPROC ( index.i, x.i, y.i, z.i, w.i )
  503. Prototype PFNGLVERTEXATTRIBI1UIPROC ( index.i, x.i )
  504. Prototype PFNGLVERTEXATTRIBI2UIPROC ( index.i, x.i, y.i )
  505. Prototype PFNGLVERTEXATTRIBI3UIPROC ( index.i, x.i, y.i, z.i )
  506. Prototype PFNGLVERTEXATTRIBI4UIPROC ( index.i, x.i, y.i, z.i, w.i )
  507. Prototype PFNGLVERTEXATTRIBI1IVPROC ( index.i, *v.i )
  508. Prototype PFNGLVERTEXATTRIBI2IVPROC ( index.i, *v.i )
  509. Prototype PFNGLVERTEXATTRIBI3IVPROC ( index.i, *v.i )
  510. Prototype PFNGLVERTEXATTRIBI4IVPROC ( index.i, *v.i )
  511. Prototype PFNGLVERTEXATTRIBI1UIVPROC ( index.i, *v.i )
  512. Prototype PFNGLVERTEXATTRIBI2UIVPROC ( index.i, *v.i )
  513. Prototype PFNGLVERTEXATTRIBI3UIVPROC ( index.i, *v.i )
  514. Prototype PFNGLVERTEXATTRIBI4UIVPROC ( index.i, *v.i )
  515. Prototype PFNGLVERTEXATTRIBI4BVPROC ( index.i, *v.b )
  516. Prototype PFNGLVERTEXATTRIBI4SVPROC ( index.i, *v.w )
  517. Prototype PFNGLVERTEXATTRIBI4UBVPROC ( index.i, *v.b )
  518. Prototype PFNGLVERTEXATTRIBI4USVPROC ( index.i, *v.w )
  519. Prototype PFNGLGETUNIFORMUIVPROC ( program.i, location.i, *params.i )
  520. Prototype PFNGLBINDFRAGDATALOCATIONPROC ( program.i, color.i, *name.s )
  521. Prototype.i PFNGLGETFRAGDATALOCATIONPROC ( program.i, *name.s )
  522. Prototype PFNGLUNIFORM1UIPROC ( location.i, v0.i )
  523. Prototype PFNGLUNIFORM2UIPROC ( location.i, v0.i, v1.i )
  524. Prototype PFNGLUNIFORM3UIPROC ( location.i, v0.i, v1.i, v2.i )
  525. Prototype PFNGLUNIFORM4UIPROC ( location.i, v0.i, v1.i, v2.i, v3.i )
  526. Prototype PFNGLUNIFORM1UIVPROC ( location.i, count.i, *value.i )
  527. Prototype PFNGLUNIFORM2UIVPROC ( location.i, count.i, *value.i )
  528. Prototype PFNGLUNIFORM3UIVPROC ( location.i, count.i, *value.i )
  529. Prototype PFNGLUNIFORM4UIVPROC ( location.i, count.i, *value.i )
  530. Prototype PFNGLTEXPARAMETERIIVPROC ( target.i, pname.l, *params.i )
  531. Prototype PFNGLTEXPARAMETERIUIVPROC ( target.i, pname.l, *params.i )
  532. Prototype PFNGLGETTEXPARAMETERIIVPROC ( target.i, pname.l, *params.i )
  533. Prototype PFNGLGETTEXPARAMETERIUIVPROC ( target.i, pname.l, *params.i )
  534. Prototype PFNGLCLEARBUFFERIVPROC ( buffer.l, drawbuffer.i, *value.i )
  535. Prototype PFNGLCLEARBUFFERUIVPROC ( buffer.l, drawbuffer.i, *value.i )
  536. Prototype PFNGLCLEARBUFFERFVPROC ( buffer.l, drawbuffer.i, *value.f )
  537. Prototype PFNGLCLEARBUFFERFIPROC ( buffer.l, drawbuffer.i, depth.f, stencil.i )
  538. Prototype.l PFNGLGETSTRINGIPROC ( name.l, index.i )
  539.  
  540. Global glColorMaski.PFNGLCOLORMASKIPROC
  541. Global glGetBooleani_v.PFNGLGETBOOLEANI_VPROC
  542. Global glGetIntegeri_v.PFNGLGETINTEGERI_VPROC
  543. Global glEnablei.PFNGLENABLEIPROC
  544. Global glDisablei.PFNGLDISABLEIPROC
  545. Global glIsEnabledi.PFNGLISENABLEDIPROC
  546. Global glBeginTransformFeedback.PFNGLBEGINTRANSFORMFEEDBACKPROC
  547. Global glEndTransformFeedback.PFNGLENDTRANSFORMFEEDBACKPROC
  548. Global glBindBufferRange.PFNGLBINDBUFFERRANGEPROC
  549. Global glBindBufferBase.PFNGLBINDBUFFERBASEPROC
  550. Global glTransformFeedbackVaryings.PFNGLTRANSFORMFEEDBACKVARYINGSPROC
  551. Global glGetTransformFeedbackVarying.PFNGLGETTRANSFORMFEEDBACKVARYINGPROC
  552. Global glClampColor.PFNGLCLAMPCOLORPROC
  553. Global glBeginConditionalRender.PFNGLBEGINCONDITIONALRENDERPROC
  554. Global glEndConditionalRender.PFNGLENDCONDITIONALRENDERPROC
  555. Global glVertexAttribIPointer.PFNGLVERTEXATTRIBIPOINTERPROC
  556. Global glGetVertexAttribIiv.PFNGLGETVERTEXATTRIBIIVPROC
  557. Global glGetVertexAttribIuiv.PFNGLGETVERTEXATTRIBIUIVPROC
  558. Global glVertexAttribI1i.PFNGLVERTEXATTRIBI1IPROC
  559. Global glVertexAttribI2i.PFNGLVERTEXATTRIBI2IPROC
  560. Global glVertexAttribI3i.PFNGLVERTEXATTRIBI3IPROC
  561. Global glVertexAttribI4i.PFNGLVERTEXATTRIBI4IPROC
  562. Global glVertexAttribI1ui.PFNGLVERTEXATTRIBI1UIPROC
  563. Global glVertexAttribI2ui.PFNGLVERTEXATTRIBI2UIPROC
  564. Global glVertexAttribI3ui.PFNGLVERTEXATTRIBI3UIPROC
  565. Global glVertexAttribI4ui.PFNGLVERTEXATTRIBI4UIPROC
  566. Global glVertexAttribI1iv.PFNGLVERTEXATTRIBI1IVPROC
  567. Global glVertexAttribI2iv.PFNGLVERTEXATTRIBI2IVPROC
  568. Global glVertexAttribI3iv.PFNGLVERTEXATTRIBI3IVPROC
  569. Global glVertexAttribI4iv.PFNGLVERTEXATTRIBI4IVPROC
  570. Global glVertexAttribI1uiv.PFNGLVERTEXATTRIBI1UIVPROC
  571. Global glVertexAttribI2uiv.PFNGLVERTEXATTRIBI2UIVPROC
  572. Global glVertexAttribI3uiv.PFNGLVERTEXATTRIBI3UIVPROC
  573. Global glVertexAttribI4uiv.PFNGLVERTEXATTRIBI4UIVPROC
  574. Global glVertexAttribI4bv.PFNGLVERTEXATTRIBI4BVPROC
  575. Global glVertexAttribI4sv.PFNGLVERTEXATTRIBI4SVPROC
  576. Global glVertexAttribI4ubv.PFNGLVERTEXATTRIBI4UBVPROC
  577. Global glVertexAttribI4usv.PFNGLVERTEXATTRIBI4USVPROC
  578. Global glGetUniformuiv.PFNGLGETUNIFORMUIVPROC
  579. Global glBindFragDataLocation.PFNGLBINDFRAGDATALOCATIONPROC
  580. Global glGetFragDataLocation.PFNGLGETFRAGDATALOCATIONPROC
  581. Global glUniform1ui.PFNGLUNIFORM1UIPROC
  582. Global glUniform2ui.PFNGLUNIFORM2UIPROC
  583. Global glUniform3ui.PFNGLUNIFORM3UIPROC
  584. Global glUniform4ui.PFNGLUNIFORM4UIPROC
  585. Global glUniform1uiv.PFNGLUNIFORM1UIVPROC
  586. Global glUniform2uiv.PFNGLUNIFORM2UIVPROC
  587. Global glUniform3uiv.PFNGLUNIFORM3UIVPROC
  588. Global glUniform4uiv.PFNGLUNIFORM4UIVPROC
  589. Global glTexParameterIiv.PFNGLTEXPARAMETERIIVPROC
  590. Global glTexParameterIuiv.PFNGLTEXPARAMETERIUIVPROC
  591. Global glGetTexParameterIiv.PFNGLGETTEXPARAMETERIIVPROC
  592. Global glGetTexParameterIuiv.PFNGLGETTEXPARAMETERIUIVPROC
  593. Global glClearBufferiv.PFNGLCLEARBUFFERIVPROC
  594. Global glClearBufferuiv.PFNGLCLEARBUFFERUIVPROC
  595. Global glClearBufferfv.PFNGLCLEARBUFFERFVPROC
  596. Global glClearBufferfi.PFNGLCLEARBUFFERFIPROC
  597. Global glGetStringi_.PFNGLGETSTRINGIPROC
  598. CompilerEndIf
  599.  
  600. ;- OpenGL 3.1
  601. CompilerIf #ENABLEGL3_1
  602. Prototype PFNGLDRAWARRAYSINSTANCEDPROC ( mode.l, first.i, count.i, primcount.i )
  603. Prototype PFNGLDRAWELEMENTSINSTANCEDPROC ( mode.l, count.i, type.l, *indices, primcount.i )
  604. Prototype PFNGLTEXBUFFERPROC ( target.l, internalformat.l, buffer.i )
  605. Prototype PFNGLPRIMITIVERESTARTINDEXPROC ( index.i )
  606.  
  607. Global glDrawArraysInstanced.PFNGLDRAWARRAYSINSTANCEDPROC
  608. Global glDrawElementsInstanced.PFNGLDRAWELEMENTSINSTANCEDPROC
  609. Global glTexBuffer.PFNGLTEXBUFFERPROC
  610. Global glPrimitiveRestartIndex.PFNGLPRIMITIVERESTARTINDEXPROC
  611. CompilerEndIf
  612.  
  613. ;- OpenGL 3.2
  614. CompilerIf #ENABLEGL3_2
  615. Prototype PFNGLGETINTEGER64I_VPROC ( target.l, index.i, *data_.q )
  616. Prototype PFNGLGETBUFFERPARAMETERI64VPROC ( target.l, pname.l, *params.q )
  617. Prototype PFNGLFRAMEBUFFERTEXTUREPROC ( target.l, attachment.l, texture.i, level.i )
  618.  
  619. Global glGetInteger64i_v.PFNGLGETINTEGER64I_VPROC
  620. Global glGetBufferParameteri64v.PFNGLGETBUFFERPARAMETERI64VPROC
  621. Global glFramebufferTexture.PFNGLFRAMEBUFFERTEXTUREPROC
  622. CompilerEndIf
  623.  
  624. ;- OpenGL 3.3
  625. CompilerIf #ENABLEGL3_2
  626. Prototype PFNGLVERTEXATTRIBDIVISORPROC (index.i, divisor.i)
  627. Global glVertexAttribDivisor.PFNGLVERTEXATTRIBDIVISORPROC
  628. CompilerEndIf
  629.  
  630. ;- OpenGL Misc
  631. CompilerIf #ENABLEGLMISC
  632. Prototype.b PFNGLISRENDERBUFFERPROC ( renderbuffer.i )
  633. Prototype PFNGLBINDRENDERBUFFERPROC ( target.l, renderbuffer.i )
  634. Prototype PFNGLDELETERENDERBUFFERSPROC ( n.i, *renderbuffers.i )
  635. Prototype PFNGLGENRENDERBUFFERSPROC ( n.i, *renderbuffers.i )
  636. Prototype PFNGLRENDERBUFFERSTORAGEPROC ( target.l, internalformat.l, width.i, height.i )
  637. Prototype PFNGLGETRENDERBUFFERPARAMETERIVPROC ( target.l, pname.l, *params.i )
  638. Prototype.b PFNGLISFRAMEBUFFERPROC ( framebuffer.i )
  639. Prototype PFNGLBINDFRAMEBUFFERPROC ( target.l, framebuffer.i )
  640. Prototype PFNGLDELETEFRAMEBUFFERSPROC ( n.i, *framebuffers.i )
  641. Prototype PFNGLGENFRAMEBUFFERSPROC ( n.i, *framebuffers.i )
  642. Prototype.l PFNGLCHECKFRAMEBUFFERSTATUSPROC ( target.l )
  643. Prototype PFNGLFRAMEBUFFERTEXTURE1DPROC ( target.l, attachment.l, textarget.l, texture.i, level.i )
  644. Prototype PFNGLFRAMEBUFFERTEXTURE2DPROC ( target.l, attachment.l, textarget.l, texture.i, level.i )
  645. Prototype PFNGLFRAMEBUFFERTEXTURE3DPROC ( target.l, attachment.l, textarget.l, texture.i, level.i, zoffset.i )
  646. Prototype PFNGLFRAMEBUFFERRENDERBUFFERPROC ( target.l, attachment.l, renderbuffertarget.l, renderbuffer.i )
  647. Prototype PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC ( target.l, attachment.l, pname.l, *params.i )
  648. Prototype PFNGLGENERATEMIPMAPPROC ( target.l )
  649. Prototype PFNGLBLITFRAMEBUFFERPROC ( srcX0.i, srcY0.i, srcX1.i, srcY1.i, dstX0.i, dstY0.i, dstX1.i, dstY1.i, mask.i, filter.l )
  650. Prototype PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC ( target.l, samples.i, internalformat.l, width.i, height.i )
  651. Prototype PFNGLFRAMEBUFFERTEXTURELAYERPROC ( target.l, attachment.l, texture.i, level.i, layer.i )
  652.  
  653. Global glIsRenderbuffer.PFNGLISRENDERBUFFERPROC
  654. Global glBindRenderbuffer.PFNGLBINDRENDERBUFFERPROC
  655. Global glDeleteRenderbuffers.PFNGLDELETERENDERBUFFERSPROC
  656. Global glGenRenderbuffers.PFNGLGENRENDERBUFFERSPROC
  657. Global glRenderbufferStorage.PFNGLRENDERBUFFERSTORAGEPROC
  658. Global glGetRenderbufferParameteriv.PFNGLGETRENDERBUFFERPARAMETERIVPROC
  659. Global glIsFramebuffer.PFNGLISFRAMEBUFFERPROC
  660. Global glBindFramebuffer.PFNGLBINDFRAMEBUFFERPROC
  661. Global glDeleteFramebuffers.PFNGLDELETEFRAMEBUFFERSPROC
  662. Global glGenFramebuffers.PFNGLGENFRAMEBUFFERSPROC
  663. Global glCheckFramebufferStatus.PFNGLCHECKFRAMEBUFFERSTATUSPROC
  664. Global glFramebufferTexture1D.PFNGLFRAMEBUFFERTEXTURE1DPROC
  665. Global glFramebufferTexture2D.PFNGLFRAMEBUFFERTEXTURE2DPROC
  666. Global glFramebufferTexture3D.PFNGLFRAMEBUFFERTEXTURE3DPROC
  667. Global glFramebufferRenderbuffer.PFNGLFRAMEBUFFERRENDERBUFFERPROC
  668. Global glGetFramebufferAttachmentParameteriv.PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC
  669. Global glGenerateMipmap.PFNGLGENERATEMIPMAPPROC
  670. Global glBlitFramebuffer.PFNGLBLITFRAMEBUFFERPROC
  671. Global glRenderbufferStorageMultisample.PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC
  672. Global glFramebufferTextureLayer.PFNGLFRAMEBUFFERTEXTURELAYERPROC
  673. CompilerEndIf
  674.  
  675.  
  676. Prototype.i wglGetProcAddressPROTO ( funcname.s )
  677. Global wglGetProcAddress.wglGetProcAddressPROTO
  678.  
  679. Macro  setGLEXT(var, extname)
  680.   ;var = glfwGetProcAddress(extname)
  681.   var = wglGetProcAddress(extname)
  682.   If Not var
  683.     LogTXT(extname+": Not found !!!")
  684.   Else
  685.     LogTXT(extname+": 0x"+Hex(var))
  686.   EndIf
  687. EndMacro
  688.  
  689. Macro  setGLCORE(var, extname)
  690.   var = GetFunction(0,extname)
  691.  
  692.   If Not var
  693.     LogTXT(extname+": Not found !!!")
  694.   Else
  695.     LogTXT(extname+": 0x"+Hex(var))
  696.   EndIf
  697. EndMacro
  698.  
  699. Macro glGetString(name)
  700.     PeekS( glGetString_(name) )
  701. EndMacro
  702.  
  703. Macro glGetStringi(name, index)
  704.     PeekS( glGetStringi_(name, index) )
  705. EndMacro
  706.  
  707.  Macro glClearScreen(Red, Green, Blue)
  708.    glClearColor(Red, Green, Blue, 1.0)
  709.    glClear(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
  710.  EndMacro
  711.  
  712. #LOG_FILE       = "Log.txt"
  713. ; Write to log file
  714. Procedure LogTXT(string.s)
  715.   Define hFile.i
  716.   hFile.i = OpenFile(#PB_Any, #LOG_FILE)
  717.   FileSeek(hFile, Lof(hFile))
  718.   WriteStringN(hFile, string)
  719.   CloseFile(hFile)
  720. EndProcedure
  721.  
  722. ; must be call after StartGLFW()
  723. Procedure initGLFunctions()
  724.     traceFunction("initGLFunctions()")
  725.     LogTXT("--- Loading OpenGL Functions: ")
  726.    
  727.     Define libhandle.i = OpenLibrary(0,"opengl32.dll")
  728.    
  729.     wglGetProcAddress = GetFunction(0, "wglGetProcAddress")
  730.    
  731.     ; *++++ OPENGL 1.0 ++++*
  732.     setGLCORE( glCullFace,                  "glCullFace" )
  733.     setGLCORE( glFrontFace,                 "glFrontFace" )
  734.     setGLCORE( glHint,                      "glHint" )
  735.     setGLCORE( glLineWidth,                 "glLineWidth" )
  736.     setGLCORE( glPointSize,                 "glPointSize" )
  737.     setGLCORE( glPolygonMode,               "glPolygonMode" )
  738.     setGLCORE( glScissor,                   "glScissor" )
  739.     setGLCORE( glTexParameterf,             "glTexParameterf" )
  740.     setGLCORE( glTexParameterfv,            "glTexParameterfv" )
  741.     setGLCORE( glTexParameteri,             "glTexParameteri" )
  742.     setGLCORE( glTexParameteriv,            "glTexParameteriv" )
  743.     setGLCORE( glTexImage1D,                "glTexImage1D" )
  744.     setGLCORE( glTexImage2D,                "glTexImage2D" )
  745.     setGLCORE( glDrawBuffer,                "glDrawBuffer" )
  746.     setGLCORE( glClear,                     "glClear" )
  747.     setGLCORE( glClearColor,                "glClearColor" )
  748.     setGLCORE( glClearStencil,              "glClearStencil" )
  749.     setGLCORE( glClearDepth,                "glClearDepth" )
  750.     setGLCORE( glStencilMask,               "glStencilMask" )
  751.     setGLCORE( glColorMask,                 "glColorMask" )
  752.     setGLCORE( glDepthMask,                 "glDepthMask" )
  753.     setGLCORE( glDisable,                   "glDisable" )
  754.     setGLCORE( glEnable,                    "glEnable" )
  755.     setGLCORE( glFinish,                    "glFinish" )
  756.     setGLCORE( glFlush,                     "glFlush" )
  757.     setGLCORE( glBlendFunc,                 "glBlendFunc" )
  758.     setGLCORE( glLogicOp,                   "glLogicOp" )
  759.     setGLCORE( glStencilFunc,               "glStencilFunc" )
  760.     setGLCORE( glStencilOp,                 "glStencilOp" )
  761.     setGLCORE( glDepthFunc,                 "glDepthFunc" )
  762.     setGLCORE( glPixelStoref,               "glPixelStoref" )
  763.     setGLCORE( glPixelStorei,               "glPixelStorei" )
  764.     setGLCORE( glReadBuffer,                "glReadBuffer" )
  765.     setGLCORE( glReadPixels,                "glReadPixels" )
  766.     setGLCORE( glGetBooleanv,               "glGetBooleanv" )
  767.     setGLCORE( glGetDoublev,                "glGetDoublev" )
  768.     setGLCORE( glGetError,                  "glGetError" )
  769.     setGLCORE( glGetFloatv,                 "glGetFloatv" )
  770.     setGLCORE( glGetIntegerv,               "glGetIntegerv" )
  771.     setGLCORE( glGetString_,                 "glGetString" )
  772.     setGLCORE( glGetTexImage,               "glGetTexImage" )
  773.     setGLCORE( glGetTexParameterfv,         "glGetTexParameterfv" )
  774.     setGLCORE( glGetTexParameteriv,         "glGetTexParameteriv" )
  775.     setGLCORE( glGetTexLevelParameterfv,    "glGetTexLevelParameterfv" )
  776.     setGLCORE( glGetTexLevelParameteriv,    "glGetTexLevelParameteriv" )
  777.     setGLCORE( glIsEnabled,                 "glIsEnabled" )
  778.     setGLCORE( glDepthRange,                "glDepthRange" )
  779.     setGLCORE( glViewport,                  "glViewport" )
  780.    
  781.     ; *++++ OPENGL 1.1 ++++*
  782.     setGLCORE( glDrawArrays,        "glDrawArrays" )
  783.     setGLCORE( glDrawElements,      "glDrawElements" )
  784.     setGLCORE( glGetPointerv,       "glGetPointerv" )
  785.     setGLCORE( glPolygonOffset,     "glPolygonOffset" )
  786.     setGLCORE( glCopyTexImage1D,    "glCopyTexImage1D" )
  787.     setGLCORE( glCopyTexImage2D,    "glCopyTexImage2D" )
  788.     setGLCORE( glCopyTexSubImage1D, "glCopyTexSubImage1D" )
  789.     setGLCORE( glCopyTexSubImage2D, "glCopyTexSubImage2D" )
  790.     setGLCORE( glTexSubImage1D,     "glTexSubImage1D" )
  791.     setGLCORE( glTexSubImage2D,     "glTexSubImage2D" )
  792.     setGLCORE( glBindTexture,       "glBindTexture" )
  793.     setGLCORE( glDeleteTextures,    "glDeleteTextures" )
  794.     setGLCORE( glGenTextures,       "glGenTextures" )
  795.     setGLCORE( glIsTexture,         "glIsTexture" )
  796.    
  797.     ; *++++ OPENGL 1.2 ++++*
  798.     CompilerIf #ENABLEGL1_2
  799.         setGLEXT( glBlendColor,           "glBlendColor" )
  800.         setGLEXT( glBlendEquation,        "glBlendEquation" )
  801.         setGLEXT( glDrawRangeElements,    "glDrawRangeElements" )
  802.         setGLEXT( glTexImage3D,           "glTexImage3D" )
  803.         setGLEXT( glTexSubImage3D,        "glTexSubImage3D" )
  804.         setGLEXT( glCopyTexSubImage3D,    "glCopyTexSubImage3D" )
  805.     CompilerEndIf
  806.    
  807.     ; *++++ OPENGL 1.3 ++++*
  808.     CompilerIf #ENABLEGL1_3
  809.         setGLEXT( glActiveTexture,            "glActiveTexture" )
  810.         setGLEXT( glSampleCoverage,           "glSampleCoverage" )
  811.         setGLEXT( glCompressedTexImage3D,     "glCompressedTexImage3D" )
  812.         setGLEXT( glCompressedTexImage2D,     "glCompressedTexImage2D" )
  813.         setGLEXT( glCompressedTexImage1D,     "glCompressedTexImage1D" )
  814.         setGLEXT( glCompressedTexSubImage3D,  "glCompressedTexSubImage3D" )
  815.         setGLEXT( glCompressedTexSubImage2D,  "glCompressedTexSubImage2D" )
  816.         setGLEXT( glCompressedTexSubImage1D,  "glCompressedTexSubImage1D" )
  817.         setGLEXT( glGetCompressedTexImage,    "glGetCompressedTexImage" )
  818.     CompilerEndIf
  819.    
  820.     ; *++++ OPENGL 1.4 ++++*
  821.     CompilerIf #ENABLEGL1_4
  822.         setGLEXT( glBlendFuncSeparate,  "glBlendFuncSeparate" )
  823.         setGLEXT( glMultiDrawArrays,    "glMultiDrawArrays" )
  824.         setGLEXT( glMultiDrawElements,  "glMultiDrawElements" )
  825.         setGLEXT( glPointParameterf,    "glPointParameterf" )
  826.         setGLEXT( glPointParameterfv,   "glPointParameterfv" )
  827.         setGLEXT( glPointParameteri,    "glPointParameteri" )
  828.         setGLEXT( glPointParameteriv,   "glPointParameteriv" )
  829.     CompilerEndIf
  830.    
  831.     ; *++++ OPENGL 1.5 ++++*
  832.     CompilerIf #ENABLEGL1_5
  833.         setGLEXT( glGenQueries,           "glGenQueries" )
  834.         setGLEXT( glDeleteQueries,        "glDeleteQueries" )
  835.         setGLEXT( glIsQuery,              "glIsQuery" )
  836.         setGLEXT( glBeginQuery,           "glBeginQuery" )
  837.         setGLEXT( glEndQuery,             "glEndQuery" )
  838.         setGLEXT( glGetQueryiv,           "glGetQueryiv" )
  839.         setGLEXT( glGetQueryObjectiv,     "glGetQueryObjectiv" )
  840.         setGLEXT( glGetQueryObjectuiv,    "glGetQueryObjectuiv" )
  841.         setGLEXT( glBindBuffer,           "glBindBuffer" )
  842.         setGLEXT( glDeleteBuffers,        "glDeleteBuffers" )
  843.         setGLEXT( glGenBuffers,           "glGenBuffers" )
  844.         setGLEXT( glIsBuffer,             "glIsBuffer" )
  845.         setGLEXT( glBufferData,           "glBufferData" )
  846.         setGLEXT( glBufferSubData,        "glBufferSubData" )
  847.         setGLEXT( glMapBuffer,            "glMapBuffer" )
  848.         setGLEXT( glUnmapBuffer,          "glUnmapBuffer" )
  849.         setGLEXT( glGetBufferParameteriv, "glGetBufferParameteriv" )
  850.         setGLEXT( glGetBufferPointerv,    "glGetBufferPointerv" )
  851.     CompilerEndIf
  852.    
  853.     ; *++++ OPENGL 2.0 ++++*
  854.     CompilerIf #ENABLEGL2_0
  855.         setGLEXT( glBlendEquationSeparate,    "glBlendEquationSeparate" )
  856.         setGLEXT( glDrawBuffers,              "glDrawBuffers" )
  857.         setGLEXT( glStencilOpSeparate,        "glStencilOpSeparate" )
  858.         setGLEXT( glStencilFuncSeparate,      "glStencilFuncSeparate" )
  859.         setGLEXT( glStencilMaskSeparate,      "glStencilMaskSeparate" )
  860.         setGLEXT( glAttachShader,             "glAttachShader" )
  861.         setGLEXT( glBindAttribLocation,       "glBindAttribLocation" )
  862.         setGLEXT( glCompileShader,            "glCompileShader" )
  863.         setGLEXT( glCreateProgram,            "glCreateProgram" )
  864.         setGLEXT( glCreateShader,             "glCreateShader" )
  865.         setGLEXT( glDeleteProgram,            "glDeleteProgram" )
  866.         setGLEXT( glDeleteShader,             "glDeleteShader" )
  867.         setGLEXT( glDetachShader,             "glDetachShader" )
  868.         setGLEXT( glDisableVertexAttribArray, "glDisableVertexAttribArray" )
  869.         setGLEXT( glEnableVertexAttribArray,  "glEnableVertexAttribArray" )
  870.         setGLEXT( glGetActiveAttrib,          "glGetActiveAttrib" )
  871.         setGLEXT( glGetActiveUniform,         "glGetActiveUniform" )
  872.         setGLEXT( glGetAttachedShaders,       "glGetAttachedShaders" )
  873.         setGLEXT( glGetAttribLocation,        "glGetAttribLocation" )
  874.         setGLEXT( glGetProgramiv,             "glGetProgramiv" )
  875.         setGLEXT( glGetProgramInfoLog,        "glGetProgramInfoLog" )
  876.         setGLEXT( glGetShaderiv,              "glGetShaderiv" )
  877.         setGLEXT( glGetShaderInfoLog,         "glGetShaderInfoLog" )
  878.         setGLEXT( glGetShaderSource,          "glGetShaderSource" )
  879.         setGLEXT( glGetUniformLocation,       "glGetUniformLocation" )
  880.         setGLEXT( glGetUniformfv,             "glGetUniformfv" )
  881.         setGLEXT( glGetUniformiv,             "glGetUniformiv" )
  882.         setGLEXT( glGetVertexAttribdv,        "glGetVertexAttribdv" )
  883.         setGLEXT( glGetVertexAttribfv,        "glGetVertexAttribfv" )
  884.         setGLEXT( glGetVertexAttribiv,        "glGetVertexAttribiv" )
  885.         setGLEXT( glGetVertexAttribPointerv,  "glGetVertexAttribPointerv" )
  886.         setGLEXT( glIsProgram,                "glIsProgram" )
  887.         setGLEXT( glIsShader,                 "glIsShader" )
  888.         setGLEXT( glLinkProgram,              "glLinkProgram" )
  889.         setGLEXT( glShaderSource,             "glShaderSource" )
  890.         setGLEXT( glUseProgram,               "glUseProgram" )
  891.         setGLEXT( glUniform1f,                "glUniform1f" )
  892.         setGLEXT( glUniform2f,                "glUniform2f" )
  893.         setGLEXT( glUniform3f,                "glUniform3f" )
  894.         setGLEXT( glUniform4f,                "glUniform4f" )
  895.         setGLEXT( glUniform1i,                "glUniform1i" )
  896.         setGLEXT( glUniform2i,                "glUniform2i" )
  897.         setGLEXT( glUniform3i,                "glUniform3i" )
  898.         setGLEXT( glUniform4i,                "glUniform4i" )
  899.         setGLEXT( glUniform1fv,               "glUniform1fv" )
  900.         setGLEXT( glUniform2fv,               "glUniform2fv" )
  901.         setGLEXT( glUniform3fv,               "glUniform3fv" )
  902.         setGLEXT( glUniform4fv,               "glUniform4fv" )
  903.         setGLEXT( glUniform1iv,               "glUniform1iv" )
  904.         setGLEXT( glUniform2iv,               "glUniform2iv" )
  905.         setGLEXT( glUniform3iv,               "glUniform3iv" )
  906.         setGLEXT( glUniform4iv,               "glUniform4iv" )
  907.         setGLEXT( glUniformMatrix2fv,         "glUniformMatrix2fv" )
  908.         setGLEXT( glUniformMatrix3fv,         "glUniformMatrix3fv" )
  909.         setGLEXT( glUniformMatrix4fv,         "glUniformMatrix4fv" )
  910.         setGLEXT( glValidateProgram,          "glValidateProgram" )
  911.         setGLEXT( glVertexAttrib1d,           "glVertexAttrib1d" )
  912.         setGLEXT( glVertexAttrib1dv,          "glVertexAttrib1dv" )
  913.         setGLEXT( glVertexAttrib1f,           "glVertexAttrib1f" )
  914.         setGLEXT( glVertexAttrib1fv,          "glVertexAttrib1fv" )
  915.         setGLEXT( glVertexAttrib1s,           "glVertexAttrib1s" )
  916.         setGLEXT( glVertexAttrib1sv,          "glVertexAttrib1sv" )
  917.         setGLEXT( glVertexAttrib2d,           "glVertexAttrib2d" )
  918.         setGLEXT( glVertexAttrib2dv,          "glVertexAttrib2dv" )
  919.         setGLEXT( glVertexAttrib2f,           "glVertexAttrib2f" )
  920.         setGLEXT( glVertexAttrib2fv,          "glVertexAttrib2fv" )
  921.         setGLEXT( glVertexAttrib2s,           "glVertexAttrib2s" )
  922.         setGLEXT( glVertexAttrib2sv,          "glVertexAttrib2sv" )
  923.         setGLEXT( glVertexAttrib3d,           "glVertexAttrib3d" )
  924.         setGLEXT( glVertexAttrib3dv,          "glVertexAttrib3dv" )
  925.         setGLEXT( glVertexAttrib3f,           "glVertexAttrib3f" )
  926.         setGLEXT( glVertexAttrib3fv,          "glVertexAttrib3fv" )
  927.         setGLEXT( glVertexAttrib3s,           "glVertexAttrib3s" )
  928.         setGLEXT( glVertexAttrib3sv,          "glVertexAttrib3sv" )
  929.         setGLEXT( glVertexAttrib4Nbv,         "glVertexAttrib4Nbv" )
  930.         setGLEXT( glVertexAttrib4Niv,         "glVertexAttrib4Niv" )
  931.         setGLEXT( glVertexAttrib4Nsv,         "glVertexAttrib4Nsv" )
  932.         setGLEXT( glVertexAttrib4Nub,         "glVertexAttrib4Nub" )
  933.         setGLEXT( glVertexAttrib4Nubv,        "glVertexAttrib4Nubv" )
  934.         setGLEXT( glVertexAttrib4Nuiv,        "glVertexAttrib4Nuiv" )
  935.         setGLEXT( glVertexAttrib4Nusv,        "glVertexAttrib4Nusv" )
  936.         setGLEXT( glVertexAttrib4bv,          "glVertexAttrib4bv" )
  937.         setGLEXT( glVertexAttrib4d,           "glVertexAttrib4d" )
  938.         setGLEXT( glVertexAttrib4dv,          "glVertexAttrib4dv" )
  939.         setGLEXT( glVertexAttrib4f,           "glVertexAttrib4f" )
  940.         setGLEXT( glVertexAttrib4fv,          "glVertexAttrib4fv" )
  941.         setGLEXT( glVertexAttrib4iv,          "glVertexAttrib4iv" )
  942.         setGLEXT( glVertexAttrib4s,           "glVertexAttrib4s" )
  943.         setGLEXT( glVertexAttrib4sv,          "glVertexAttrib4sv" )
  944.         setGLEXT( glVertexAttrib4ubv,         "glVertexAttrib4ubv" )
  945.         setGLEXT( glVertexAttrib4uiv,         "glVertexAttrib4Nusv" )
  946.         setGLEXT( glVertexAttrib4usv,         "glVertexAttrib4usv" )
  947.         setGLEXT( glVertexAttribPointer,      "glVertexAttribPointer" )
  948.     CompilerEndIf
  949.    
  950.     ; *++++ OPENGL 2.1 ++++*
  951.     CompilerIf #ENABLEGL2_1
  952.         setGLEXT( glUniformMatrix2x3fv,      "glUniformMatrix2x3fv" )
  953.         setGLEXT( glUniformMatrix3x2fv,      "glUniformMatrix3x2fv" )
  954.         setGLEXT( glUniformMatrix2x4fv,      "glUniformMatrix2x4fv" )
  955.         setGLEXT( glUniformMatrix4x2fv,      "glUniformMatrix4x2fv" )
  956.         setGLEXT( glUniformMatrix3x4fv,      "glUniformMatrix3x4fv" )
  957.         setGLEXT( glUniformMatrix4x3fv,      "glUniformMatrix4x3fv" )
  958.     CompilerEndIf
  959.    
  960.     ; *++++ OPENGL 3.0 ++++*
  961.     CompilerIf #ENABLEGL3_0
  962.         setGLEXT( glColorMaski,                     "glColorMaski" )
  963.         setGLEXT( glGetBooleani_v,                  "glGetBooleani_v" )
  964.         setGLEXT( glGetIntegeri_v,                  "glGetIntegeri_v" )
  965.         setGLEXT( glEnablei,                        "glEnablei" )
  966.         setGLEXT( glDisablei,                       "glDisablei" )
  967.         setGLEXT( glIsEnabledi,                     "glIsEnabledi" )
  968.         setGLEXT( glBeginTransformFeedback,         "glBeginTransformFeedback" )
  969.         setGLEXT( glEndTransformFeedback,           "glEndTransformFeedback" )
  970.         setGLEXT( glBindBufferRange,                "glBindBufferRange" )
  971.         setGLEXT( glBindBufferBase,                 "glBindBufferBase" )
  972.         setGLEXT( glTransformFeedbackVaryings,      "glTransformFeedbackVaryings" )
  973.         setGLEXT( glGetTransformFeedbackVarying,    "glGetTransformFeedbackVarying" )
  974.         setGLEXT( glClampColor,                     "glClampColor" )
  975.         setGLEXT( glBeginConditionalRender,         "glBeginConditionalRender" )
  976.         setGLEXT( glEndConditionalRender,           "glEndConditionalRender" )
  977.         setGLEXT( glVertexAttribIPointer,           "glVertexAttribIPointer" )
  978.         setGLEXT( glGetVertexAttribIiv,             "glGetVertexAttribIiv" )
  979.         setGLEXT( glGetVertexAttribIuiv,            "glGetVertexAttribIuiv" )
  980.         setGLEXT( glVertexAttribI1i,                "glVertexAttribI1i" )
  981.         setGLEXT( glVertexAttribI2i,                "glVertexAttribI2i" )
  982.         setGLEXT( glVertexAttribI3i,                "glVertexAttribI3i" )
  983.         setGLEXT( glVertexAttribI4i,                "glVertexAttribI4i" )
  984.         setGLEXT( glVertexAttribI1ui,               "glVertexAttribI1ui" )
  985.         setGLEXT( glVertexAttribI2ui,               "glVertexAttribI2ui" )
  986.         setGLEXT( glVertexAttribI3ui,               "glVertexAttribI3ui" )
  987.         setGLEXT( glVertexAttribI4ui,               "glVertexAttribI4ui" )
  988.         setGLEXT( glVertexAttribI1iv,               "glVertexAttribI1iv" )
  989.         setGLEXT( glVertexAttribI2iv,               "glVertexAttribI2iv" )
  990.         setGLEXT( glVertexAttribI3iv,               "glVertexAttribI3iv" )
  991.         setGLEXT( glVertexAttribI4iv,               "glVertexAttribI4iv" )
  992.         setGLEXT( glVertexAttribI1uiv,              "glVertexAttribI1uiv" )
  993.         setGLEXT( glVertexAttribI2uiv,              "glVertexAttribI2uiv" )
  994.         setGLEXT( glVertexAttribI3uiv,              "glVertexAttribI3uiv" )
  995.         setGLEXT( glVertexAttribI4uiv,              "glVertexAttribI4uiv" )
  996.         setGLEXT( glVertexAttribI4bv,               "glVertexAttribI4bv" )
  997.         setGLEXT( glVertexAttribI4sv,               "glVertexAttribI4sv" )
  998.         setGLEXT( glVertexAttribI4ubv,              "glVertexAttribI4ubv" )
  999.         setGLEXT( glVertexAttribI4usv,              "glVertexAttribI4usv" )
  1000.         setGLEXT( glGetUniformuiv,                  "glGetUniformuiv" )
  1001.         setGLEXT( glBindFragDataLocation,           "glBindFragDataLocation" )
  1002.         setGLEXT( glGetFragDataLocation,            "glGetFragDataLocation" )
  1003.         setGLEXT( glUniform1ui,                     "glUniform1ui" )
  1004.         setGLEXT( glUniform2ui,                     "glUniform2ui" )
  1005.         setGLEXT( glUniform3ui,                     "glUniform3ui" )
  1006.         setGLEXT( glUniform4ui,                     "glUniform4ui" )
  1007.         setGLEXT( glUniform1uiv,                    "glUniform1uiv" )
  1008.         setGLEXT( glUniform2uiv,                    "glUniform2uiv" )
  1009.         setGLEXT( glUniform3uiv,                    "glUniform3uiv" )
  1010.         setGLEXT( glUniform4uiv,                    "glUniform4uiv" )
  1011.         setGLEXT( glTexParameterIiv,                "glTexParameterIiv" )
  1012.         setGLEXT( glTexParameterIuiv,               "glTexParameterIuiv" )
  1013.         setGLEXT( glGetTexParameterIiv,             "glGetTexParameterIiv" )
  1014.         setGLEXT( glGetTexParameterIuiv,            "glGetTexParameterIuiv" )
  1015.         setGLEXT( glClearBufferiv,                  "glClearBufferiv" )
  1016.         setGLEXT( glClearBufferuiv,                 "glClearBufferuiv" )
  1017.         setGLEXT( glClearBufferfv,                  "glClearBufferfv" )
  1018.         setGLEXT( glClearBufferfi,                  "glClearBufferfi" )
  1019.         setGLEXT( glGetStringi_,                     "glGetStringi" )
  1020.     CompilerEndIf
  1021.    
  1022.     ; *++++ OPENGL 3.1 ++++*
  1023.     CompilerIf #ENABLEGL3_1
  1024.         setGLEXT( glDrawArraysInstanced,    "glDrawArraysInstanced" )
  1025.         setGLEXT( glDrawElementsInstanced,  "glDrawElementsInstanced" )
  1026.         setGLEXT( glTexBuffer,              "glTexBuffer" )
  1027.         setGLEXT( glPrimitiveRestartIndex,  "glPrimitiveRestartIndex" )
  1028.     CompilerEndIf
  1029.    
  1030.     ; *++++ OPENGL 3.2 ++++*
  1031.     CompilerIf #ENABLEGL3_2
  1032.         setGLEXT( glGetInteger64i_v,        "glGetInteger64i_v" )
  1033.         setGLEXT( glGetBufferParameteri64v, "glGetBufferParameteri64v" )
  1034.         setGLEXT( glFramebufferTexture,     "glFramebufferTexture" )
  1035.     CompilerEndIf
  1036.    
  1037.     ; *++++ OPENGL 3.2 ++++*
  1038.     CompilerIf #ENABLEGL3_3
  1039.         setGLEXT( glVertexAttribDivisor,    "glVertexAttribDivisor" )  
  1040.     CompilerEndIf
  1041.    
  1042.     ; *++++ OPENGL Misc ++++*
  1043.     CompilerIf #ENABLEGLMISC
  1044.         setGLEXT( glIsRenderbuffer,                       "glIsRenderbuffer" )
  1045.         setGLEXT( glBindRenderbuffer,                     "glBindRenderbuffer" )
  1046.         setGLEXT( glDeleteRenderbuffers,                  "glDeleteRenderbuffers" )
  1047.         setGLEXT( glGenRenderbuffers,                     "glGenRenderbuffers" )
  1048.         setGLEXT( glRenderbufferStorage,                  "glRenderbufferStorage" )
  1049.         setGLEXT( glGetRenderbufferParameteriv,           "glGetRenderbufferParameteriv" )
  1050.         setGLEXT( glIsFramebuffer,                        "glIsFramebuffer" )
  1051.         setGLEXT( glBindFramebuffer,                      "glBindFramebuffer" )
  1052.         setGLEXT( glDeleteFramebuffers,                   "glDeleteFramebuffers" )
  1053.         setGLEXT( glGenFramebuffers,                      "glGenFramebuffers" )
  1054.         setGLEXT( glCheckFramebufferStatus,               "glCheckFramebufferStatus" )
  1055.         setGLEXT( glFramebufferTexture1D,                 "glFramebufferTexture1D" )
  1056.         setGLEXT( glFramebufferTexture2D,                 "glFramebufferTexture2D" )
  1057.         setGLEXT( glFramebufferTexture3D,                 "glFramebufferTexture3D" )
  1058.         setGLEXT( glFramebufferRenderbuffer,              "glFramebufferRenderbuffer" )
  1059.         setGLEXT( glGetFramebufferAttachmentParameteriv,  "glGetFramebufferAttachmentParameteriv" )
  1060.         setGLEXT( glGenerateMipmap,                       "glGenerateMipmap" )
  1061.         setGLEXT( glBlitFramebuffer,                      "glBlitFramebuffer" )
  1062.         setGLEXT( glRenderbufferStorageMultisample,       "glRenderbufferStorageMultisample" )
  1063.         setGLEXT( glFramebufferTextureLayer,              "glFramebufferTextureLayer" )
  1064.     CompilerEndIf
  1065.    
  1066.     LogTXT("OpenGL Extensions Loaded"+#CRLF$)
  1067. EndProcedure
  1068.  
  1069. Procedure initGLBase()
  1070.     Define.i parametercounter
  1071.    
  1072.     traceFunction("initGLBase()")
  1073.    
  1074.     CompilerIf Subsystem("OpenGL") = #False
  1075.         Debug "You must use OpenGL as subsystem !!!"
  1076.         End
  1077.     CompilerEndIf
  1078.    
  1079.     If Not InitSprite()
  1080.         Debug "initsprite fail"
  1081.         End
  1082.     EndIf
  1083.    
  1084.     ;Parse launch parameters
  1085.     For parametercounter = 0 To CountProgramParameters()-1
  1086.         If ProgramParameter(parametercounter) = "-eraselog" ; erase the log file
  1087.             DeleteFile(#LOG_FILE)
  1088.         EndIf
  1089.     Next parametercounter
  1090. EndProcedure
  1091.  
  1092. Procedure.i openGLWindow(posX.i, posY.i, width.i, height.i, title.s)
  1093.    
  1094.     Define whandle.i
  1095.     Define numofextensions.i
  1096.     Define counter.i
  1097.    
  1098.     traceFunction("openGLWindow()")
  1099.    
  1100.     initGLBase()
  1101.    
  1102.     LogTXT("[ "+title+" ] Start")
  1103.     LogTXT("Build on "+FormatDate("%dd/%mm/%yyyy - %hh:%ii:%ss", #PB_Compiler_Date))
  1104.     LogTXT(#CRLF$)
  1105.    
  1106.     whandle = OpenWindow( 0, posX,posY, width, height, title, #PB_Window_SystemMenu | #PB_Window_SizeGadget )
  1107.    
  1108.     If Not whandle
  1109.         Debug "openwindow fail"
  1110.         End
  1111.     EndIf
  1112.    
  1113.     If Not OpenWindowedScreen( WindowID(0), 0, 0, width, height, 1, 0, 0 )
  1114.         Debug "openwindowedscreen fail"
  1115.         End
  1116.     EndIf
  1117.    
  1118.     initGLFunctions()
  1119.    
  1120.     LogTXT("--- OpenGL Infos:")
  1121.     LogTXT("OpenGL Vendor: "    +#TAB$+#TAB$+   glGetString( #GL_VENDOR ) )
  1122.     LogTXT("OpenGL Renderer: "  +#TAB$+         glGetString( #GL_RENDERER ) )
  1123.     LogTXT("OpenGL Version: "   +#TAB$+         glGetString( #GL_VERSION ) )
  1124.     LogTXT("OpenGL Shader: "    +#TAB$+#TAB$+   glGetString( #GL_SHADING_LANGUAGE_VERSION) )
  1125.     LogTXT(#CRLF$)
  1126.     LogTXT("--- OpenGL Extensions: ")
  1127.    
  1128.     glGetIntegerv(#GL_NUM_EXTENSIONS ,@numofextensions )
  1129.    
  1130.     For counter = 0 To numofextensions-1
  1131.         LogTXT(glGetStringi(#GL_EXTENSIONS, counter))
  1132.     Next counter
  1133.    
  1134.     LogTXT(#CRLF$)
  1135.    
  1136.     ProcedureReturn whandle
  1137. EndProcedure
  1138.  
  1139. Procedure.i loadShader(type.l, source.s, sourcetype.b=0)
  1140.     Define sourcestringbuffer.s
  1141.     Define logsize.i
  1142.     Define *logbuff
  1143.     Define id.i
  1144.     Define pbuff.l
  1145.     Define sourcelen.i
  1146.    
  1147.     traceFunction("loadShader()")
  1148.  
  1149.     id = glCreateShader(type)
  1150.    
  1151.     If sourcetype
  1152.         If ReadFile(0, source)
  1153.             While Eof(0) = 0
  1154.                 sourcestringbuffer+ReadString(0)+#CRLF$
  1155.             Wend
  1156.             CloseFile(0)
  1157.         Else
  1158.             Debug "shader source file error"
  1159.         EndIf
  1160.        
  1161.         ;sourcelen=Len(sourcestringbuffer)
  1162.         pbuff=@sourcestringbuffer
  1163.        
  1164.         glShaderSource(id, 1, @pbuff, #Null)
  1165.     Else
  1166.         pbuff=@source
  1167.         glShaderSource(id, 1, @pbuff, #Null)
  1168.     EndIf
  1169.    
  1170.     glCompileShader(id)
  1171.     glGetShaderiv(id, #GL_INFO_LOG_LENGTH, @logsize)
  1172.    
  1173.     ;write to the log file the compilation log of the shader
  1174.     If logsize > 0
  1175.         *logbuff = AllocateMemory(logsize)
  1176.         glGetShaderInfoLog(id, logsize, @logsize, *logbuff)
  1177.        
  1178.         If sourcetype
  1179.             LogTXT("Shader ("+source+") debug log: "+ PeekS(*logbuff) )
  1180.         Else
  1181.             LogTXT("Shader (*MEMORY*) Debug log: "+ PeekS(*logbuff) )
  1182.         EndIf
  1183.        
  1184.         FreeMemory(*logbuff)
  1185.     EndIf
  1186.    
  1187.     ProcedureReturn id
  1188. EndProcedure
  1189.  
  1190. Procedure.i createProgram( vertexshaderID.i, fragmentshaderID.i )
  1191.     Define progamID.i
  1192.     Define logsize.i
  1193.     Define *logbuff
  1194.    
  1195.     traceFunction("createProgram()")
  1196.    
  1197.     progamID = glCreateProgram()
  1198.    
  1199.     glAttachShader(progamID, vertexshaderID)
  1200.     glAttachShader(progamID, fragmentshaderID)
  1201.    
  1202.     glLinkProgram(progamID)
  1203.    
  1204.     glGetProgramiv(progamID, #GL_INFO_LOG_LENGTH, @logsize)
  1205.    
  1206.     ;write to the log file the compilation log of the shader
  1207.     If logsize > 0
  1208.         *logbuff = AllocateMemory(logsize)
  1209.         glGetProgramInfoLog(progamID, logsize, @logsize, *logbuff)
  1210.         LogTXT("Program debug log: "+ PeekS(*logbuff) )
  1211.         FreeMemory(*logbuff)
  1212.     EndIf
  1213.    
  1214.     ProcedureReturn progamID
  1215. EndProcedure
  1216.  
  1217. Procedure.i createProgramFast(vertex_shader.s, fragment_shader.s, sourcetype.b=0)
  1218.     Define vertID.i
  1219.     Define fragID.i
  1220.     Define programID.i
  1221.    
  1222.     traceFunction("createProgramFast()")
  1223.  
  1224.     vertID      = loadShader( #GL_VERTEX_SHADER, vertex_shader,sourcetype )
  1225.     fragID      = loadShader( #GL_FRAGMENT_SHADER, fragment_shader,sourcetype )
  1226.    
  1227.     programID   = createProgram( vertID, fragID )
  1228.    
  1229.     glDeleteShader( vertID )
  1230.     glDeleteShader( fragID )
  1231.    
  1232.     ProcedureReturn programID
  1233. EndProcedure
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement