PageRenderTime 548ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 3ms

/packages/opengl/src/glext.pp

http://github.com/graemeg/freepascal
Puppet | 11391 lines | 10093 code | 1298 blank | 0 comment | 1971 complexity | 8408ddad5ba60ae072630bd7ffff1a8a MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, LGPL-2.1, LGPL-3.0, BSD-3-Clause
  1. {
  2. Adaption of the delphi3d.net OpenGL units to FreePascal
  3. Sebastian Guenther (sg@freepascal.org) in 2002
  4. These units are free to use
  5. }
  6. {$MACRO ON}
  7. {$MODE Delphi}
  8. {$IFDEF Windows}
  9. {$DEFINE extdecl:=stdcall }
  10. {$ELSE}
  11. {$DEFINE extdecl:=cdecl }
  12. {$ENDIF}
  13. unit GLext;
  14. (**************************************************
  15. * OpenGL extension loading library *
  16. * Generated by MetaGLext, written by Tom Nuydens *
  17. * (tom@delphi3d.net -- http://www.delphi3d.net *
  18. **************************************************)
  19. //*** Generated on 10/11/2002
  20. interface
  21. uses
  22. SysUtils,
  23. {$IFDEF Windows}
  24. Windows,
  25. {$ELSE}
  26. dynlibs,
  27. {$ENDIF}
  28. GL;
  29. {$IFDEF Windows}
  30. { Declared in Windows unit as well in FPC; but declared here as well, to be
  31. fully compatible to upstream version - sg }
  32. function wglGetProcAddress(proc: PChar): Pointer; extdecl; external 'OpenGL32.dll';
  33. {$ELSE}
  34. function wglGetProcAddress(proc: PChar): Pointer;
  35. {$ENDIF}
  36. // Test if the given extension name is present in the given extension string.
  37. function glext_ExtensionSupported(const extension: String; const searchIn: String): Boolean;
  38. // Load the extension with the given name.
  39. function glext_LoadExtension(ext: String): Boolean;
  40. type
  41. GLcharARB = Char;
  42. TGLcharARB = GLcharARB;
  43. PGLcharARB = ^GLcharARB;
  44. PPGLchar = ^PGLchar;
  45. {$ifdef DARWIN}
  46. GLHandleARB = Pointer; // defined as void * in OpenGL.framework/glext.h
  47. {$else}
  48. GLhandleARB = Cardinal;
  49. {$endif}
  50. TGLhandleARB = GLhandleARB;
  51. PGLhandleARB = ^GLhandleARB;
  52. GLintptr = PtrInt;
  53. TGLintptr = GLintptr;
  54. PGLintptr = ^GLintptr;
  55. GLsizeiptr = PtrInt;
  56. TGLsizeiptr = GLsizeiptr;
  57. PGLsizeiptr = ^GLsizeiptr;
  58. GLchar = Char;
  59. TGLchar = GLchar;
  60. PGLchar = Pchar;
  61. GLint64 = Int64;
  62. TGLint64 = GLint64;
  63. PGLint64 = ^GLint64;
  64. GLuint64 = QWord;
  65. TGLuint64 = GLuint64;
  66. PGLuint64 = ^GLuint64;
  67. //***** GL_version_1_2 *****//
  68. const
  69. GL_UNSIGNED_BYTE_3_3_2 = $8032;
  70. GL_UNSIGNED_SHORT_4_4_4_4 = $8033;
  71. GL_UNSIGNED_SHORT_5_5_5_1 = $8034;
  72. GL_UNSIGNED_INT_8_8_8_8 = $8035;
  73. GL_UNSIGNED_INT_10_10_10_2 = $8036;
  74. GL_RESCALE_NORMAL = $803A;
  75. GL_UNSIGNED_BYTE_2_3_3_REV = $8362;
  76. GL_UNSIGNED_SHORT_5_6_5 = $8363;
  77. GL_UNSIGNED_SHORT_5_6_5_REV = $8364;
  78. GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365;
  79. GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366;
  80. GL_UNSIGNED_INT_8_8_8_8_REV = $8367;
  81. GL_UNSIGNED_INT_2_10_10_10_REV = $8368;
  82. GL_BGR = $80E0;
  83. GL_BGRA = $80E1;
  84. GL_MAX_ELEMENTS_VERTICES = $80E8;
  85. GL_MAX_ELEMENTS_INDICES = $80E9;
  86. GL_CLAMP_TO_EDGE = $812F;
  87. GL_TEXTURE_MIN_LOD = $813A;
  88. GL_TEXTURE_MAX_LOD = $813B;
  89. GL_TEXTURE_BASE_LEVEL = $813C;
  90. GL_TEXTURE_MAX_LEVEL = $813D;
  91. GL_LIGHT_MODEL_COLOR_CONTROL = $81F8;
  92. GL_SINGLE_COLOR = $81F9;
  93. GL_SEPARATE_SPECULAR_COLOR = $81FA;
  94. GL_SMOOTH_POINT_SIZE_RANGE = $0B12;
  95. GL_SMOOTH_POINT_SIZE_GRANULARITY = $0B13;
  96. GL_SMOOTH_LINE_WIDTH_RANGE = $0B22;
  97. GL_SMOOTH_LINE_WIDTH_GRANULARITY = $0B23;
  98. GL_ALIASED_POINT_SIZE_RANGE = $846D;
  99. GL_ALIASED_LINE_WIDTH_RANGE = $846E;
  100. GL_PACK_SKIP_IMAGES = $806B;
  101. GL_PACK_IMAGE_HEIGHT = $806C;
  102. GL_UNPACK_SKIP_IMAGES = $806D;
  103. GL_UNPACK_IMAGE_HEIGHT = $806E;
  104. GL_TEXTURE_3D = $806F;
  105. GL_PROXY_TEXTURE_3D = $8070;
  106. GL_TEXTURE_DEPTH = $8071;
  107. GL_TEXTURE_WRAP_R = $8072;
  108. GL_MAX_3D_TEXTURE_SIZE = $8073;
  109. var
  110. glBlendColor: procedure(red: GLclampf; green: GLclampf; blue: GLclampf; alpha: GLclampf); extdecl;
  111. glBlendEquation: procedure(mode: GLenum); extdecl;
  112. glDrawRangeElements: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei; _type: GLenum; const indices: PGLvoid); extdecl;
  113. glColorTable: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const table: PGLvoid); extdecl;
  114. glColorTableParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  115. glColorTableParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  116. glCopyColorTable: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  117. glGetColorTable: procedure(target: GLenum; format: GLenum; _type: GLenum; table: PGLvoid); extdecl;
  118. glGetColorTableParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  119. glGetColorTableParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  120. glColorSubTable: procedure(target: GLenum; start: GLsizei; count: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  121. glCopyColorSubTable: procedure(target: GLenum; start: GLsizei; x: GLint; y: GLint; width: GLsizei); extdecl;
  122. glConvolutionFilter1D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  123. glConvolutionFilter2D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  124. glConvolutionParameterf: procedure(target: GLenum; pname: GLenum; params: GLfloat); extdecl;
  125. glConvolutionParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  126. glConvolutionParameteri: procedure(target: GLenum; pname: GLenum; params: GLint); extdecl;
  127. glConvolutionParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  128. glCopyConvolutionFilter1D: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  129. glCopyConvolutionFilter2D: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  130. glGetConvolutionFilter: procedure(target: GLenum; format: GLenum; _type: GLenum; image: PGLvoid); extdecl;
  131. glGetConvolutionParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  132. glGetConvolutionParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  133. glGetSeparableFilter: procedure(target: GLenum; format: GLenum; _type: GLenum; row: PGLvoid; column: PGLvoid; span: PGLvoid); extdecl;
  134. glSeparableFilter2D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const row: PGLvoid; const column: PGLvoid); extdecl;
  135. glGetHistogram: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  136. glGetHistogramParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  137. glGetHistogramParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  138. glGetMinmax: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  139. glGetMinmaxParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  140. glGetMinmaxParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  141. glHistogram: procedure(target: GLenum; width: GLsizei; internalformat: GLenum; sink: GLboolean); extdecl;
  142. glMinmax: procedure(target: GLenum; internalformat: GLenum; sink: GLboolean); extdecl;
  143. glResetHistogram: procedure(target: GLenum); extdecl;
  144. glResetMinmax: procedure(target: GLenum); extdecl;
  145. glTexImage3D: procedure(target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  146. glTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  147. glCopyTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  148. function Load_GL_version_1_2: Boolean;
  149. //***** GL_ARB_imaging *****//
  150. const
  151. GL_CONSTANT_COLOR = $8001;
  152. GL_ONE_MINUS_CONSTANT_COLOR = $8002;
  153. GL_CONSTANT_ALPHA = $8003;
  154. GL_ONE_MINUS_CONSTANT_ALPHA = $8004;
  155. GL_BLEND_COLOR = $8005;
  156. GL_FUNC_ADD = $8006;
  157. GL_MIN = $8007;
  158. GL_MAX = $8008;
  159. GL_BLEND_EQUATION = $8009;
  160. GL_FUNC_SUBTRACT = $800A;
  161. GL_FUNC_REVERSE_SUBTRACT = $800B;
  162. GL_CONVOLUTION_1D = $8010;
  163. GL_CONVOLUTION_2D = $8011;
  164. GL_SEPARABLE_2D = $8012;
  165. GL_CONVOLUTION_BORDER_MODE = $8013;
  166. GL_CONVOLUTION_FILTER_SCALE = $8014;
  167. GL_CONVOLUTION_FILTER_BIAS = $8015;
  168. GL_REDUCE = $8016;
  169. GL_CONVOLUTION_FORMAT = $8017;
  170. GL_CONVOLUTION_WIDTH = $8018;
  171. GL_CONVOLUTION_HEIGHT = $8019;
  172. GL_MAX_CONVOLUTION_WIDTH = $801A;
  173. GL_MAX_CONVOLUTION_HEIGHT = $801B;
  174. GL_POST_CONVOLUTION_RED_SCALE = $801C;
  175. GL_POST_CONVOLUTION_GREEN_SCALE = $801D;
  176. GL_POST_CONVOLUTION_BLUE_SCALE = $801E;
  177. GL_POST_CONVOLUTION_ALPHA_SCALE = $801F;
  178. GL_POST_CONVOLUTION_RED_BIAS = $8020;
  179. GL_POST_CONVOLUTION_GREEN_BIAS = $8021;
  180. GL_POST_CONVOLUTION_BLUE_BIAS = $8022;
  181. GL_POST_CONVOLUTION_ALPHA_BIAS = $8023;
  182. GL_HISTOGRAM = $8024;
  183. GL_PROXY_HISTOGRAM = $8025;
  184. GL_HISTOGRAM_WIDTH = $8026;
  185. GL_HISTOGRAM_FORMAT = $8027;
  186. GL_HISTOGRAM_RED_SIZE = $8028;
  187. GL_HISTOGRAM_GREEN_SIZE = $8029;
  188. GL_HISTOGRAM_BLUE_SIZE = $802A;
  189. GL_HISTOGRAM_ALPHA_SIZE = $802B;
  190. GL_HISTOGRAM_LUMINANCE_SIZE = $802C;
  191. GL_HISTOGRAM_SINK = $802D;
  192. GL_MINMAX = $802E;
  193. GL_MINMAX_FORMAT = $802F;
  194. GL_MINMAX_SINK = $8030;
  195. GL_TABLE_TOO_LARGE = $8031;
  196. GL_COLOR_MATRIX = $80B1;
  197. GL_COLOR_MATRIX_STACK_DEPTH = $80B2;
  198. GL_MAX_COLOR_MATRIX_STACK_DEPTH = $80B3;
  199. GL_POST_COLOR_MATRIX_RED_SCALE = $80B4;
  200. GL_POST_COLOR_MATRIX_GREEN_SCALE = $80B5;
  201. GL_POST_COLOR_MATRIX_BLUE_SCALE = $80B6;
  202. GL_POST_COLOR_MATRIX_ALPHA_SCALE = $80B7;
  203. GL_POST_COLOR_MATRIX_RED_BIAS = $80B8;
  204. GL_POST_COLOR_MATRIX_GREEN_BIAS = $80B9;
  205. GL_POST_COLOR_MATRIX_BLUE_BIAS = $80BA;
  206. GL_POST_COLOR_MATIX_ALPHA_BIAS = $80BB;
  207. GL_COLOR_TABLE = $80D0;
  208. GL_POST_CONVOLUTION_COLOR_TABLE = $80D1;
  209. GL_POST_COLOR_MATRIX_COLOR_TABLE = $80D2;
  210. GL_PROXY_COLOR_TABLE = $80D3;
  211. GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = $80D4;
  212. GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = $80D5;
  213. GL_COLOR_TABLE_SCALE = $80D6;
  214. GL_COLOR_TABLE_BIAS = $80D7;
  215. GL_COLOR_TABLE_FORMAT = $80D8;
  216. GL_COLOR_TABLE_WIDTH = $80D9;
  217. GL_COLOR_TABLE_RED_SIZE = $80DA;
  218. GL_COLOR_TABLE_GREEN_SIZE = $80DB;
  219. GL_COLOR_TABLE_BLUE_SIZE = $80DC;
  220. GL_COLOR_TABLE_ALPHA_SIZE = $80DD;
  221. GL_COLOR_TABLE_LUMINANCE_SIZE = $80DE;
  222. GL_COLOR_TABLE_INTENSITY_SIZE = $80DF;
  223. GL_IGNORE_BORDER = $8150;
  224. GL_CONSTANT_BORDER = $8151;
  225. GL_WRAP_BORDER = $8152;
  226. GL_REPLICATE_BORDER = $8153;
  227. GL_CONVOLUTION_BORDER_COLOR = $8154;
  228. function Load_GL_ARB_imaging: Boolean;
  229. //***** GL_version_1_3 *****//
  230. const
  231. GL_TEXTURE0 = $84C0;
  232. GL_TEXTURE1 = $84C1;
  233. GL_TEXTURE2 = $84C2;
  234. GL_TEXTURE3 = $84C3;
  235. GL_TEXTURE4 = $84C4;
  236. GL_TEXTURE5 = $84C5;
  237. GL_TEXTURE6 = $84C6;
  238. GL_TEXTURE7 = $84C7;
  239. GL_TEXTURE8 = $84C8;
  240. GL_TEXTURE9 = $84C9;
  241. GL_TEXTURE10 = $84CA;
  242. GL_TEXTURE11 = $84CB;
  243. GL_TEXTURE12 = $84CC;
  244. GL_TEXTURE13 = $84CD;
  245. GL_TEXTURE14 = $84CE;
  246. GL_TEXTURE15 = $84CF;
  247. GL_TEXTURE16 = $84D0;
  248. GL_TEXTURE17 = $84D1;
  249. GL_TEXTURE18 = $84D2;
  250. GL_TEXTURE19 = $84D3;
  251. GL_TEXTURE20 = $84D4;
  252. GL_TEXTURE21 = $84D5;
  253. GL_TEXTURE22 = $84D6;
  254. GL_TEXTURE23 = $84D7;
  255. GL_TEXTURE24 = $84D8;
  256. GL_TEXTURE25 = $84D9;
  257. GL_TEXTURE26 = $84DA;
  258. GL_TEXTURE27 = $84DB;
  259. GL_TEXTURE28 = $84DC;
  260. GL_TEXTURE29 = $84DD;
  261. GL_TEXTURE30 = $84DE;
  262. GL_TEXTURE31 = $84DF;
  263. GL_ACTIVE_TEXTURE = $84E0;
  264. GL_CLIENT_ACTIVE_TEXTURE = $84E1;
  265. GL_MAX_TEXTURE_UNITS = $84E2;
  266. GL_TRANSPOSE_MODELVIEW_MATRIX = $84E3;
  267. GL_TRANSPOSE_PROJECTION_MATRIX = $84E4;
  268. GL_TRANSPOSE_TEXTURE_MATRIX = $84E5;
  269. GL_TRANSPOSE_COLOR_MATRIX = $84E6;
  270. GL_MULTISAMPLE = $809D;
  271. GL_SAMPLE_ALPHA_TO_COVERAGE = $809E;
  272. GL_SAMPLE_ALPHA_TO_ONE = $809F;
  273. GL_SAMPLE_COVERAGE = $80A0;
  274. GL_SAMPLE_BUFFERS = $80A8;
  275. GL_SAMPLES = $80A9;
  276. GL_SAMPLE_COVERAGE_VALUE = $80AA;
  277. GL_SAMPLE_COVERAGE_INVERT = $80AB;
  278. GL_MULTISAMPLE_BIT = $20000000;
  279. GL_NORMAL_MAP = $8511;
  280. GL_REFLECTION_MAP = $8512;
  281. GL_TEXTURE_CUBE_MAP = $8513;
  282. GL_TEXTURE_BINDING_CUBE_MAP = $8514;
  283. GL_TEXTURE_CUBE_MAP_POSITIVE_X = $8515;
  284. GL_TEXTURE_CUBE_MAP_NEGATIVE_X = $8516;
  285. GL_TEXTURE_CUBE_MAP_POSITIVE_Y = $8517;
  286. GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = $8518;
  287. GL_TEXTURE_CUBE_MAP_POSITIVE_Z = $8519;
  288. GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = $851A;
  289. GL_PROXY_TEXTURE_CUBE_MAP = $851B;
  290. GL_MAX_CUBE_MAP_TEXTURE_SIZE = $851C;
  291. GL_COMPRESSED_ALPHA = $84E9;
  292. GL_COMPRESSED_LUMINANCE = $84EA;
  293. GL_COMPRESSED_LUMINANCE_ALPHA = $84EB;
  294. GL_COMPRESSED_INTENSITY = $84EC;
  295. GL_COMPRESSED_RGB = $84ED;
  296. GL_COMPRESSED_RGBA = $84EE;
  297. GL_TEXTURE_COMPRESSION_HINT = $84EF;
  298. GL_TEXTURE_COMPRESSED_IMAGE_SIZE = $86A0;
  299. GL_TEXTURE_COMPRESSED = $86A1;
  300. GL_NUM_COMPRESSED_TEXTURE_FORMATS = $86A2;
  301. GL_COMPRESSED_TEXTURE_FORMATS = $86A3;
  302. GL_CLAMP_TO_BORDER = $812D;
  303. GL_CLAMP_TO_BORDER_SGIS = $812D;
  304. GL_COMBINE = $8570;
  305. GL_COMBINE_RGB = $8571;
  306. GL_COMBINE_ALPHA = $8572;
  307. GL_SOURCE0_RGB = $8580;
  308. GL_SOURCE1_RGB = $8581;
  309. GL_SOURCE2_RGB = $8582;
  310. GL_SOURCE0_ALPHA = $8588;
  311. GL_SOURCE1_ALPHA = $8589;
  312. GL_SOURCE2_ALPHA = $858A;
  313. GL_OPERAND0_RGB = $8590;
  314. GL_OPERAND1_RGB = $8591;
  315. GL_OPERAND2_RGB = $8592;
  316. GL_OPERAND0_ALPHA = $8598;
  317. GL_OPERAND1_ALPHA = $8599;
  318. GL_OPERAND2_ALPHA = $859A;
  319. GL_RGB_SCALE = $8573;
  320. GL_ADD_SIGNED = $8574;
  321. GL_INTERPOLATE = $8575;
  322. GL_SUBTRACT = $84E7;
  323. GL_CONSTANT = $8576;
  324. GL_PRIMARY_COLOR = $8577;
  325. GL_PREVIOUS = $8578;
  326. GL_DOT3_RGB = $86AE;
  327. GL_DOT3_RGBA = $86AF;
  328. var
  329. glActiveTexture: procedure(texture: GLenum); extdecl;
  330. glClientActiveTexture: procedure(texture: GLenum); extdecl;
  331. glMultiTexCoord1d: procedure(target: GLenum; s: GLdouble); extdecl;
  332. glMultiTexCoord1dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  333. glMultiTexCoord1f: procedure(target: GLenum; s: GLfloat); extdecl;
  334. glMultiTexCoord1fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  335. glMultiTexCoord1i: procedure(target: GLenum; s: GLint); extdecl;
  336. glMultiTexCoord1iv: procedure(target: GLenum; const v: PGLint); extdecl;
  337. glMultiTexCoord1s: procedure(target: GLenum; s: GLshort); extdecl;
  338. glMultiTexCoord1sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  339. glMultiTexCoord2d: procedure(target: GLenum; s: GLdouble; t: GLdouble); extdecl;
  340. glMultiTexCoord2dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  341. glMultiTexCoord2f: procedure(target: GLenum; s: GLfloat; t: GLfloat); extdecl;
  342. glMultiTexCoord2fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  343. glMultiTexCoord2i: procedure(target: GLenum; s: GLint; t: GLint); extdecl;
  344. glMultiTexCoord2iv: procedure(target: GLenum; const v: PGLint); extdecl;
  345. glMultiTexCoord2s: procedure(target: GLenum; s: GLshort; t: GLshort); extdecl;
  346. glMultiTexCoord2sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  347. glMultiTexCoord3d: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble); extdecl;
  348. glMultiTexCoord3dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  349. glMultiTexCoord3f: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat); extdecl;
  350. glMultiTexCoord3fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  351. glMultiTexCoord3i: procedure(target: GLenum; s: GLint; t: GLint; r: GLint); extdecl;
  352. glMultiTexCoord3iv: procedure(target: GLenum; const v: PGLint); extdecl;
  353. glMultiTexCoord3s: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort); extdecl;
  354. glMultiTexCoord3sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  355. glMultiTexCoord4d: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble); extdecl;
  356. glMultiTexCoord4dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  357. glMultiTexCoord4f: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); extdecl;
  358. glMultiTexCoord4fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  359. glMultiTexCoord4i: procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint); extdecl;
  360. glMultiTexCoord4iv: procedure(target: GLenum; const v: PGLint); extdecl;
  361. glMultiTexCoord4s: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort; q: GLshort); extdecl;
  362. glMultiTexCoord4sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  363. glLoadTransposeMatrixf: procedure(const m: PGLfloat); extdecl;
  364. glLoadTransposeMatrixd: procedure(const m: PGLdouble); extdecl;
  365. glMultTransposeMatrixf: procedure(const m: PGLfloat); extdecl;
  366. glMultTransposeMatrixd: procedure(const m: PGLdouble); extdecl;
  367. glSampleCoverage: procedure(value: GLclampf; invert: GLboolean); extdecl;
  368. glCompressedTexImage3D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  369. glCompressedTexImage2D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  370. glCompressedTexImage1D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  371. glCompressedTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  372. glCompressedTexSubImage2D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  373. glCompressedTexSubImage1D: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  374. glGetCompressedTexImage: procedure(target: GLenum; level: GLint; img: PGLvoid); extdecl;
  375. function Load_GL_version_1_3: Boolean;
  376. //***** GL_ARB_multitexture *****//
  377. const
  378. GL_TEXTURE0_ARB = $84C0;
  379. GL_TEXTURE1_ARB = $84C1;
  380. GL_TEXTURE2_ARB = $84C2;
  381. GL_TEXTURE3_ARB = $84C3;
  382. GL_TEXTURE4_ARB = $84C4;
  383. GL_TEXTURE5_ARB = $84C5;
  384. GL_TEXTURE6_ARB = $84C6;
  385. GL_TEXTURE7_ARB = $84C7;
  386. GL_TEXTURE8_ARB = $84C8;
  387. GL_TEXTURE9_ARB = $84C9;
  388. GL_TEXTURE10_ARB = $84CA;
  389. GL_TEXTURE11_ARB = $84CB;
  390. GL_TEXTURE12_ARB = $84CC;
  391. GL_TEXTURE13_ARB = $84CD;
  392. GL_TEXTURE14_ARB = $84CE;
  393. GL_TEXTURE15_ARB = $84CF;
  394. GL_TEXTURE16_ARB = $84D0;
  395. GL_TEXTURE17_ARB = $84D1;
  396. GL_TEXTURE18_ARB = $84D2;
  397. GL_TEXTURE19_ARB = $84D3;
  398. GL_TEXTURE20_ARB = $84D4;
  399. GL_TEXTURE21_ARB = $84D5;
  400. GL_TEXTURE22_ARB = $84D6;
  401. GL_TEXTURE23_ARB = $84D7;
  402. GL_TEXTURE24_ARB = $84D8;
  403. GL_TEXTURE25_ARB = $84D9;
  404. GL_TEXTURE26_ARB = $84DA;
  405. GL_TEXTURE27_ARB = $84DB;
  406. GL_TEXTURE28_ARB = $84DC;
  407. GL_TEXTURE29_ARB = $84DD;
  408. GL_TEXTURE30_ARB = $84DE;
  409. GL_TEXTURE31_ARB = $84DF;
  410. GL_ACTIVE_TEXTURE_ARB = $84E0;
  411. GL_CLIENT_ACTIVE_TEXTURE_ARB = $84E1;
  412. GL_MAX_TEXTURE_UNITS_ARB = $84E2;
  413. var
  414. glActiveTextureARB: procedure(texture: GLenum); extdecl;
  415. glClientActiveTextureARB: procedure(texture: GLenum); extdecl;
  416. glMultiTexCoord1dARB: procedure(target: GLenum; s: GLdouble); extdecl;
  417. glMultiTexCoord1dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  418. glMultiTexCoord1fARB: procedure(target: GLenum; s: GLfloat); extdecl;
  419. glMultiTexCoord1fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  420. glMultiTexCoord1iARB: procedure(target: GLenum; s: GLint); extdecl;
  421. glMultiTexCoord1ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  422. glMultiTexCoord1sARB: procedure(target: GLenum; s: GLshort); extdecl;
  423. glMultiTexCoord1svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  424. glMultiTexCoord2dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble); extdecl;
  425. glMultiTexCoord2dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  426. glMultiTexCoord2fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat); extdecl;
  427. glMultiTexCoord2fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  428. glMultiTexCoord2iARB: procedure(target: GLenum; s: GLint; t: GLint); extdecl;
  429. glMultiTexCoord2ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  430. glMultiTexCoord2sARB: procedure(target: GLenum; s: GLshort; t: GLshort); extdecl;
  431. glMultiTexCoord2svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  432. glMultiTexCoord3dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble); extdecl;
  433. glMultiTexCoord3dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  434. glMultiTexCoord3fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat); extdecl;
  435. glMultiTexCoord3fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  436. glMultiTexCoord3iARB: procedure(target: GLenum; s: GLint; t: GLint; r: GLint); extdecl;
  437. glMultiTexCoord3ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  438. glMultiTexCoord3sARB: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort); extdecl;
  439. glMultiTexCoord3svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  440. glMultiTexCoord4dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble); extdecl;
  441. glMultiTexCoord4dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  442. glMultiTexCoord4fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); extdecl;
  443. glMultiTexCoord4fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  444. glMultiTexCoord4iARB: procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint); extdecl;
  445. glMultiTexCoord4ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  446. glMultiTexCoord4sARB: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort; q: GLshort); extdecl;
  447. glMultiTexCoord4svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  448. function Load_GL_ARB_multitexture: Boolean;
  449. //***** GL_ARB_transpose_matrix *****//
  450. const
  451. GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = $84E3;
  452. GL_TRANSPOSE_PROJECTION_MATRIX_ARB = $84E4;
  453. GL_TRANSPOSE_TEXTURE_MATRIX_ARB = $84E5;
  454. GL_TRANSPOSE_COLOR_MATRIX_ARB = $84E6;
  455. var
  456. glLoadTransposeMatrixfARB: procedure(m: PGLfloat); extdecl;
  457. glLoadTransposeMatrixdARB: procedure(m: PGLdouble); extdecl;
  458. glMultTransposeMatrixfARB: procedure(m: PGLfloat); extdecl;
  459. glMultTransposeMatrixdARB: procedure(m: PGLdouble); extdecl;
  460. function Load_GL_ARB_transpose_matrix: Boolean;
  461. //***** GL_ARB_multisample *****//
  462. const
  463. WGL_SAMPLE_BUFFERS_ARB = $2041;
  464. WGL_SAMPLES_ARB = $2042;
  465. GL_MULTISAMPLE_ARB = $809D;
  466. GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = $809E;
  467. GL_SAMPLE_ALPHA_TO_ONE_ARB = $809F;
  468. GL_SAMPLE_COVERAGE_ARB = $80A0;
  469. GL_MULTISAMPLE_BIT_ARB = $20000000;
  470. GL_SAMPLE_BUFFERS_ARB = $80A8;
  471. GL_SAMPLES_ARB = $80A9;
  472. GL_SAMPLE_COVERAGE_VALUE_ARB = $80AA;
  473. GL_SAMPLE_COVERAGE_INVERT_ARB = $80AB;
  474. var
  475. glSampleCoverageARB: procedure(value: GLclampf; invert: GLboolean); extdecl;
  476. function Load_GL_ARB_multisample: Boolean;
  477. //***** GL_ARB_texture_env_add *****//
  478. function Load_GL_ARB_texture_env_add: Boolean;
  479. {$IFDEF Windows}
  480. //***** WGL_ARB_extensions_string *****//
  481. var
  482. wglGetExtensionsStringARB: function(hdc: HDC): Pchar; extdecl;
  483. function Load_WGL_ARB_extensions_string: Boolean;
  484. //***** WGL_ARB_buffer_region *****//
  485. const
  486. WGL_FRONT_COLOR_BUFFER_BIT_ARB = $0001;
  487. WGL_BACK_COLOR_BUFFER_BIT_ARB = $0002;
  488. WGL_DEPTH_BUFFER_BIT_ARB = $0004;
  489. WGL_STENCIL_BUFFER_BIT_ARB = $0008;
  490. var
  491. wglCreateBufferRegionARB: function(hDC: HDC; iLayerPlane: GLint; uType: GLuint): THandle; extdecl;
  492. wglDeleteBufferRegionARB: procedure(hRegion: THandle); extdecl;
  493. wglSaveBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint): BOOL; extdecl;
  494. wglRestoreBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint; xSrc: GLint; ySrc: GLint): BOOL; extdecl;
  495. function Load_WGL_ARB_buffer_region: Boolean;
  496. {$ENDIF}
  497. //***** GL_ARB_texture_cube_map *****//
  498. const
  499. GL_NORMAL_MAP_ARB = $8511;
  500. GL_REFLECTION_MAP_ARB = $8512;
  501. GL_TEXTURE_CUBE_MAP_ARB = $8513;
  502. GL_TEXTURE_BINDING_CUBE_MAP_ARB = $8514;
  503. GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $8515;
  504. GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $8516;
  505. GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $8517;
  506. GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $8518;
  507. GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $8519;
  508. GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $851A;
  509. GL_PROXY_TEXTURE_CUBE_MAP_ARB = $851B;
  510. GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = $851C;
  511. function Load_GL_ARB_texture_cube_map: Boolean;
  512. //***** GL_ARB_depth_texture *****//
  513. const
  514. GL_DEPTH_COMPONENT16_ARB = $81A5;
  515. GL_DEPTH_COMPONENT24_ARB = $81A6;
  516. GL_DEPTH_COMPONENT32_ARB = $81A7;
  517. GL_TEXTURE_DEPTH_SIZE_ARB = $884A;
  518. GL_DEPTH_TEXTURE_MODE_ARB = $884B;
  519. function Load_GL_ARB_depth_texture: Boolean;
  520. //***** GL_ARB_point_parameters *****//
  521. const
  522. GL_POINT_SIZE_MIN_ARB = $8126;
  523. GL_POINT_SIZE_MAX_ARB = $8127;
  524. GL_POINT_FADE_THRESHOLD_SIZE_ARB = $8128;
  525. GL_POINT_DISTANCE_ATTENUATION_ARB = $8129;
  526. var
  527. glPointParameterfARB: procedure(pname: GLenum; param: GLfloat); extdecl;
  528. glPointParameterfvARB: procedure(pname: GLenum; params: PGLfloat); extdecl;
  529. function Load_GL_ARB_point_parameters: Boolean;
  530. //***** GL_ARB_shadow *****//
  531. const
  532. GL_TEXTURE_COMPARE_MODE_ARB = $884C;
  533. GL_TEXTURE_COMPARE_FUNC_ARB = $884D;
  534. GL_COMPARE_R_TO_TEXTURE_ARB = $884E;
  535. function Load_GL_ARB_shadow: Boolean;
  536. //***** GL_ARB_shadow_ambient *****//
  537. const
  538. GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = $80BF;
  539. function Load_GL_ARB_shadow_ambient: Boolean;
  540. //***** GL_ARB_texture_border_clamp *****//
  541. const
  542. GL_CLAMP_TO_BORDER_ARB = $812D;
  543. function Load_GL_ARB_texture_border_clamp: Boolean;
  544. //***** GL_ARB_texture_compression *****//
  545. const
  546. GL_COMPRESSED_ALPHA_ARB = $84E9;
  547. GL_COMPRESSED_LUMINANCE_ARB = $84EA;
  548. GL_COMPRESSED_LUMINANCE_ALPHA_ARB = $84EB;
  549. GL_COMPRESSED_INTENSITY_ARB = $84EC;
  550. GL_COMPRESSED_RGB_ARB = $84ED;
  551. GL_COMPRESSED_RGBA_ARB = $84EE;
  552. GL_TEXTURE_COMPRESSION_HINT_ARB = $84EF;
  553. GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = $86A0;
  554. GL_TEXTURE_COMPRESSED_ARB = $86A1;
  555. GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = $86A2;
  556. GL_COMPRESSED_TEXTURE_FORMATS_ARB = $86A3;
  557. var
  558. glCompressedTexImage3DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  559. glCompressedTexImage2DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  560. glCompressedTexImage1DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  561. glCompressedTexSubImage3DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  562. glCompressedTexSubImage2DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  563. glCompressedTexSubImage1DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  564. glGetCompressedTexImageARB: procedure(target: GLenum; lod: GLint; img: PGLvoid); extdecl;
  565. function Load_GL_ARB_texture_compression: Boolean;
  566. //***** GL_ARB_texture_env_combine *****//
  567. const
  568. GL_COMBINE_ARB = $8570;
  569. GL_COMBINE_RGB_ARB = $8571;
  570. GL_COMBINE_ALPHA_ARB = $8572;
  571. GL_SOURCE0_RGB_ARB = $8580;
  572. GL_SOURCE1_RGB_ARB = $8581;
  573. GL_SOURCE2_RGB_ARB = $8582;
  574. GL_SOURCE0_ALPHA_ARB = $8588;
  575. GL_SOURCE1_ALPHA_ARB = $8589;
  576. GL_SOURCE2_ALPHA_ARB = $858A;
  577. GL_OPERAND0_RGB_ARB = $8590;
  578. GL_OPERAND1_RGB_ARB = $8591;
  579. GL_OPERAND2_RGB_ARB = $8592;
  580. GL_OPERAND0_ALPHA_ARB = $8598;
  581. GL_OPERAND1_ALPHA_ARB = $8599;
  582. GL_OPERAND2_ALPHA_ARB = $859A;
  583. GL_RGB_SCALE_ARB = $8573;
  584. GL_ADD_SIGNED_ARB = $8574;
  585. GL_INTERPOLATE_ARB = $8575;
  586. GL_SUBTRACT_ARB = $84E7;
  587. GL_CONSTANT_ARB = $8576;
  588. GL_PRIMARY_COLOR_ARB = $8577;
  589. GL_PREVIOUS_ARB = $8578;
  590. function Load_GL_ARB_texture_env_combine: Boolean;
  591. //***** GL_ARB_texture_env_crossbar *****//
  592. function Load_GL_ARB_texture_env_crossbar: Boolean;
  593. //***** GL_ARB_texture_env_dot3 *****//
  594. const
  595. GL_DOT3_RGB_ARB = $86AE;
  596. GL_DOT3_RGBA_ARB = $86AF;
  597. function Load_GL_ARB_texture_env_dot3: Boolean;
  598. //***** GL_ARB_texture_mirrored_repeat *****//
  599. const
  600. GL_MIRRORED_REPEAT_ARB = $8370;
  601. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  602. //***** GL_ARB_vertex_blend *****//
  603. const
  604. GL_MAX_VERTEX_UNITS_ARB = $86A4;
  605. GL_ACTIVE_VERTEX_UNITS_ARB = $86A5;
  606. GL_WEIGHT_SUM_UNITY_ARB = $86A6;
  607. GL_VERTEX_BLEND_ARB = $86A7;
  608. GL_MODELVIEW0_ARB = $1700;
  609. GL_MODELVIEW1_ARB = $850A;
  610. GL_MODELVIEW2_ARB = $8722;
  611. GL_MODELVIEW3_ARB = $8723;
  612. GL_MODELVIEW4_ARB = $8724;
  613. GL_MODELVIEW5_ARB = $8725;
  614. GL_MODELVIEW6_ARB = $8726;
  615. GL_MODELVIEW7_ARB = $8727;
  616. GL_MODELVIEW8_ARB = $8728;
  617. GL_MODELVIEW9_ARB = $8729;
  618. GL_MODELVIEW10_ARB = $872A;
  619. GL_MODELVIEW11_ARB = $872B;
  620. GL_MODELVIEW12_ARB = $872C;
  621. GL_MODELVIEW13_ARB = $872D;
  622. GL_MODELVIEW14_ARB = $872E;
  623. GL_MODELVIEW15_ARB = $872F;
  624. GL_MODELVIEW16_ARB = $8730;
  625. GL_MODELVIEW17_ARB = $8731;
  626. GL_MODELVIEW18_ARB = $8732;
  627. GL_MODELVIEW19_ARB = $8733;
  628. GL_MODELVIEW20_ARB = $8734;
  629. GL_MODELVIEW21_ARB = $8735;
  630. GL_MODELVIEW22_ARB = $8736;
  631. GL_MODELVIEW23_ARB = $8737;
  632. GL_MODELVIEW24_ARB = $8738;
  633. GL_MODELVIEW25_ARB = $8739;
  634. GL_MODELVIEW26_ARB = $873A;
  635. GL_MODELVIEW27_ARB = $873B;
  636. GL_MODELVIEW28_ARB = $873C;
  637. GL_MODELVIEW29_ARB = $873D;
  638. GL_MODELVIEW30_ARB = $873E;
  639. GL_MODELVIEW31_ARB = $873F;
  640. GL_CURRENT_WEIGHT_ARB = $86A8;
  641. GL_WEIGHT_ARRAY_TYPE_ARB = $86A9;
  642. GL_WEIGHT_ARRAY_STRIDE_ARB = $86AA;
  643. GL_WEIGHT_ARRAY_SIZE_ARB = $86AB;
  644. GL_WEIGHT_ARRAY_POINTER_ARB = $86AC;
  645. GL_WEIGHT_ARRAY_ARB = $86AD;
  646. var
  647. glWeightbvARB: procedure(size: GLint; weights: PGLbyte); extdecl;
  648. glWeightsvARB: procedure(size: GLint; weights: PGLshort); extdecl;
  649. glWeightivARB: procedure(size: GLint; weights: PGLint); extdecl;
  650. glWeightfvARB: procedure(size: GLint; weights: PGLfloat); extdecl;
  651. glWeightdvARB: procedure(size: GLint; weights: PGLdouble); extdecl;
  652. glWeightvARB: procedure(size: GLint; weights: PGLdouble); extdecl;
  653. glWeightubvARB: procedure(size: GLint; weights: PGLubyte); extdecl;
  654. glWeightusvARB: procedure(size: GLint; weights: PGLushort); extdecl;
  655. glWeightuivARB: procedure(size: GLint; weights: PGLuint); extdecl;
  656. glWeightPointerARB: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  657. glVertexBlendARB: procedure(count: GLint); extdecl;
  658. function Load_GL_ARB_vertex_blend: Boolean;
  659. //***** GL_ARB_vertex_program *****//
  660. const
  661. GL_VERTEX_PROGRAM_ARB = $8620;
  662. GL_VERTEX_PROGRAM_POINT_SIZE_ARB = $8642;
  663. GL_VERTEX_PROGRAM_TWO_SIDE_ARB = $8643;
  664. GL_COLOR_SUM_ARB = $8458;
  665. GL_PROGRAM_FORMAT_ASCII_ARB = $8875;
  666. GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = $8622;
  667. GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = $8623;
  668. GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = $8624;
  669. GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = $8625;
  670. GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = $886A;
  671. GL_CURRENT_VERTEX_ATTRIB_ARB = $8626;
  672. GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = $8645;
  673. GL_PROGRAM_LENGTH_ARB = $8627;
  674. GL_PROGRAM_FORMAT_ARB = $8876;
  675. GL_PROGRAM_BINDING_ARB = $8677;
  676. GL_PROGRAM_INSTRUCTIONS_ARB = $88A0;
  677. GL_MAX_PROGRAM_INSTRUCTIONS_ARB = $88A1;
  678. GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = $88A2;
  679. GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = $88A3;
  680. GL_PROGRAM_TEMPORARIES_ARB = $88A4;
  681. GL_MAX_PROGRAM_TEMPORARIES_ARB = $88A5;
  682. GL_PROGRAM_NATIVE_TEMPORARIES_ARB = $88A6;
  683. GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = $88A7;
  684. GL_PROGRAM_PARAMETERS_ARB = $88A8;
  685. GL_MAX_PROGRAM_PARAMETERS_ARB = $88A9;
  686. GL_PROGRAM_NATIVE_PARAMETERS_ARB = $88AA;
  687. GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = $88AB;
  688. GL_PROGRAM_ATTRIBS_ARB = $88AC;
  689. GL_MAX_PROGRAM_ATTRIBS_ARB = $88AD;
  690. GL_PROGRAM_NATIVE_ATTRIBS_ARB = $88AE;
  691. GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = $88AF;
  692. GL_PROGRAM_ADDRESS_REGISTERS_ARB = $88B0;
  693. GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = $88B1;
  694. GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = $88B2;
  695. GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = $88B3;
  696. GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = $88B4;
  697. GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = $88B5;
  698. GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = $88B6;
  699. GL_PROGRAM_STRING_ARB = $8628;
  700. GL_PROGRAM_ERROR_POSITION_ARB = $864B;
  701. GL_CURRENT_MATRIX_ARB = $8641;
  702. GL_TRANSPOSE_CURRENT_MATRIX_ARB = $88B7;
  703. GL_CURRENT_MATRIX_STACK_DEPTH_ARB = $8640;
  704. GL_MAX_VERTEX_ATTRIBS_ARB = $8869;
  705. GL_MAX_PROGRAM_MATRICES_ARB = $862F;
  706. GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = $862E;
  707. GL_PROGRAM_ERROR_STRING_ARB = $8874;
  708. GL_MATRIX0_ARB = $88C0;
  709. GL_MATRIX1_ARB = $88C1;
  710. GL_MATRIX2_ARB = $88C2;
  711. GL_MATRIX3_ARB = $88C3;
  712. GL_MATRIX4_ARB = $88C4;
  713. GL_MATRIX5_ARB = $88C5;
  714. GL_MATRIX6_ARB = $88C6;
  715. GL_MATRIX7_ARB = $88C7;
  716. GL_MATRIX8_ARB = $88C8;
  717. GL_MATRIX9_ARB = $88C9;
  718. GL_MATRIX10_ARB = $88CA;
  719. GL_MATRIX11_ARB = $88CB;
  720. GL_MATRIX12_ARB = $88CC;
  721. GL_MATRIX13_ARB = $88CD;
  722. GL_MATRIX14_ARB = $88CE;
  723. GL_MATRIX15_ARB = $88CF;
  724. GL_MATRIX16_ARB = $88D0;
  725. GL_MATRIX17_ARB = $88D1;
  726. GL_MATRIX18_ARB = $88D2;
  727. GL_MATRIX19_ARB = $88D3;
  728. GL_MATRIX20_ARB = $88D4;
  729. GL_MATRIX21_ARB = $88D5;
  730. GL_MATRIX22_ARB = $88D6;
  731. GL_MATRIX23_ARB = $88D7;
  732. GL_MATRIX24_ARB = $88D8;
  733. GL_MATRIX25_ARB = $88D9;
  734. GL_MATRIX26_ARB = $88DA;
  735. GL_MATRIX27_ARB = $88DB;
  736. GL_MATRIX28_ARB = $88DC;
  737. GL_MATRIX29_ARB = $88DD;
  738. GL_MATRIX30_ARB = $88DE;
  739. GL_MATRIX31_ARB = $88DF;
  740. var
  741. glVertexAttrib1sARB: procedure(index: GLuint; x: GLshort); extdecl;
  742. glVertexAttrib1fARB: procedure(index: GLuint; x: GLfloat); extdecl;
  743. glVertexAttrib1dARB: procedure(index: GLuint; x: GLdouble); extdecl;
  744. glVertexAttrib2sARB: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  745. glVertexAttrib2fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  746. glVertexAttrib2dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  747. glVertexAttrib3sARB: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  748. glVertexAttrib3fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  749. glVertexAttrib3dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  750. glVertexAttrib4sARB: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  751. glVertexAttrib4fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  752. glVertexAttrib4dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  753. glVertexAttrib4NubARB: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  754. glVertexAttrib1svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  755. glVertexAttrib1fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  756. glVertexAttrib1dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  757. glVertexAttrib2svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  758. glVertexAttrib2fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  759. glVertexAttrib2dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  760. glVertexAttrib3svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  761. glVertexAttrib3fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  762. glVertexAttrib3dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  763. glVertexAttrib4bvARB: procedure(index: GLuint; const v: PGLbyte); extdecl;
  764. glVertexAttrib4svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  765. glVertexAttrib4ivARB: procedure(index: GLuint; const v: PGLint); extdecl;
  766. glVertexAttrib4ubvARB: procedure(index: GLuint; const v: PGLubyte); extdecl;
  767. glVertexAttrib4usvARB: procedure(index: GLuint; const v: PGLushort); extdecl;
  768. glVertexAttrib4uivARB: procedure(index: GLuint; const v: PGLuint); extdecl;
  769. glVertexAttrib4fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  770. glVertexAttrib4dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  771. glVertexAttrib4NbvARB: procedure(index: GLuint; const v: PGLbyte); extdecl;
  772. glVertexAttrib4NsvARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  773. glVertexAttrib4NivARB: procedure(index: GLuint; const v: PGLint); extdecl;
  774. glVertexAttrib4NubvARB: procedure(index: GLuint; const v: PGLubyte); extdecl;
  775. glVertexAttrib4NusvARB: procedure(index: GLuint; const v: PGLushort); extdecl;
  776. glVertexAttrib4NuivARB: procedure(index: GLuint; const v: PGLuint); extdecl;
  777. glVertexAttribPointerARB: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; const pointer: PGLvoid); extdecl;
  778. glEnableVertexAttribArrayARB: procedure(index: GLuint); extdecl;
  779. glDisableVertexAttribArrayARB: procedure(index: GLuint); extdecl;
  780. glProgramStringARB: procedure(target: GLenum; format: GLenum; len: GLsizei; const _string: PGLvoid); extdecl;
  781. glBindProgramARB: procedure(target: GLenum; _program: GLuint); extdecl;
  782. glDeleteProgramsARB: procedure(n: GLsizei; const programs: PGLuint); extdecl;
  783. glGenProgramsARB: procedure(n: GLsizei; programs: PGLuint); extdecl;
  784. glProgramEnvParameter4dARB: procedure(target: GLenum; index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  785. glProgramEnvParameter4dvARB: procedure(target: GLenum; index: GLuint; const params: PGLdouble); extdecl;
  786. glProgramEnvParameter4fARB: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  787. glProgramEnvParameter4fvARB: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  788. glProgramLocalParameter4dARB: procedure(target: GLenum; index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  789. glProgramLocalParameter4dvARB: procedure(target: GLenum; index: GLuint; const params: PGLdouble); extdecl;
  790. glProgramLocalParameter4fARB: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  791. glProgramLocalParameter4fvARB: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  792. glGetProgramEnvParameterdvARB: procedure(target: GLenum; index: GLuint; params: PGLdouble); extdecl;
  793. glGetProgramEnvParameterfvARB: procedure(target: GLenum; index: GLuint; params: PGLfloat); extdecl;
  794. glGetProgramLocalParameterdvARB: procedure(target: GLenum; index: GLuint; params: PGLdouble); extdecl;
  795. glGetProgramLocalParameterfvARB: procedure(target: GLenum; index: GLuint; params: PGLfloat); extdecl;
  796. glGetProgramivARB: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  797. glGetProgramStringARB: procedure(target: GLenum; pname: GLenum; _string: PGLvoid); extdecl;
  798. glGetVertexAttribdvARB: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  799. glGetVertexAttribfvARB: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  800. glGetVertexAttribivARB: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  801. glGetVertexAttribPointervARB: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  802. glIsProgramARB: function(_program: GLuint): GLboolean; extdecl;
  803. function Load_GL_ARB_vertex_program: Boolean;
  804. //***** GL_ARB_window_pos *****//
  805. var
  806. glWindowPos2dARB: procedure(x: GLdouble; y: GLdouble); extdecl;
  807. glWindowPos2fARB: procedure(x: GLfloat; y: GLfloat); extdecl;
  808. glWindowPos2iARB: procedure(x: GLint; y: GLint); extdecl;
  809. glWindowPos2sARB: procedure(x: GLshort; y: GLshort); extdecl;
  810. glWindowPos2dvARB: procedure(const p: PGLdouble); extdecl;
  811. glWindowPos2fvARB: procedure(const p: PGLfloat); extdecl;
  812. glWindowPos2ivARB: procedure(const p: PGLint); extdecl;
  813. glWindowPos2svARB: procedure(const p: PGLshort); extdecl;
  814. glWindowPos3dARB: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  815. glWindowPos3fARB: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  816. glWindowPos3iARB: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  817. glWindowPos3sARB: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  818. glWindowPos3dvARB: procedure(const p: PGLdouble); extdecl;
  819. glWindowPos3fvARB: procedure(const p: PGLfloat); extdecl;
  820. glWindowPos3ivARB: procedure(const p: PGLint); extdecl;
  821. glWindowPos3svARB: procedure(const p: PGLshort); extdecl;
  822. function Load_GL_ARB_window_pos: Boolean;
  823. //***** GL_EXT_422_pixels *****//
  824. const
  825. GL_422_EXT = $80CC;
  826. GL_422_REV_EXT = $80CD;
  827. GL_422_AVERAGE_EXT = $80CE;
  828. GL_422_REV_AVERAGE_EXT = $80CF;
  829. function Load_GL_EXT_422_pixels: Boolean;
  830. //***** GL_EXT_abgr *****//
  831. const
  832. GL_ABGR_EXT = $8000;
  833. function Load_GL_EXT_abgr: Boolean;
  834. //***** GL_EXT_bgra *****//
  835. const
  836. GL_BGR_EXT = $80E0;
  837. GL_BGRA_EXT = $80E1;
  838. function Load_GL_EXT_bgra: Boolean;
  839. //***** GL_EXT_blend_color *****//
  840. const
  841. GL_CONSTANT_COLOR_EXT = $8001;
  842. GL_ONE_MINUS_CONSTANT_COLOR_EXT = $8002;
  843. GL_CONSTANT_ALPHA_EXT = $8003;
  844. GL_ONE_MINUS_CONSTANT_ALPHA_EXT = $8004;
  845. GL_BLEND_COLOR_EXT = $8005;
  846. var
  847. glBlendColorEXT: procedure(red: GLclampf; green: GLclampf; blue: GLclampf; alpha: GLclampf); extdecl;
  848. function Load_GL_EXT_blend_color: Boolean;
  849. //***** GL_EXT_blend_func_separate *****//
  850. const
  851. GL_BLEND_DST_RGB_EXT = $80C8;
  852. GL_BLEND_SRC_RGB_EXT = $80C9;
  853. GL_BLEND_DST_ALPHA_EXT = $80CA;
  854. GL_BLEND_SRC_ALPHA_EXT = $80CB;
  855. var
  856. glBlendFuncSeparateEXT: procedure(sfactorRGB: GLenum; dfactorRGB: GLenum; sfactorAlpha: GLenum; dfactorAlpha: GLenum); extdecl;
  857. function Load_GL_EXT_blend_func_separate: Boolean;
  858. //***** GL_EXT_blend_logic_op *****//
  859. function Load_GL_EXT_blend_logic_op: Boolean;
  860. //***** GL_EXT_blend_minmax *****//
  861. const
  862. GL_FUNC_ADD_EXT = $8006;
  863. GL_MIN_EXT = $8007;
  864. GL_MAX_EXT = $8008;
  865. GL_BLEND_EQUATION_EXT = $8009;
  866. var
  867. glBlendEquationEXT: procedure(mode: GLenum); extdecl;
  868. function Load_GL_EXT_blend_minmax: Boolean;
  869. //***** GL_EXT_blend_subtract *****//
  870. const
  871. GL_FUNC_SUBTRACT_EXT = $800A;
  872. GL_FUNC_REVERSE_SUBTRACT_EXT = $800B;
  873. function Load_GL_EXT_blend_subtract: Boolean;
  874. //***** GL_EXT_clip_volume_hint *****//
  875. const
  876. GL_CLIP_VOLUME_CLIPPING_HINT_EXT = $80F0;
  877. function Load_GL_EXT_clip_volume_hint: Boolean;
  878. //***** GL_EXT_color_subtable *****//
  879. var
  880. glColorSubTableEXT: procedure(target: GLenum; start: GLsizei; count: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  881. glCopyColorSubTableEXT: procedure(target: GLenum; start: GLsizei; x: GLint; y: GLint; width: GLsizei); extdecl;
  882. function Load_GL_EXT_color_subtable: Boolean;
  883. //***** GL_EXT_compiled_vertex_array *****//
  884. const
  885. GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = $81A8;
  886. GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = $81A9;
  887. var
  888. glLockArraysEXT: procedure(first: GLint; count: GLsizei); extdecl;
  889. glUnlockArraysEXT: procedure(); extdecl;
  890. function Load_GL_EXT_compiled_vertex_array: Boolean;
  891. //***** GL_EXT_convolution *****//
  892. const
  893. GL_CONVOLUTION_1D_EXT = $8010;
  894. GL_CONVOLUTION_2D_EXT = $8011;
  895. GL_SEPARABLE_2D_EXT = $8012;
  896. GL_CONVOLUTION_BORDER_MODE_EXT = $8013;
  897. GL_CONVOLUTION_FILTER_SCALE_EXT = $8014;
  898. GL_CONVOLUTION_FILTER_BIAS_EXT = $8015;
  899. GL_REDUCE_EXT = $8016;
  900. GL_CONVOLUTION_FORMAT_EXT = $8017;
  901. GL_CONVOLUTION_WIDTH_EXT = $8018;
  902. GL_CONVOLUTION_HEIGHT_EXT = $8019;
  903. GL_MAX_CONVOLUTION_WIDTH_EXT = $801A;
  904. GL_MAX_CONVOLUTION_HEIGHT_EXT = $801B;
  905. GL_POST_CONVOLUTION_RED_SCALE_EXT = $801C;
  906. GL_POST_CONVOLUTION_GREEN_SCALE_EXT = $801D;
  907. GL_POST_CONVOLUTION_BLUE_SCALE_EXT = $801E;
  908. GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = $801F;
  909. GL_POST_CONVOLUTION_RED_BIAS_EXT = $8020;
  910. GL_POST_CONVOLUTION_GREEN_BIAS_EXT = $8021;
  911. GL_POST_CONVOLUTION_BLUE_BIAS_EXT = $8022;
  912. GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = $8023;
  913. var
  914. glConvolutionFilter1DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  915. glConvolutionFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  916. glCopyConvolutionFilter1DEXT: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  917. glCopyConvolutionFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  918. glGetConvolutionFilterEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; image: PGLvoid); extdecl;
  919. glSeparableFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const row: PGLvoid; const column: PGLvoid); extdecl;
  920. glGetSeparableFilterEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; row: PGLvoid; column: PGLvoid; span: PGLvoid); extdecl;
  921. glConvolutionParameteriEXT: procedure(target: GLenum; pname: GLenum; param: GLint); extdecl;
  922. glConvolutionParameterivEXT: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  923. glConvolutionParameterfEXT: procedure(target: GLenum; pname: GLenum; param: GLfloat); extdecl;
  924. glConvolutionParameterfvEXT: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  925. glGetConvolutionParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  926. glGetConvolutionParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  927. function Load_GL_EXT_convolution: Boolean;
  928. //***** GL_EXT_fog_coord *****//
  929. const
  930. GL_FOG_COORDINATE_SOURCE_EXT = $8450;
  931. GL_FOG_COORDINATE_EXT = $8451;
  932. GL_FRAGMENT_DEPTH_EXT = $8452;
  933. GL_CURRENT_FOG_COORDINATE_EXT = $8453;
  934. GL_FOG_COORDINATE_ARRAY_TYPE_EXT = $8454;
  935. GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = $8455;
  936. GL_FOG_COORDINATE_ARRAY_POINTER_EXT = $8456;
  937. GL_FOG_COORDINATE_ARRAY_EXT = $8457;
  938. var
  939. glFogCoordfEXT: procedure(coord: GLfloat); extdecl;
  940. glFogCoorddEXT: procedure(coord: GLdouble); extdecl;
  941. glFogCoordfvEXT: procedure(coord: PGLfloat); extdecl;
  942. glFogCoorddvEXT: procedure(coord: PGLdouble); extdecl;
  943. glFogCoordPointerEXT: procedure(_type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  944. function Load_GL_EXT_fog_coord: Boolean;
  945. //***** GL_EXT_histogram *****//
  946. const
  947. GL_HISTOGRAM_EXT = $8024;
  948. GL_PROXY_HISTOGRAM_EXT = $8025;
  949. GL_HISTOGRAM_WIDTH_EXT = $8026;
  950. GL_HISTOGRAM_FORMAT_EXT = $8027;
  951. GL_HISTOGRAM_RED_SIZE_EXT = $8028;
  952. GL_HISTOGRAM_GREEN_SIZE_EXT = $8029;
  953. GL_HISTOGRAM_BLUE_SIZE_EXT = $802A;
  954. GL_HISTOGRAM_ALPHA_SIZE_EXT = $802B;
  955. GL_HISTOGRAM_LUMINANCE_SIZE_EXT = $802C;
  956. GL_HISTOGRAM_SINK_EXT = $802D;
  957. GL_MINMAX_EXT = $802E;
  958. GL_MINMAX_FORMAT_EXT = $802F;
  959. GL_MINMAX_SINK_EXT = $8030;
  960. var
  961. glHistogramEXT: procedure(target: GLenum; width: GLsizei; internalformat: GLenum; sink: GLboolean); extdecl;
  962. glResetHistogramEXT: procedure(target: GLenum); extdecl;
  963. glGetHistogramEXT: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  964. glGetHistogramParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  965. glGetHistogramParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  966. glMinmaxEXT: procedure(target: GLenum; internalformat: GLenum; sink: GLboolean); extdecl;
  967. glResetMinmaxEXT: procedure(target: GLenum); extdecl;
  968. glGetMinmaxEXT: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  969. glGetMinmaxParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  970. glGetMinmaxParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  971. function Load_GL_EXT_histogram: Boolean;
  972. //***** GL_EXT_multi_draw_arrays *****//
  973. var
  974. glMultiDrawArraysEXT: procedure(mode: GLenum; first: PGLint; count: PGLsizei; primcount: GLsizei); extdecl;
  975. glMultiDrawElementsEXT: procedure(mode: GLenum; count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei); extdecl;
  976. function Load_GL_EXT_multi_draw_arrays: Boolean;
  977. //***** GL_EXT_packed_depth_stencil *****//
  978. const
  979. GL_DEPTH_STENCIL_EXT = $84F9;
  980. GL_UNSIGNED_INT_24_8_EXT = $84FA;
  981. GL_DEPTH24_STENCIL8_EXT = $88F0;
  982. GL_TEXTURE_STENCIL_SIZE_EXT = $88F1;
  983. function Load_GL_EXT_packed_depth_stencil: Boolean;
  984. //***** GL_EXT_packed_pixels *****//
  985. const
  986. GL_UNSIGNED_BYTE_3_3_2_EXT = $8032;
  987. GL_UNSIGNED_SHORT_4_4_4_4_EXT = $8033;
  988. GL_UNSIGNED_SHORT_5_5_5_1_EXT = $8034;
  989. GL_UNSIGNED_INT_8_8_8_8_EXT = $8035;
  990. GL_UNSIGNED_INT_10_10_10_2_EXT = $8036;
  991. function Load_GL_EXT_packed_pixels: Boolean;
  992. //***** GL_EXT_paletted_texture *****//
  993. const
  994. GL_COLOR_INDEX1_EXT = $80E2;
  995. GL_COLOR_INDEX2_EXT = $80E3;
  996. GL_COLOR_INDEX4_EXT = $80E4;
  997. GL_COLOR_INDEX8_EXT = $80E5;
  998. GL_COLOR_INDEX12_EXT = $80E6;
  999. GL_COLOR_INDEX16_EXT = $80E7;
  1000. GL_COLOR_TABLE_FORMAT_EXT = $80D8;
  1001. GL_COLOR_TABLE_WIDTH_EXT = $80D9;
  1002. GL_COLOR_TABLE_RED_SIZE_EXT = $80DA;
  1003. GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB;
  1004. GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC;
  1005. GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD;
  1006. GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE;
  1007. GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF;
  1008. GL_TEXTURE_INDEX_SIZE_EXT = $80ED;
  1009. GL_TEXTURE_1D = $0DE0;
  1010. GL_TEXTURE_2D = $0DE1;
  1011. GL_TEXTURE_3D_EXT = $806F;
  1012. // GL_TEXTURE_CUBE_MAP_ARB { already defined }
  1013. GL_PROXY_TEXTURE_1D = $8063;
  1014. GL_PROXY_TEXTURE_2D = $8064;
  1015. GL_PROXY_TEXTURE_3D_EXT = $8070;
  1016. // GL_PROXY_TEXTURE_CUBE_MAP_ARB { already defined }
  1017. // GL_TEXTURE_1D { already defined }
  1018. // GL_TEXTURE_2D { already defined }
  1019. // GL_TEXTURE_3D_EXT { already defined }
  1020. // GL_TEXTURE_CUBE_MAP_ARB { already defined }
  1021. var
  1022. glColorTableEXT: procedure(target: GLenum; internalFormat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  1023. // glColorSubTableEXT { already defined }
  1024. glGetColorTableEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; data: PGLvoid); extdecl;
  1025. glGetColorTableParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  1026. glGetColorTableParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1027. function Load_GL_EXT_paletted_texture: Boolean;
  1028. //***** GL_EXT_point_parameters *****//
  1029. const
  1030. GL_POINT_SIZE_MIN_EXT = $8126;
  1031. GL_POINT_SIZE_MAX_EXT = $8127;
  1032. GL_POINT_FADE_THRESHOLD_SIZE_EXT = $8128;
  1033. GL_DISTANCE_ATTENUATION_EXT = $8129;
  1034. var
  1035. glPointParameterfEXT: procedure(pname: GLenum; param: GLfloat); extdecl;
  1036. glPointParameterfvEXT: procedure(pname: GLenum; params: PGLfloat); extdecl;
  1037. function Load_GL_EXT_point_parameters: Boolean;
  1038. //***** GL_EXT_polygon_offset *****//
  1039. const
  1040. GL_POLYGON_OFFSET_EXT = $8037;
  1041. GL_POLYGON_OFFSET_FACTOR_EXT = $8038;
  1042. GL_POLYGON_OFFSET_BIAS_EXT = $8039;
  1043. var
  1044. glPolygonOffsetEXT: procedure(factor: GLfloat; bias: GLfloat); extdecl;
  1045. function Load_GL_EXT_polygon_offset: Boolean;
  1046. //***** GL_EXT_secondary_color *****//
  1047. const
  1048. GL_COLOR_SUM_EXT = $8458;
  1049. GL_CURRENT_SECONDARY_COLOR_EXT = $8459;
  1050. GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = $845A;
  1051. GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = $845B;
  1052. GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = $845C;
  1053. GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = $845D;
  1054. GL_SECONDARY_COLOR_ARRAY_EXT = $845E;
  1055. var
  1056. glSecondaryColor3bEXT: procedure(components: GLbyte); extdecl;
  1057. glSecondaryColor3sEXT: procedure(components: GLshort); extdecl;
  1058. glSecondaryColor3iEXT: procedure(components: GLint); extdecl;
  1059. glSecondaryColor3fEXT: procedure(components: GLfloat); extdecl;
  1060. glSecondaryColor3dEXT: procedure(components: GLdouble); extdecl;
  1061. glSecondaryColor3ubEXT: procedure(components: GLubyte); extdecl;
  1062. glSecondaryColor3usEXT: procedure(components: GLushort); extdecl;
  1063. glSecondaryColor3uiEXT: procedure(components: GLuint); extdecl;
  1064. glSecondaryColor3bvEXT: procedure(components: GLbyte); extdecl;
  1065. glSecondaryColor3svEXT: procedure(components: GLshort); extdecl;
  1066. glSecondaryColor3ivEXT: procedure(components: GLint); extdecl;
  1067. glSecondaryColor3fvEXT: procedure(components: GLfloat); extdecl;
  1068. glSecondaryColor3dvEXT: procedure(components: GLdouble); extdecl;
  1069. glSecondaryColor3ubvEXT: procedure(components: GLubyte); extdecl;
  1070. glSecondaryColor3usvEXT: procedure(components: GLushort); extdecl;
  1071. glSecondaryColor3uivEXT: procedure(components: GLuint); extdecl;
  1072. glSecondaryColorPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  1073. function Load_GL_EXT_secondary_color: Boolean;
  1074. //***** GL_EXT_separate_specular_color *****//
  1075. const
  1076. GL_LIGHT_MODEL_COLOR_CONTROL_EXT = $81F8;
  1077. GL_SINGLE_COLOR_EXT = $81F9;
  1078. GL_SEPARATE_SPECULAR_COLOR_EXT = $81FA;
  1079. function Load_GL_EXT_separate_specular_color: Boolean;
  1080. //***** GL_EXT_shadow_funcs *****//
  1081. function Load_GL_EXT_shadow_funcs: Boolean;
  1082. //***** GL_EXT_shared_texture_palette *****//
  1083. const
  1084. GL_SHARED_TEXTURE_PALETTE_EXT = $81FB;
  1085. function Load_GL_EXT_shared_texture_palette: Boolean;
  1086. //***** GL_EXT_stencil_two_side *****//
  1087. const
  1088. GL_STENCIL_TEST_TWO_SIDE_EXT = $8910;
  1089. GL_ACTIVE_STENCIL_FACE_EXT = $8911;
  1090. var
  1091. glActiveStencilFaceEXT: procedure(face: GLenum); extdecl;
  1092. function Load_GL_EXT_stencil_two_side: Boolean;
  1093. //***** GL_EXT_stencil_wrap *****//
  1094. const
  1095. GL_INCR_WRAP_EXT = $8507;
  1096. GL_DECR_WRAP_EXT = $8508;
  1097. function Load_GL_EXT_stencil_wrap: Boolean;
  1098. //***** GL_EXT_subtexture *****//
  1099. var
  1100. glTexSubImage1DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1101. glTexSubImage2DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1102. glTexSubImage3DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1103. function Load_GL_EXT_subtexture: Boolean;
  1104. //***** GL_EXT_texture3D *****//
  1105. const
  1106. GL_PACK_SKIP_IMAGES_EXT = $806B;
  1107. GL_PACK_IMAGE_HEIGHT_EXT = $806C;
  1108. GL_UNPACK_SKIP_IMAGES_EXT = $806D;
  1109. GL_UNPACK_IMAGE_HEIGHT_EXT = $806E;
  1110. // GL_TEXTURE_3D_EXT { already defined }
  1111. // GL_PROXY_TEXTURE_3D_EXT { already defined }
  1112. GL_TEXTURE_DEPTH_EXT = $8071;
  1113. GL_TEXTURE_WRAP_R_EXT = $8072;
  1114. GL_MAX_3D_TEXTURE_SIZE_EXT = $8073;
  1115. var
  1116. glTexImage3DEXT: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1117. function Load_GL_EXT_texture3D: Boolean;
  1118. //***** GL_EXT_texture_compression_s3tc *****//
  1119. const
  1120. GL_COMPRESSED_RGB_S3TC_DXT1_EXT = $83F0;
  1121. GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = $83F1;
  1122. GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = $83F2;
  1123. GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = $83F3;
  1124. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  1125. //***** GL_EXT_texture_env_add *****//
  1126. function Load_GL_EXT_texture_env_add: Boolean;
  1127. //***** GL_EXT_texture_env_combine *****//
  1128. const
  1129. GL_COMBINE_EXT = $8570;
  1130. GL_COMBINE_RGB_EXT = $8571;
  1131. GL_COMBINE_ALPHA_EXT = $8572;
  1132. GL_SOURCE0_RGB_EXT = $8580;
  1133. GL_SOURCE1_RGB_EXT = $8581;
  1134. GL_SOURCE2_RGB_EXT = $8582;
  1135. GL_SOURCE0_ALPHA_EXT = $8588;
  1136. GL_SOURCE1_ALPHA_EXT = $8589;
  1137. GL_SOURCE2_ALPHA_EXT = $858A;
  1138. GL_OPERAND0_RGB_EXT = $8590;
  1139. GL_OPERAND1_RGB_EXT = $8591;
  1140. GL_OPERAND2_RGB_EXT = $8592;
  1141. GL_OPERAND0_ALPHA_EXT = $8598;
  1142. GL_OPERAND1_ALPHA_EXT = $8599;
  1143. GL_OPERAND2_ALPHA_EXT = $859A;
  1144. GL_RGB_SCALE_EXT = $8573;
  1145. GL_ADD_SIGNED_EXT = $8574;
  1146. GL_INTERPOLATE_EXT = $8575;
  1147. GL_CONSTANT_EXT = $8576;
  1148. GL_PRIMARY_COLOR_EXT = $8577;
  1149. GL_PREVIOUS_EXT = $8578;
  1150. function Load_GL_EXT_texture_env_combine: Boolean;
  1151. //***** GL_EXT_texture_env_dot3 *****//
  1152. const
  1153. GL_DOT3_RGB_EXT = $8740;
  1154. GL_DOT3_RGBA_EXT = $8741;
  1155. function Load_GL_EXT_texture_env_dot3: Boolean;
  1156. //***** GL_EXT_texture_filter_anisotropic *****//
  1157. const
  1158. GL_TEXTURE_MAX_ANISOTROPY_EXT = $84FE;
  1159. GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = $84FF;
  1160. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  1161. //***** GL_EXT_texture_lod_bias *****//
  1162. const
  1163. GL_TEXTURE_FILTER_CONTROL_EXT = $8500;
  1164. GL_TEXTURE_LOD_BIAS_EXT = $8501;
  1165. GL_MAX_TEXTURE_LOD_BIAS_EXT = $84FD;
  1166. function Load_GL_EXT_texture_lod_bias: Boolean;
  1167. //***** GL_EXT_texture_object *****//
  1168. const
  1169. GL_TEXTURE_PRIORITY_EXT = $8066;
  1170. GL_TEXTURE_RESIDENT_EXT = $8067;
  1171. GL_TEXTURE_1D_BINDING_EXT = $8068;
  1172. GL_TEXTURE_2D_BINDING_EXT = $8069;
  1173. GL_TEXTURE_3D_BINDING_EXT = $806A;
  1174. var
  1175. glGenTexturesEXT: procedure(n: GLsizei; textures: PGLuint); extdecl;
  1176. glDeleteTexturesEXT: procedure(n: GLsizei; const textures: PGLuint); extdecl;
  1177. glBindTextureEXT: procedure(target: GLenum; texture: GLuint); extdecl;
  1178. glPrioritizeTexturesEXT: procedure(n: GLsizei; const textures: PGLuint; const priorities: PGLclampf); extdecl;
  1179. glAreTexturesResidentEXT: function(n: GLsizei; const textures: PGLuint; residences: PGLboolean): GLboolean; extdecl;
  1180. glIsTextureEXT: function(texture: GLuint): GLboolean; extdecl;
  1181. function Load_GL_EXT_texture_object: Boolean;
  1182. //***** GL_EXT_vertex_array *****//
  1183. const
  1184. GL_VERTEX_ARRAY_EXT = $8074;
  1185. GL_NORMAL_ARRAY_EXT = $8075;
  1186. GL_COLOR_ARRAY_EXT = $8076;
  1187. GL_INDEX_ARRAY_EXT = $8077;
  1188. GL_TEXTURE_COORD_ARRAY_EXT = $8078;
  1189. GL_EDGE_FLAG_ARRAY_EXT = $8079;
  1190. GL_DOUBLE_EXT = $140A;
  1191. GL_VERTEX_ARRAY_SIZE_EXT = $807A;
  1192. GL_VERTEX_ARRAY_TYPE_EXT = $807B;
  1193. GL_VERTEX_ARRAY_STRIDE_EXT = $807C;
  1194. GL_VERTEX_ARRAY_COUNT_EXT = $807D;
  1195. GL_NORMAL_ARRAY_TYPE_EXT = $807E;
  1196. GL_NORMAL_ARRAY_STRIDE_EXT = $807F;
  1197. GL_NORMAL_ARRAY_COUNT_EXT = $8080;
  1198. GL_COLOR_ARRAY_SIZE_EXT = $8081;
  1199. GL_COLOR_ARRAY_TYPE_EXT = $8082;
  1200. GL_COLOR_ARRAY_STRIDE_EXT = $8083;
  1201. GL_COLOR_ARRAY_COUNT_EXT = $8084;
  1202. GL_INDEX_ARRAY_TYPE_EXT = $8085;
  1203. GL_INDEX_ARRAY_STRIDE_EXT = $8086;
  1204. GL_INDEX_ARRAY_COUNT_EXT = $8087;
  1205. GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088;
  1206. GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089;
  1207. GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A;
  1208. GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B;
  1209. GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C;
  1210. GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D;
  1211. GL_VERTEX_ARRAY_POINTER_EXT = $808E;
  1212. GL_NORMAL_ARRAY_POINTER_EXT = $808F;
  1213. GL_COLOR_ARRAY_POINTER_EXT = $8090;
  1214. GL_INDEX_ARRAY_POINTER_EXT = $8091;
  1215. GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092;
  1216. GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093;
  1217. var
  1218. glArrayElementEXT: procedure(i: GLint); extdecl;
  1219. glDrawArraysEXT: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  1220. glVertexPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1221. glNormalPointerEXT: procedure(_type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1222. glColorPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1223. glIndexPointerEXT: procedure(_type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1224. glTexCoordPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1225. glEdgeFlagPointerEXT: procedure(stride: GLsizei; count: GLsizei; const pointer: PGLboolean); extdecl;
  1226. glGetPointervEXT: procedure(pname: GLenum; params: PGLvoid); extdecl;
  1227. function Load_GL_EXT_vertex_array: Boolean;
  1228. //***** GL_EXT_vertex_shader *****//
  1229. const
  1230. GL_VERTEX_SHADER_EXT = $8780;
  1231. GL_VARIANT_VALUE_EXT = $87E4;
  1232. GL_VARIANT_DATATYPE_EXT = $87E5;
  1233. GL_VARIANT_ARRAY_STRIDE_EXT = $87E6;
  1234. GL_VARIANT_ARRAY_TYPE_EXT = $87E7;
  1235. GL_VARIANT_ARRAY_EXT = $87E8;
  1236. GL_VARIANT_ARRAY_POINTER_EXT = $87E9;
  1237. GL_INVARIANT_VALUE_EXT = $87EA;
  1238. GL_INVARIANT_DATATYPE_EXT = $87EB;
  1239. GL_LOCAL_CONSTANT_VALUE_EXT = $87EC;
  1240. GL_LOCAL_CONSTANT_DATATYPE_EXT = $87ED;
  1241. GL_OP_INDEX_EXT = $8782;
  1242. GL_OP_NEGATE_EXT = $8783;
  1243. GL_OP_DOT3_EXT = $8784;
  1244. GL_OP_DOT4_EXT = $8785;
  1245. GL_OP_MUL_EXT = $8786;
  1246. GL_OP_ADD_EXT = $8787;
  1247. GL_OP_MADD_EXT = $8788;
  1248. GL_OP_FRAC_EXT = $8789;
  1249. GL_OP_MAX_EXT = $878A;
  1250. GL_OP_MIN_EXT = $878B;
  1251. GL_OP_SET_GE_EXT = $878C;
  1252. GL_OP_SET_LT_EXT = $878D;
  1253. GL_OP_CLAMP_EXT = $878E;
  1254. GL_OP_FLOOR_EXT = $878F;
  1255. GL_OP_ROUND_EXT = $8790;
  1256. GL_OP_EXP_BASE_2_EXT = $8791;
  1257. GL_OP_LOG_BASE_2_EXT = $8792;
  1258. GL_OP_POWER_EXT = $8793;
  1259. GL_OP_RECIP_EXT = $8794;
  1260. GL_OP_RECIP_SQRT_EXT = $8795;
  1261. GL_OP_SUB_EXT = $8796;
  1262. GL_OP_CROSS_PRODUCT_EXT = $8797;
  1263. GL_OP_MULTIPLY_MATRIX_EXT = $8798;
  1264. GL_OP_MOV_EXT = $8799;
  1265. GL_OUTPUT_VERTEX_EXT = $879A;
  1266. GL_OUTPUT_COLOR0_EXT = $879B;
  1267. GL_OUTPUT_COLOR1_EXT = $879C;
  1268. GL_OUTPUT_TEXTURE_COORD0_EXT = $879D;
  1269. GL_OUTPUT_TEXTURE_COORD1_EXT = $879E;
  1270. GL_OUTPUT_TEXTURE_COORD2_EXT = $879F;
  1271. GL_OUTPUT_TEXTURE_COORD3_EXT = $87A0;
  1272. GL_OUTPUT_TEXTURE_COORD4_EXT = $87A1;
  1273. GL_OUTPUT_TEXTURE_COORD5_EXT = $87A2;
  1274. GL_OUTPUT_TEXTURE_COORD6_EXT = $87A3;
  1275. GL_OUTPUT_TEXTURE_COORD7_EXT = $87A4;
  1276. GL_OUTPUT_TEXTURE_COORD8_EXT = $87A5;
  1277. GL_OUTPUT_TEXTURE_COORD9_EXT = $87A6;
  1278. GL_OUTPUT_TEXTURE_COORD10_EXT = $87A7;
  1279. GL_OUTPUT_TEXTURE_COORD11_EXT = $87A8;
  1280. GL_OUTPUT_TEXTURE_COORD12_EXT = $87A9;
  1281. GL_OUTPUT_TEXTURE_COORD13_EXT = $87AA;
  1282. GL_OUTPUT_TEXTURE_COORD14_EXT = $87AB;
  1283. GL_OUTPUT_TEXTURE_COORD15_EXT = $87AC;
  1284. GL_OUTPUT_TEXTURE_COORD16_EXT = $87AD;
  1285. GL_OUTPUT_TEXTURE_COORD17_EXT = $87AE;
  1286. GL_OUTPUT_TEXTURE_COORD18_EXT = $87AF;
  1287. GL_OUTPUT_TEXTURE_COORD19_EXT = $87B0;
  1288. GL_OUTPUT_TEXTURE_COORD20_EXT = $87B1;
  1289. GL_OUTPUT_TEXTURE_COORD21_EXT = $87B2;
  1290. GL_OUTPUT_TEXTURE_COORD22_EXT = $87B3;
  1291. GL_OUTPUT_TEXTURE_COORD23_EXT = $87B4;
  1292. GL_OUTPUT_TEXTURE_COORD24_EXT = $87B5;
  1293. GL_OUTPUT_TEXTURE_COORD25_EXT = $87B6;
  1294. GL_OUTPUT_TEXTURE_COORD26_EXT = $87B7;
  1295. GL_OUTPUT_TEXTURE_COORD27_EXT = $87B8;
  1296. GL_OUTPUT_TEXTURE_COORD28_EXT = $87B9;
  1297. GL_OUTPUT_TEXTURE_COORD29_EXT = $87BA;
  1298. GL_OUTPUT_TEXTURE_COORD30_EXT = $87BB;
  1299. GL_OUTPUT_TEXTURE_COORD31_EXT = $87BC;
  1300. GL_OUTPUT_FOG_EXT = $87BD;
  1301. GL_SCALAR_EXT = $87BE;
  1302. GL_VECTOR_EXT = $87BF;
  1303. GL_MATRIX_EXT = $87C0;
  1304. GL_VARIANT_EXT = $87C1;
  1305. GL_INVARIANT_EXT = $87C2;
  1306. GL_LOCAL_CONSTANT_EXT = $87C3;
  1307. GL_LOCAL_EXT = $87C4;
  1308. GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = $87C5;
  1309. GL_MAX_VERTEX_SHADER_VARIANTS_EXT = $87C6;
  1310. GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = $87C7;
  1311. GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87C8;
  1312. GL_MAX_VERTEX_SHADER_LOCALS_EXT = $87C9;
  1313. GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = $87CA;
  1314. GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = $87CB;
  1315. GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87CC;
  1316. GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = $87CD;
  1317. GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = $87CE;
  1318. GL_VERTEX_SHADER_INSTRUCTIONS_EXT = $87CF;
  1319. GL_VERTEX_SHADER_VARIANTS_EXT = $87D0;
  1320. GL_VERTEX_SHADER_INVARIANTS_EXT = $87D1;
  1321. GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87D2;
  1322. GL_VERTEX_SHADER_LOCALS_EXT = $87D3;
  1323. GL_VERTEX_SHADER_BINDING_EXT = $8781;
  1324. GL_VERTEX_SHADER_OPTIMIZED_EXT = $87D4;
  1325. GL_X_EXT = $87D5;
  1326. GL_Y_EXT = $87D6;
  1327. GL_Z_EXT = $87D7;
  1328. GL_W_EXT = $87D8;
  1329. GL_NEGATIVE_X_EXT = $87D9;
  1330. GL_NEGATIVE_Y_EXT = $87DA;
  1331. GL_NEGATIVE_Z_EXT = $87DB;
  1332. GL_NEGATIVE_W_EXT = $87DC;
  1333. GL_ZERO_EXT = $87DD;
  1334. GL_ONE_EXT = $87DE;
  1335. GL_NEGATIVE_ONE_EXT = $87DF;
  1336. GL_NORMALIZED_RANGE_EXT = $87E0;
  1337. GL_FULL_RANGE_EXT = $87E1;
  1338. GL_CURRENT_VERTEX_EXT = $87E2;
  1339. GL_MVP_MATRIX_EXT = $87E3;
  1340. var
  1341. glBeginVertexShaderEXT: procedure(); extdecl;
  1342. glEndVertexShaderEXT: procedure(); extdecl;
  1343. glBindVertexShaderEXT: procedure(id: GLuint); extdecl;
  1344. glGenVertexShadersEXT: function(range: GLuint): GLuint; extdecl;
  1345. glDeleteVertexShaderEXT: procedure(id: GLuint); extdecl;
  1346. glShaderOp1EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint); extdecl;
  1347. glShaderOp2EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint; arg2: GLuint); extdecl;
  1348. glShaderOp3EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint; arg2: GLuint; arg3: GLuint); extdecl;
  1349. glSwizzleEXT: procedure(res: GLuint; _in: GLuint; outX: GLenum; outY: GLenum; outZ: GLenum; outW: GLenum); extdecl;
  1350. glWriteMaskEXT: procedure(res: GLuint; _in: GLuint; outX: GLenum; outY: GLenum; outZ: GLenum; outW: GLenum); extdecl;
  1351. glInsertComponentEXT: procedure(res: GLuint; src: GLuint; num: GLuint); extdecl;
  1352. glExtractComponentEXT: procedure(res: GLuint; src: GLuint; num: GLuint); extdecl;
  1353. glGenSymbolsEXT: function(datatype: GLenum; storagetype: GLenum; range: GLenum; components: GLuint): GLuint; extdecl;
  1354. glSetInvariantEXT: procedure(id: GLuint; _type: GLenum; addr: PGLvoid); extdecl;
  1355. glSetLocalConstantEXT: procedure(id: GLuint; _type: GLenum; addr: PGLvoid); extdecl;
  1356. glVariantbvEXT: procedure(id: GLuint; addr: PGLbyte); extdecl;
  1357. glVariantsvEXT: procedure(id: GLuint; addr: PGLshort); extdecl;
  1358. glVariantivEXT: procedure(id: GLuint; addr: PGLint); extdecl;
  1359. glVariantfvEXT: procedure(id: GLuint; addr: PGLfloat); extdecl;
  1360. glVariantdvEXT: procedure(id: GLuint; addr: PGLdouble); extdecl;
  1361. glVariantubvEXT: procedure(id: GLuint; addr: PGLubyte); extdecl;
  1362. glVariantusvEXT: procedure(id: GLuint; addr: PGLushort); extdecl;
  1363. glVariantuivEXT: procedure(id: GLuint; addr: PGLuint); extdecl;
  1364. glVariantPointerEXT: procedure(id: GLuint; _type: GLenum; stride: GLuint; addr: PGLvoid); extdecl;
  1365. glEnableVariantClientStateEXT: procedure(id: GLuint); extdecl;
  1366. glDisableVariantClientStateEXT: procedure(id: GLuint); extdecl;
  1367. glBindLightParameterEXT: function(light: GLenum; value: GLenum): GLuint; extdecl;
  1368. glBindMaterialParameterEXT: function(face: GLenum; value: GLenum): GLuint; extdecl;
  1369. glBindTexGenParameterEXT: function(_unit: GLenum; coord: GLenum; value: GLenum): GLuint; extdecl;
  1370. glBindTextureUnitParameterEXT: function(_unit: GLenum; value: GLenum): GLuint; extdecl;
  1371. glBindParameterEXT: function(value: GLenum): GLuint; extdecl;
  1372. glIsVariantEnabledEXT: function(id: GLuint; cap: GLenum): GLboolean; extdecl;
  1373. glGetVariantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1374. glGetVariantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1375. glGetVariantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1376. glGetVariantPointervEXT: procedure(id: GLuint; value: GLenum; data: PGLvoid); extdecl;
  1377. glGetInvariantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1378. glGetInvariantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1379. glGetInvariantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1380. glGetLocalConstantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1381. glGetLocalConstantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1382. glGetLocalConstantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1383. function Load_GL_EXT_vertex_shader: Boolean;
  1384. //***** GL_EXT_vertex_weighting *****//
  1385. const
  1386. GL_VERTEX_WEIGHTING_EXT = $8509;
  1387. GL_MODELVIEW0_EXT = $1700;
  1388. GL_MODELVIEW1_EXT = $850A;
  1389. GL_MODELVIEW0_MATRIX_EXT = $0BA6;
  1390. GL_MODELVIEW1_MATRIX_EXT = $8506;
  1391. GL_CURRENT_VERTEX_WEIGHT_EXT = $850B;
  1392. GL_VERTEX_WEIGHT_ARRAY_EXT = $850C;
  1393. GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = $850D;
  1394. GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = $850E;
  1395. GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = $850F;
  1396. GL_MODELVIEW0_STACK_DEPTH_EXT = $0BA3;
  1397. GL_MODELVIEW1_STACK_DEPTH_EXT = $8502;
  1398. GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = $8510;
  1399. var
  1400. glVertexWeightfEXT: procedure(weight: GLfloat); extdecl;
  1401. glVertexWeightfvEXT: procedure(weight: PGLfloat); extdecl;
  1402. glVertexWeightPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  1403. function Load_GL_EXT_vertex_weighting: Boolean;
  1404. //***** GL_HP_occlusion_test *****//
  1405. const
  1406. GL_OCCLUSION_TEST_HP = $8165;
  1407. GL_OCCLUSION_TEST_RESULT_HP = $8166;
  1408. function Load_GL_HP_occlusion_test: Boolean;
  1409. //***** GL_NV_blend_square *****//
  1410. function Load_GL_NV_blend_square: Boolean;
  1411. //***** GL_NV_copy_depth_to_color *****//
  1412. const
  1413. GL_DEPTH_STENCIL_TO_RGBA_NV = $886E;
  1414. GL_DEPTH_STENCIL_TO_BGRA_NV = $886F;
  1415. function Load_GL_NV_copy_depth_to_color: Boolean;
  1416. //***** GL_NV_depth_clamp *****//
  1417. const
  1418. GL_DEPTH_CLAMP_NV = $864F;
  1419. function Load_GL_NV_depth_clamp: Boolean;
  1420. //***** GL_NV_evaluators *****//
  1421. const
  1422. GL_EVAL_2D_NV = $86C0;
  1423. GL_EVAL_TRIANGULAR_2D_NV = $86C1;
  1424. GL_MAP_TESSELLATION_NV = $86C2;
  1425. GL_MAP_ATTRIB_U_ORDER_NV = $86C3;
  1426. GL_MAP_ATTRIB_V_ORDER_NV = $86C4;
  1427. GL_EVAL_FRACTIONAL_TESSELLATION_NV = $86C5;
  1428. GL_EVAL_VERTEX_ATTRIB0_NV = $86C6;
  1429. GL_EVAL_VERTEX_ATTRIB1_NV = $86C7;
  1430. GL_EVAL_VERTEX_ATTRIB2_NV = $86C8;
  1431. GL_EVAL_VERTEX_ATTRIB3_NV = $86C9;
  1432. GL_EVAL_VERTEX_ATTRIB4_NV = $86CA;
  1433. GL_EVAL_VERTEX_ATTRIB5_NV = $86CB;
  1434. GL_EVAL_VERTEX_ATTRIB6_NV = $86CC;
  1435. GL_EVAL_VERTEX_ATTRIB7_NV = $86CD;
  1436. GL_EVAL_VERTEX_ATTRIB8_NV = $86CE;
  1437. GL_EVAL_VERTEX_ATTRIB9_NV = $86CF;
  1438. GL_EVAL_VERTEX_ATTRIB10_NV = $86D0;
  1439. GL_EVAL_VERTEX_ATTRIB11_NV = $86D1;
  1440. GL_EVAL_VERTEX_ATTRIB12_NV = $86D2;
  1441. GL_EVAL_VERTEX_ATTRIB13_NV = $86D3;
  1442. GL_EVAL_VERTEX_ATTRIB14_NV = $86D4;
  1443. GL_EVAL_VERTEX_ATTRIB15_NV = $86D5;
  1444. GL_MAX_MAP_TESSELLATION_NV = $86D6;
  1445. GL_MAX_RATIONAL_EVAL_ORDER_NV = $86D7;
  1446. var
  1447. glMapControlPointsNV: procedure(target: GLenum; index: GLuint; _type: GLenum; ustride: GLsizei; vstride: GLsizei; uorder: GLint; vorder: GLint; _packed: GLboolean; const points: PGLvoid); extdecl;
  1448. glMapParameterivNV: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  1449. glMapParameterfvNV: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  1450. glGetMapControlPointsNV: procedure(target: GLenum; index: GLuint; _type: GLenum; ustride: GLsizei; vstride: GLsizei; _packed: GLboolean; points: PGLvoid); extdecl;
  1451. glGetMapParameterivNV: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  1452. glGetMapParameterfvNV: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1453. glGetMapAttribParameterivNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLint); extdecl;
  1454. glGetMapAttribParameterfvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1455. glEvalMapsNV: procedure(target: GLenum; mode: GLenum); extdecl;
  1456. function Load_GL_NV_evaluators: Boolean;
  1457. //***** GL_NV_fence *****//
  1458. const
  1459. GL_ALL_COMPLETED_NV = $84F2;
  1460. GL_FENCE_STATUS_NV = $84F3;
  1461. GL_FENCE_CONDITION_NV = $84F4;
  1462. var
  1463. glGenFencesNV: procedure(n: GLsizei; fences: PGLuint); extdecl;
  1464. glDeleteFencesNV: procedure(n: GLsizei; const fences: PGLuint); extdecl;
  1465. glSetFenceNV: procedure(fence: GLuint; condition: GLenum); extdecl;
  1466. glTestFenceNV: function(fence: GLuint): GLboolean; extdecl;
  1467. glFinishFenceNV: procedure(fence: GLuint); extdecl;
  1468. glIsFenceNV: function(fence: GLuint): GLboolean; extdecl;
  1469. glGetFenceivNV: procedure(fence: GLuint; pname: GLenum; params: PGLint); extdecl;
  1470. function Load_GL_NV_fence: Boolean;
  1471. //***** GL_NV_fog_distance *****//
  1472. const
  1473. GL_FOG_DISTANCE_MODE_NV = $855A;
  1474. GL_EYE_RADIAL_NV = $855B;
  1475. GL_EYE_PLANE_ABSOLUTE_NV = $855C;
  1476. function Load_GL_NV_fog_distance: Boolean;
  1477. //***** GL_NV_light_max_exponent *****//
  1478. const
  1479. GL_MAX_SHININESS_NV = $8504;
  1480. GL_MAX_SPOT_EXPONENT_NV = $8505;
  1481. function Load_GL_NV_light_max_exponent: Boolean;
  1482. //***** GL_NV_multisample_filter_hint *****//
  1483. const
  1484. GL_MULTISAMPLE_FILTER_HINT_NV = $8534;
  1485. function Load_GL_NV_multisample_filter_hint: Boolean;
  1486. //***** GL_NV_occlusion_query *****//
  1487. // GL_OCCLUSION_TEST_HP { already defined }
  1488. // GL_OCCLUSION_TEST_RESULT_HP { already defined }
  1489. const
  1490. GL_PIXEL_COUNTER_BITS_NV = $8864;
  1491. GL_CURRENT_OCCLUSION_QUERY_ID_NV = $8865;
  1492. GL_PIXEL_COUNT_NV = $8866;
  1493. GL_PIXEL_COUNT_AVAILABLE_NV = $8867;
  1494. var
  1495. glGenOcclusionQueriesNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1496. glDeleteOcclusionQueriesNV: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  1497. glIsOcclusionQueryNV: function(id: GLuint): GLboolean; extdecl;
  1498. glBeginOcclusionQueryNV: procedure(id: GLuint); extdecl;
  1499. glEndOcclusionQueryNV: procedure(); extdecl;
  1500. glGetOcclusionQueryivNV: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  1501. glGetOcclusionQueryuivNV: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  1502. function Load_GL_NV_occlusion_query: Boolean;
  1503. //***** GL_NV_packed_depth_stencil *****//
  1504. const
  1505. GL_DEPTH_STENCIL_NV = $84F9;
  1506. GL_UNSIGNED_INT_24_8_NV = $84FA;
  1507. function Load_GL_NV_packed_depth_stencil: Boolean;
  1508. //***** GL_NV_point_sprite *****//
  1509. const
  1510. GL_POINT_SPRITE_NV = $8861;
  1511. GL_COORD_REPLACE_NV = $8862;
  1512. GL_POINT_SPRITE_R_MODE_NV = $8863;
  1513. var
  1514. glPointParameteriNV: procedure(pname: GLenum; param: GLint); extdecl;
  1515. glPointParameterivNV: procedure(pname: GLenum; const params: PGLint); extdecl;
  1516. function Load_GL_NV_point_sprite: Boolean;
  1517. //***** GL_NV_register_combiners *****//
  1518. const
  1519. GL_REGISTER_COMBINERS_NV = $8522;
  1520. GL_COMBINER0_NV = $8550;
  1521. GL_COMBINER1_NV = $8551;
  1522. GL_COMBINER2_NV = $8552;
  1523. GL_COMBINER3_NV = $8553;
  1524. GL_COMBINER4_NV = $8554;
  1525. GL_COMBINER5_NV = $8555;
  1526. GL_COMBINER6_NV = $8556;
  1527. GL_COMBINER7_NV = $8557;
  1528. GL_VARIABLE_A_NV = $8523;
  1529. GL_VARIABLE_B_NV = $8524;
  1530. GL_VARIABLE_C_NV = $8525;
  1531. GL_VARIABLE_D_NV = $8526;
  1532. GL_VARIABLE_E_NV = $8527;
  1533. GL_VARIABLE_F_NV = $8528;
  1534. GL_VARIABLE_G_NV = $8529;
  1535. GL_CONSTANT_COLOR0_NV = $852A;
  1536. GL_CONSTANT_COLOR1_NV = $852B;
  1537. GL_PRIMARY_COLOR_NV = $852C;
  1538. GL_SECONDARY_COLOR_NV = $852D;
  1539. GL_SPARE0_NV = $852E;
  1540. GL_SPARE1_NV = $852F;
  1541. GL_UNSIGNED_IDENTITY_NV = $8536;
  1542. GL_UNSIGNED_INVERT_NV = $8537;
  1543. GL_EXPAND_NORMAL_NV = $8538;
  1544. GL_EXPAND_NEGATE_NV = $8539;
  1545. GL_HALF_BIAS_NORMAL_NV = $853A;
  1546. GL_HALF_BIAS_NEGATE_NV = $853B;
  1547. GL_SIGNED_IDENTITY_NV = $853C;
  1548. GL_SIGNED_NEGATE_NV = $853D;
  1549. GL_E_TIMES_F_NV = $8531;
  1550. GL_SPARE0_PLUS_SECONDARY_COLOR_NV = $8532;
  1551. GL_SCALE_BY_TWO_NV = $853E;
  1552. GL_SCALE_BY_FOUR_NV = $853F;
  1553. GL_SCALE_BY_ONE_HALF_NV = $8540;
  1554. GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = $8541;
  1555. GL_DISCARD_NV = $8530;
  1556. GL_COMBINER_INPUT_NV = $8542;
  1557. GL_COMBINER_MAPPING_NV = $8543;
  1558. GL_COMBINER_COMPONENT_USAGE_NV = $8544;
  1559. GL_COMBINER_AB_DOT_PRODUCT_NV = $8545;
  1560. GL_COMBINER_CD_DOT_PRODUCT_NV = $8546;
  1561. GL_COMBINER_MUX_SUM_NV = $8547;
  1562. GL_COMBINER_SCALE_NV = $8548;
  1563. GL_COMBINER_BIAS_NV = $8549;
  1564. GL_COMBINER_AB_OUTPUT_NV = $854A;
  1565. GL_COMBINER_CD_OUTPUT_NV = $854B;
  1566. GL_COMBINER_SUM_OUTPUT_NV = $854C;
  1567. GL_NUM_GENERAL_COMBINERS_NV = $854E;
  1568. GL_COLOR_SUM_CLAMP_NV = $854F;
  1569. GL_MAX_GENERAL_COMBINERS_NV = $854D;
  1570. var
  1571. glCombinerParameterfvNV: procedure(pname: GLenum; const params: PGLfloat); extdecl;
  1572. glCombinerParameterivNV: procedure(pname: GLenum; const params: PGLint); extdecl;
  1573. glCombinerParameterfNV: procedure(pname: GLenum; param: GLfloat); extdecl;
  1574. glCombinerParameteriNV: procedure(pname: GLenum; param: GLint); extdecl;
  1575. glCombinerInputNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; input: GLenum; mapping: GLenum; componentUsage: GLenum); extdecl;
  1576. glCombinerOutputNV: procedure(stage: GLenum; portion: GLenum; abOutput: GLenum; cdOutput: GLenum; sumOutput: GLenum; scale: GLenum; bias: GLenum; abDotProduct: GLboolean; cdDotProduct: GLboolean; muxSum: GLboolean); extdecl;
  1577. glFinalCombinerInputNV: procedure(variable: GLenum; input: GLenum; mapping: GLenum; componentUsage: GLenum); extdecl;
  1578. glGetCombinerInputParameterfvNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1579. glGetCombinerInputParameterivNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; pname: GLenum; params: PGLint); extdecl;
  1580. glGetCombinerOutputParameterfvNV: procedure(stage: GLenum; portion: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1581. glGetCombinerOutputParameterivNV: procedure(stage: GLenum; portion: GLenum; pname: GLenum; params: PGLint); extdecl;
  1582. glGetFinalCombinerInputParameterfvNV: procedure(variable: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1583. glGetFinalCombinerInputParameterivNV: procedure(variable: GLenum; pname: GLenum; params: PGLint); extdecl;
  1584. function Load_GL_NV_register_combiners: Boolean;
  1585. //***** GL_NV_register_combiners2 *****//
  1586. const
  1587. GL_PER_STAGE_CONSTANTS_NV = $8535;
  1588. var
  1589. glCombinerStageParameterfvNV: procedure(stage: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  1590. glGetCombinerStageParameterfvNV: procedure(stage: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1591. function Load_GL_NV_register_combiners2: Boolean;
  1592. //***** GL_NV_texgen_emboss *****//
  1593. const
  1594. GL_EMBOSS_MAP_NV = $855F;
  1595. GL_EMBOSS_LIGHT_NV = $855D;
  1596. GL_EMBOSS_CONSTANT_NV = $855E;
  1597. function Load_GL_NV_texgen_emboss: Boolean;
  1598. //***** GL_NV_texgen_reflection *****//
  1599. const
  1600. GL_NORMAL_MAP_NV = $8511;
  1601. GL_REFLECTION_MAP_NV = $8512;
  1602. function Load_GL_NV_texgen_reflection: Boolean;
  1603. //***** GL_NV_texture_compression_vtc *****//
  1604. // GL_COMPRESSED_RGB_S3TC_DXT1_EXT { already defined }
  1605. // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT { already defined }
  1606. // GL_COMPRESSED_RGBA_S3TC_DXT3_EXT { already defined }
  1607. // GL_COMPRESSED_RGBA_S3TC_DXT5_EXT { already defined }
  1608. function Load_GL_NV_texture_compression_vtc: Boolean;
  1609. //***** GL_NV_texture_env_combine4 *****//
  1610. const
  1611. GL_COMBINE4_NV = $8503;
  1612. GL_SOURCE3_RGB_NV = $8583;
  1613. GL_SOURCE3_ALPHA_NV = $858B;
  1614. GL_OPERAND3_RGB_NV = $8593;
  1615. GL_OPERAND3_ALPHA_NV = $859B;
  1616. function Load_GL_NV_texture_env_combine4: Boolean;
  1617. //***** GL_NV_texture_rectangle *****//
  1618. const
  1619. GL_TEXTURE_RECTANGLE_NV = $84F5;
  1620. GL_TEXTURE_BINDING_RECTANGLE_NV = $84F6;
  1621. GL_PROXY_TEXTURE_RECTANGLE_NV = $84F7;
  1622. GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = $84F8;
  1623. function Load_GL_NV_texture_rectangle: Boolean;
  1624. //***** GL_NV_texture_shader *****//
  1625. const
  1626. GL_TEXTURE_SHADER_NV = $86DE;
  1627. GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = $86D9;
  1628. GL_SHADER_OPERATION_NV = $86DF;
  1629. GL_CULL_MODES_NV = $86E0;
  1630. GL_OFFSET_TEXTURE_MATRIX_NV = $86E1;
  1631. GL_OFFSET_TEXTURE_SCALE_NV = $86E2;
  1632. GL_OFFSET_TEXTURE_BIAS_NV = $86E3;
  1633. GL_PREVIOUS_TEXTURE_INPUT_NV = $86E4;
  1634. GL_CONST_EYE_NV = $86E5;
  1635. GL_SHADER_CONSISTENT_NV = $86DD;
  1636. GL_PASS_THROUGH_NV = $86E6;
  1637. GL_CULL_FRAGMENT_NV = $86E7;
  1638. GL_OFFSET_TEXTURE_2D_NV = $86E8;
  1639. GL_OFFSET_TEXTURE_RECTANGLE_NV = $864C;
  1640. GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = $864D;
  1641. GL_DEPENDENT_AR_TEXTURE_2D_NV = $86E9;
  1642. GL_DEPENDENT_GB_TEXTURE_2D_NV = $86EA;
  1643. GL_DOT_PRODUCT_NV = $86EC;
  1644. GL_DOT_PRODUCT_DEPTH_REPLACE_NV = $86ED;
  1645. GL_DOT_PRODUCT_TEXTURE_2D_NV = $86EE;
  1646. GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = $864E;
  1647. GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = $86F0;
  1648. GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = $86F1;
  1649. GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = $86F2;
  1650. GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = $86F3;
  1651. GL_HILO_NV = $86F4;
  1652. GL_DSDT_NV = $86F5;
  1653. GL_DSDT_MAG_NV = $86F6;
  1654. GL_DSDT_MAG_VIB_NV = $86F7;
  1655. GL_UNSIGNED_INT_S8_S8_8_8_NV = $86DA;
  1656. GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = $86DB;
  1657. GL_SIGNED_RGBA_NV = $86FB;
  1658. GL_SIGNED_RGBA8_NV = $86FC;
  1659. GL_SIGNED_RGB_NV = $86FE;
  1660. GL_SIGNED_RGB8_NV = $86FF;
  1661. GL_SIGNED_LUMINANCE_NV = $8701;
  1662. GL_SIGNED_LUMINANCE8_NV = $8702;
  1663. GL_SIGNED_LUMINANCE_ALPHA_NV = $8703;
  1664. GL_SIGNED_LUMINANCE8_ALPHA8_NV = $8704;
  1665. GL_SIGNED_ALPHA_NV = $8705;
  1666. GL_SIGNED_ALPHA8_NV = $8706;
  1667. GL_SIGNED_INTENSITY_NV = $8707;
  1668. GL_SIGNED_INTENSITY8_NV = $8708;
  1669. GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = $870C;
  1670. GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = $870D;
  1671. GL_HILO16_NV = $86F8;
  1672. GL_SIGNED_HILO_NV = $86F9;
  1673. GL_SIGNED_HILO16_NV = $86FA;
  1674. GL_DSDT8_NV = $8709;
  1675. GL_DSDT8_MAG8_NV = $870A;
  1676. GL_DSDT_MAG_INTENSITY_NV = $86DC;
  1677. GL_DSDT8_MAG8_INTENSITY8_NV = $870B;
  1678. GL_HI_SCALE_NV = $870E;
  1679. GL_LO_SCALE_NV = $870F;
  1680. GL_DS_SCALE_NV = $8710;
  1681. GL_DT_SCALE_NV = $8711;
  1682. GL_MAGNITUDE_SCALE_NV = $8712;
  1683. GL_VIBRANCE_SCALE_NV = $8713;
  1684. GL_HI_BIAS_NV = $8714;
  1685. GL_LO_BIAS_NV = $8715;
  1686. GL_DS_BIAS_NV = $8716;
  1687. GL_DT_BIAS_NV = $8717;
  1688. GL_MAGNITUDE_BIAS_NV = $8718;
  1689. GL_VIBRANCE_BIAS_NV = $8719;
  1690. GL_TEXTURE_BORDER_VALUES_NV = $871A;
  1691. GL_TEXTURE_HI_SIZE_NV = $871B;
  1692. GL_TEXTURE_LO_SIZE_NV = $871C;
  1693. GL_TEXTURE_DS_SIZE_NV = $871D;
  1694. GL_TEXTURE_DT_SIZE_NV = $871E;
  1695. GL_TEXTURE_MAG_SIZE_NV = $871F;
  1696. function Load_GL_NV_texture_shader: Boolean;
  1697. //***** GL_NV_texture_shader2 *****//
  1698. const
  1699. GL_DOT_PRODUCT_TEXTURE_3D_NV = $86EF;
  1700. // GL_HILO_NV { already defined }
  1701. // GL_DSDT_NV { already defined }
  1702. // GL_DSDT_MAG_NV { already defined }
  1703. // GL_DSDT_MAG_VIB_NV { already defined }
  1704. // GL_UNSIGNED_INT_S8_S8_8_8_NV { already defined }
  1705. // GL_UNSIGNED_INT_8_8_S8_S8_REV_NV { already defined }
  1706. // GL_SIGNED_RGBA_NV { already defined }
  1707. // GL_SIGNED_RGBA8_NV { already defined }
  1708. // GL_SIGNED_RGB_NV { already defined }
  1709. // GL_SIGNED_RGB8_NV { already defined }
  1710. // GL_SIGNED_LUMINANCE_NV { already defined }
  1711. // GL_SIGNED_LUMINANCE8_NV { already defined }
  1712. // GL_SIGNED_LUMINANCE_ALPHA_NV { already defined }
  1713. // GL_SIGNED_LUMINANCE8_ALPHA8_NV { already defined }
  1714. // GL_SIGNED_ALPHA_NV { already defined }
  1715. // GL_SIGNED_ALPHA8_NV { already defined }
  1716. // GL_SIGNED_INTENSITY_NV { already defined }
  1717. // GL_SIGNED_INTENSITY8_NV { already defined }
  1718. // GL_SIGNED_RGB_UNSIGNED_ALPHA_NV { already defined }
  1719. // GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV { already defined }
  1720. // GL_HILO16_NV { already defined }
  1721. // GL_SIGNED_HILO_NV { already defined }
  1722. // GL_SIGNED_HILO16_NV { already defined }
  1723. // GL_DSDT8_NV { already defined }
  1724. // GL_DSDT8_MAG8_NV { already defined }
  1725. // GL_DSDT_MAG_INTENSITY_NV { already defined }
  1726. // GL_DSDT8_MAG8_INTENSITY8_NV { already defined }
  1727. function Load_GL_NV_texture_shader2: Boolean;
  1728. //***** GL_NV_texture_shader3 *****//
  1729. const
  1730. GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = $8850;
  1731. GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = $8851;
  1732. GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = $8852;
  1733. GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = $8853;
  1734. GL_OFFSET_HILO_TEXTURE_2D_NV = $8854;
  1735. GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = $8855;
  1736. GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = $8856;
  1737. GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = $8857;
  1738. GL_DEPENDENT_HILO_TEXTURE_2D_NV = $8858;
  1739. GL_DEPENDENT_RGB_TEXTURE_3D_NV = $8859;
  1740. GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = $885A;
  1741. GL_DOT_PRODUCT_PASS_THROUGH_NV = $885B;
  1742. GL_DOT_PRODUCT_TEXTURE_1D_NV = $885C;
  1743. GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = $885D;
  1744. GL_HILO8_NV = $885E;
  1745. GL_SIGNED_HILO8_NV = $885F;
  1746. GL_FORCE_BLUE_TO_ONE_NV = $8860;
  1747. function Load_GL_NV_texture_shader3: Boolean;
  1748. //***** GL_NV_vertex_array_range *****//
  1749. const
  1750. GL_VERTEX_ARRAY_RANGE_NV = $851D;
  1751. GL_VERTEX_ARRAY_RANGE_LENGTH_NV = $851E;
  1752. GL_VERTEX_ARRAY_RANGE_VALID_NV = $851F;
  1753. GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = $8520;
  1754. GL_VERTEX_ARRAY_RANGE_POINTER_NV = $8521;
  1755. var
  1756. glVertexArrayRangeNV: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  1757. glFlushVertexArrayRangeNV: procedure(); extdecl;
  1758. {$IFDEF Windows}
  1759. wglAllocateMemoryNV: function(size: GLsizei; readFrequency: GLfloat; writeFrequency: GLfloat; priority: GLfloat): PGLvoid; extdecl;
  1760. wglFreeMemoryNV: procedure(pointer: PGLvoid); extdecl;
  1761. {$ENDIF}
  1762. function Load_GL_NV_vertex_array_range: Boolean;
  1763. //***** GL_NV_vertex_array_range2 *****//
  1764. const
  1765. GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = $8533;
  1766. function Load_GL_NV_vertex_array_range2: Boolean;
  1767. //***** GL_NV_vertex_program *****//
  1768. const
  1769. GL_VERTEX_PROGRAM_NV = $8620;
  1770. GL_VERTEX_PROGRAM_POINT_SIZE_NV = $8642;
  1771. GL_VERTEX_PROGRAM_TWO_SIDE_NV = $8643;
  1772. GL_VERTEX_STATE_PROGRAM_NV = $8621;
  1773. GL_ATTRIB_ARRAY_SIZE_NV = $8623;
  1774. GL_ATTRIB_ARRAY_STRIDE_NV = $8624;
  1775. GL_ATTRIB_ARRAY_TYPE_NV = $8625;
  1776. GL_CURRENT_ATTRIB_NV = $8626;
  1777. GL_PROGRAM_PARAMETER_NV = $8644;
  1778. GL_ATTRIB_ARRAY_POINTER_NV = $8645;
  1779. GL_PROGRAM_TARGET_NV = $8646;
  1780. GL_PROGRAM_LENGTH_NV = $8627;
  1781. GL_PROGRAM_RESIDENT_NV = $8647;
  1782. GL_PROGRAM_STRING_NV = $8628;
  1783. GL_TRACK_MATRIX_NV = $8648;
  1784. GL_TRACK_MATRIX_TRANSFORM_NV = $8649;
  1785. GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = $862E;
  1786. GL_MAX_TRACK_MATRICES_NV = $862F;
  1787. GL_CURRENT_MATRIX_STACK_DEPTH_NV = $8640;
  1788. GL_CURRENT_MATRIX_NV = $8641;
  1789. GL_VERTEX_PROGRAM_BINDING_NV = $864A;
  1790. GL_PROGRAM_ERROR_POSITION_NV = $864B;
  1791. GL_MODELVIEW_PROJECTION_NV = $8629;
  1792. GL_MATRIX0_NV = $8630;
  1793. GL_MATRIX1_NV = $8631;
  1794. GL_MATRIX2_NV = $8632;
  1795. GL_MATRIX3_NV = $8633;
  1796. GL_MATRIX4_NV = $8634;
  1797. GL_MATRIX5_NV = $8635;
  1798. GL_MATRIX6_NV = $8636;
  1799. GL_MATRIX7_NV = $8637;
  1800. GL_IDENTITY_NV = $862A;
  1801. GL_INVERSE_NV = $862B;
  1802. GL_TRANSPOSE_NV = $862C;
  1803. GL_INVERSE_TRANSPOSE_NV = $862D;
  1804. GL_VERTEX_ATTRIB_ARRAY0_NV = $8650;
  1805. GL_VERTEX_ATTRIB_ARRAY1_NV = $8651;
  1806. GL_VERTEX_ATTRIB_ARRAY2_NV = $8652;
  1807. GL_VERTEX_ATTRIB_ARRAY3_NV = $8653;
  1808. GL_VERTEX_ATTRIB_ARRAY4_NV = $8654;
  1809. GL_VERTEX_ATTRIB_ARRAY5_NV = $8655;
  1810. GL_VERTEX_ATTRIB_ARRAY6_NV = $8656;
  1811. GL_VERTEX_ATTRIB_ARRAY7_NV = $8657;
  1812. GL_VERTEX_ATTRIB_ARRAY8_NV = $8658;
  1813. GL_VERTEX_ATTRIB_ARRAY9_NV = $8659;
  1814. GL_VERTEX_ATTRIB_ARRAY10_NV = $865A;
  1815. GL_VERTEX_ATTRIB_ARRAY11_NV = $865B;
  1816. GL_VERTEX_ATTRIB_ARRAY12_NV = $865C;
  1817. GL_VERTEX_ATTRIB_ARRAY13_NV = $865D;
  1818. GL_VERTEX_ATTRIB_ARRAY14_NV = $865E;
  1819. GL_VERTEX_ATTRIB_ARRAY15_NV = $865F;
  1820. GL_MAP1_VERTEX_ATTRIB0_4_NV = $8660;
  1821. GL_MAP1_VERTEX_ATTRIB1_4_NV = $8661;
  1822. GL_MAP1_VERTEX_ATTRIB2_4_NV = $8662;
  1823. GL_MAP1_VERTEX_ATTRIB3_4_NV = $8663;
  1824. GL_MAP1_VERTEX_ATTRIB4_4_NV = $8664;
  1825. GL_MAP1_VERTEX_ATTRIB5_4_NV = $8665;
  1826. GL_MAP1_VERTEX_ATTRIB6_4_NV = $8666;
  1827. GL_MAP1_VERTEX_ATTRIB7_4_NV = $8667;
  1828. GL_MAP1_VERTEX_ATTRIB8_4_NV = $8668;
  1829. GL_MAP1_VERTEX_ATTRIB9_4_NV = $8669;
  1830. GL_MAP1_VERTEX_ATTRIB10_4_NV = $866A;
  1831. GL_MAP1_VERTEX_ATTRIB11_4_NV = $866B;
  1832. GL_MAP1_VERTEX_ATTRIB12_4_NV = $866C;
  1833. GL_MAP1_VERTEX_ATTRIB13_4_NV = $866D;
  1834. GL_MAP1_VERTEX_ATTRIB14_4_NV = $866E;
  1835. GL_MAP1_VERTEX_ATTRIB15_4_NV = $866F;
  1836. GL_MAP2_VERTEX_ATTRIB0_4_NV = $8670;
  1837. GL_MAP2_VERTEX_ATTRIB1_4_NV = $8671;
  1838. GL_MAP2_VERTEX_ATTRIB2_4_NV = $8672;
  1839. GL_MAP2_VERTEX_ATTRIB3_4_NV = $8673;
  1840. GL_MAP2_VERTEX_ATTRIB4_4_NV = $8674;
  1841. GL_MAP2_VERTEX_ATTRIB5_4_NV = $8675;
  1842. GL_MAP2_VERTEX_ATTRIB6_4_NV = $8676;
  1843. GL_MAP2_VERTEX_ATTRIB7_4_NV = $8677;
  1844. GL_MAP2_VERTEX_ATTRIB8_4_NV = $8678;
  1845. GL_MAP2_VERTEX_ATTRIB9_4_NV = $8679;
  1846. GL_MAP2_VERTEX_ATTRIB10_4_NV = $867A;
  1847. GL_MAP2_VERTEX_ATTRIB11_4_NV = $867B;
  1848. GL_MAP2_VERTEX_ATTRIB12_4_NV = $867C;
  1849. GL_MAP2_VERTEX_ATTRIB13_4_NV = $867D;
  1850. GL_MAP2_VERTEX_ATTRIB14_4_NV = $867E;
  1851. GL_MAP2_VERTEX_ATTRIB15_4_NV = $867F;
  1852. var
  1853. glBindProgramNV: procedure(target: GLenum; id: GLuint); extdecl;
  1854. glDeleteProgramsNV: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  1855. glExecuteProgramNV: procedure(target: GLenum; id: GLuint; const params: PGLfloat); extdecl;
  1856. glGenProgramsNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1857. glAreProgramsResidentNV: function(n: GLsizei; const ids: PGLuint; residences: PGLboolean): GLboolean; extdecl;
  1858. glRequestResidentProgramsNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1859. glGetProgramParameterfvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1860. glGetProgramParameterdvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  1861. glGetProgramivNV: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  1862. glGetProgramStringNV: procedure(id: GLuint; pname: GLenum; _program: PGLubyte); extdecl;
  1863. glGetTrackMatrixivNV: procedure(target: GLenum; address: GLuint; pname: GLenum; params: PGLint); extdecl;
  1864. glGetVertexAttribdvNV: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  1865. glGetVertexAttribfvNV: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1866. glGetVertexAttribivNV: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  1867. glGetVertexAttribPointervNV: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  1868. glIsProgramNV: function(id: GLuint): GLboolean; extdecl;
  1869. glLoadProgramNV: procedure(target: GLenum; id: GLuint; len: GLsizei; const _program: PGLubyte); extdecl;
  1870. glProgramParameter4fNV: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  1871. glProgramParameter4fvNV: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  1872. glProgramParameters4dvNV: procedure(target: GLenum; index: GLuint; num: GLuint; const params: PGLdouble); extdecl;
  1873. glProgramParameters4fvNV: procedure(target: GLenum; index: GLuint; num: GLuint; const params: PGLfloat); extdecl;
  1874. glTrackMatrixNV: procedure(target: GLenum; address: GLuint; matrix: GLenum; transform: GLenum); extdecl;
  1875. glVertexAttribPointerNV: procedure(index: GLuint; size: GLint; _type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  1876. glVertexAttrib1sNV: procedure(index: GLuint; x: GLshort); extdecl;
  1877. glVertexAttrib1fNV: procedure(index: GLuint; x: GLfloat); extdecl;
  1878. glVertexAttrib1dNV: procedure(index: GLuint; x: GLdouble); extdecl;
  1879. glVertexAttrib2sNV: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  1880. glVertexAttrib2fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  1881. glVertexAttrib2dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  1882. glVertexAttrib3sNV: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  1883. glVertexAttrib3fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  1884. glVertexAttrib3dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  1885. glVertexAttrib4sNV: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  1886. glVertexAttrib4fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  1887. glVertexAttrib4dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  1888. glVertexAttrib4ubNV: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  1889. glVertexAttrib1svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1890. glVertexAttrib1fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1891. glVertexAttrib1dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1892. glVertexAttrib2svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1893. glVertexAttrib2fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1894. glVertexAttrib2dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1895. glVertexAttrib3svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1896. glVertexAttrib3fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1897. glVertexAttrib3dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1898. glVertexAttrib4svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1899. glVertexAttrib4fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1900. glVertexAttrib4dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1901. glVertexAttrib4ubvNV: procedure(index: GLuint; const v: PGLubyte); extdecl;
  1902. glVertexAttribs1svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1903. glVertexAttribs1fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1904. glVertexAttribs1dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1905. glVertexAttribs2svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1906. glVertexAttribs2fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1907. glVertexAttribs2dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1908. glVertexAttribs3svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1909. glVertexAttribs3fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1910. glVertexAttribs3dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1911. glVertexAttribs4svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1912. glVertexAttribs4fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1913. glVertexAttribs4dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1914. glVertexAttribs4ubvNV: procedure(index: GLuint; n: GLsizei; const v: PGLubyte); extdecl;
  1915. function Load_GL_NV_vertex_program: Boolean;
  1916. //***** GL_NV_vertex_program1_1 *****//
  1917. function Load_GL_NV_vertex_program1_1: Boolean;
  1918. //***** GL_ATI_element_array *****//
  1919. const
  1920. GL_ELEMENT_ARRAY_ATI = $8768;
  1921. GL_ELEMENT_ARRAY_TYPE_ATI = $8769;
  1922. GL_ELEMENT_ARRAY_POINTER_ATI = $876A;
  1923. var
  1924. glElementPointerATI: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  1925. glDrawElementArrayATI: procedure(mode: GLenum; count: GLsizei); extdecl;
  1926. glDrawRangeElementArrayATI: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei); extdecl;
  1927. function Load_GL_ATI_element_array: Boolean;
  1928. //***** GL_ATI_envmap_bumpmap *****//
  1929. const
  1930. GL_BUMP_ROT_MATRIX_ATI = $8775;
  1931. GL_BUMP_ROT_MATRIX_SIZE_ATI = $8776;
  1932. GL_BUMP_NUM_TEX_UNITS_ATI = $8777;
  1933. GL_BUMP_TEX_UNITS_ATI = $8778;
  1934. GL_DUDV_ATI = $8779;
  1935. GL_DU8DV8_ATI = $877A;
  1936. GL_BUMP_ENVMAP_ATI = $877B;
  1937. GL_BUMP_TARGET_ATI = $877C;
  1938. var
  1939. glTexBumpParameterivATI: procedure(pname: GLenum; param: PGLint); extdecl;
  1940. glTexBumpParameterfvATI: procedure(pname: GLenum; param: PGLfloat); extdecl;
  1941. glGetTexBumpParameterivATI: procedure(pname: GLenum; param: PGLint); extdecl;
  1942. glGetTexBumpParameterfvATI: procedure(pname: GLenum; param: PGLfloat); extdecl;
  1943. function Load_GL_ATI_envmap_bumpmap: Boolean;
  1944. //***** GL_ATI_fragment_shader *****//
  1945. const
  1946. GL_FRAGMENT_SHADER_ATI = $8920;
  1947. GL_REG_0_ATI = $8921;
  1948. GL_REG_1_ATI = $8922;
  1949. GL_REG_2_ATI = $8923;
  1950. GL_REG_3_ATI = $8924;
  1951. GL_REG_4_ATI = $8925;
  1952. GL_REG_5_ATI = $8926;
  1953. GL_CON_0_ATI = $8941;
  1954. GL_CON_1_ATI = $8942;
  1955. GL_CON_2_ATI = $8943;
  1956. GL_CON_3_ATI = $8944;
  1957. GL_CON_4_ATI = $8945;
  1958. GL_CON_5_ATI = $8946;
  1959. GL_CON_6_ATI = $8947;
  1960. GL_CON_7_ATI = $8948;
  1961. GL_MOV_ATI = $8961;
  1962. GL_ADD_ATI = $8963;
  1963. GL_MUL_ATI = $8964;
  1964. GL_SUB_ATI = $8965;
  1965. GL_DOT3_ATI = $8966;
  1966. GL_DOT4_ATI = $8967;
  1967. GL_MAD_ATI = $8968;
  1968. GL_LERP_ATI = $8969;
  1969. GL_CND_ATI = $896A;
  1970. GL_CND0_ATI = $896B;
  1971. GL_DOT2_ADD_ATI = $896C;
  1972. GL_SECONDARY_INTERPOLATOR_ATI = $896D;
  1973. GL_SWIZZLE_STR_ATI = $8976;
  1974. GL_SWIZZLE_STQ_ATI = $8977;
  1975. GL_SWIZZLE_STR_DR_ATI = $8978;
  1976. GL_SWIZZLE_STQ_DQ_ATI = $8979;
  1977. GL_RED_BIT_ATI = $0001;
  1978. GL_GREEN_BIT_ATI = $0002;
  1979. GL_BLUE_BIT_ATI = $0004;
  1980. GL_2X_BIT_ATI = $0001;
  1981. GL_4X_BIT_ATI = $0002;
  1982. GL_8X_BIT_ATI = $0004;
  1983. GL_HALF_BIT_ATI = $0008;
  1984. GL_QUARTER_BIT_ATI = $0010;
  1985. GL_EIGHTH_BIT_ATI = $0020;
  1986. GL_SATURATE_BIT_ATI = $0040;
  1987. // GL_2X_BIT_ATI { already defined }
  1988. GL_COMP_BIT_ATI = $0002;
  1989. GL_NEGATE_BIT_ATI = $0004;
  1990. GL_BIAS_BIT_ATI = $0008;
  1991. var
  1992. glGenFragmentShadersATI: function(range: GLuint): GLuint; extdecl;
  1993. glBindFragmentShaderATI: procedure(id: GLuint); extdecl;
  1994. glDeleteFragmentShaderATI: procedure(id: GLuint); extdecl;
  1995. glBeginFragmentShaderATI: procedure(); extdecl;
  1996. glEndFragmentShaderATI: procedure(); extdecl;
  1997. glPassTexCoordATI: procedure(dst: GLuint; coord: GLuint; swizzle: GLenum); extdecl;
  1998. glSampleMapATI: procedure(dst: GLuint; interp: GLuint; swizzle: GLenum); extdecl;
  1999. glColorFragmentOp1ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint); extdecl;
  2000. glColorFragmentOp2ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint); extdecl;
  2001. glColorFragmentOp3ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint; arg3: GLuint; arg3Rep: GLuint; arg3Mod: GLuint); extdecl;
  2002. glAlphaFragmentOp1ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint); extdecl;
  2003. glAlphaFragmentOp2ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint); extdecl;
  2004. glAlphaFragmentOp3ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint; arg3: GLuint; arg3Rep: GLuint; arg3Mod: GLuint); extdecl;
  2005. glSetFragmentShaderConstantATI: procedure(dst: GLuint; const value: PGLfloat); extdecl;
  2006. function Load_GL_ATI_fragment_shader: Boolean;
  2007. //***** GL_ATI_pn_triangles *****//
  2008. const
  2009. GL_PN_TRIANGLES_ATI = $87F0;
  2010. GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = $87F1;
  2011. GL_PN_TRIANGLES_POINT_MODE_ATI = $87F2;
  2012. GL_PN_TRIANGLES_NORMAL_MODE_ATI = $87F3;
  2013. GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = $87F4;
  2014. GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = $87F5;
  2015. GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = $87F6;
  2016. GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = $87F7;
  2017. GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = $87F8;
  2018. var
  2019. glPNTrianglesiATI: procedure(pname: GLenum; param: GLint); extdecl;
  2020. glPNTrianglesfATI: procedure(pname: GLenum; param: GLfloat); extdecl;
  2021. function Load_GL_ATI_pn_triangles: Boolean;
  2022. //***** GL_ATI_texture_mirror_once *****//
  2023. const
  2024. GL_MIRROR_CLAMP_ATI = $8742;
  2025. GL_MIRROR_CLAMP_TO_EDGE_ATI = $8743;
  2026. function Load_GL_ATI_texture_mirror_once: Boolean;
  2027. //***** GL_ATI_vertex_array_object *****//
  2028. const
  2029. GL_STATIC_ATI = $8760;
  2030. GL_DYNAMIC_ATI = $8761;
  2031. GL_PRESERVE_ATI = $8762;
  2032. GL_DISCARD_ATI = $8763;
  2033. GL_OBJECT_BUFFER_SIZE_ATI = $8764;
  2034. GL_OBJECT_BUFFER_USAGE_ATI = $8765;
  2035. GL_ARRAY_OBJECT_BUFFER_ATI = $8766;
  2036. GL_ARRAY_OBJECT_OFFSET_ATI = $8767;
  2037. var
  2038. glNewObjectBufferATI: function(size: GLsizei; const pointer: PGLvoid; usage: GLenum): GLuint; extdecl;
  2039. glIsObjectBufferATI: function(buffer: GLuint): GLboolean; extdecl;
  2040. glUpdateObjectBufferATI: procedure(buffer: GLuint; offset: GLuint; size: GLsizei; const pointer: PGLvoid; preserve: GLenum); extdecl;
  2041. glGetObjectBufferfvATI: procedure(buffer: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  2042. glGetObjectBufferivATI: procedure(buffer: GLuint; pname: GLenum; params: PGLint); extdecl;
  2043. glDeleteObjectBufferATI: procedure(buffer: GLuint); extdecl;
  2044. glArrayObjectATI: procedure(_array: GLenum; size: GLint; _type: GLenum; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  2045. glGetArrayObjectfvATI: procedure(_array: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  2046. glGetArrayObjectivATI: procedure(_array: GLenum; pname: GLenum; params: PGLint); extdecl;
  2047. glVariantArrayObjectATI: procedure(id: GLuint; _type: GLenum; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  2048. glGetVariantArrayObjectfvATI: procedure(id: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  2049. glGetVariantArrayObjectivATI: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  2050. function Load_GL_ATI_vertex_array_object: Boolean;
  2051. //***** GL_ATI_vertex_streams *****//
  2052. const
  2053. GL_MAX_VERTEX_STREAMS_ATI = $876B;
  2054. GL_VERTEX_STREAM0_ATI = $876C;
  2055. GL_VERTEX_STREAM1_ATI = $876D;
  2056. GL_VERTEX_STREAM2_ATI = $876E;
  2057. GL_VERTEX_STREAM3_ATI = $876F;
  2058. GL_VERTEX_STREAM4_ATI = $8770;
  2059. GL_VERTEX_STREAM5_ATI = $8771;
  2060. GL_VERTEX_STREAM6_ATI = $8772;
  2061. GL_VERTEX_STREAM7_ATI = $8773;
  2062. GL_VERTEX_SOURCE_ATI = $8774;
  2063. var
  2064. glVertexStream1s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2065. glVertexStream1i: procedure(stream: GLenum; coords: GLint); extdecl;
  2066. glVertexStream1f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2067. glVertexStream1d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2068. glVertexStream1sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2069. glVertexStream1iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2070. glVertexStream1fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2071. glVertexStream1dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2072. glVertexStream2s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2073. glVertexStream2i: procedure(stream: GLenum; coords: GLint); extdecl;
  2074. glVertexStream2f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2075. glVertexStream2d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2076. glVertexStream2sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2077. glVertexStream2iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2078. glVertexStream2fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2079. glVertexStream2dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2080. glVertexStream3s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2081. glVertexStream3i: procedure(stream: GLenum; coords: GLint); extdecl;
  2082. glVertexStream3f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2083. glVertexStream3d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2084. glVertexStream3sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2085. glVertexStream3iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2086. glVertexStream3fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2087. glVertexStream3dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2088. glVertexStream4s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2089. glVertexStream4i: procedure(stream: GLenum; coords: GLint); extdecl;
  2090. glVertexStream4f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2091. glVertexStream4d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2092. glVertexStream4sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2093. glVertexStream4iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2094. glVertexStream4fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2095. glVertexStream4dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2096. glNormalStream3b: procedure(stream: GLenum; coords: GLbyte); extdecl;
  2097. glNormalStream3s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2098. glNormalStream3i: procedure(stream: GLenum; coords: GLint); extdecl;
  2099. glNormalStream3f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2100. glNormalStream3d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2101. glNormalStream3bv: procedure(stream: GLenum; coords: GLbyte); extdecl;
  2102. glNormalStream3sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2103. glNormalStream3iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2104. glNormalStream3fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2105. glNormalStream3dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2106. glClientActiveVertexStream: procedure(stream: GLenum); extdecl;
  2107. glVertexBlendEnvi: procedure(pname: GLenum; param: GLint); extdecl;
  2108. glVertexBlendEnvf: procedure(pname: GLenum; param: GLfloat); extdecl;
  2109. function Load_GL_ATI_vertex_streams: Boolean;
  2110. {$IFDEF Windows}
  2111. //***** WGL_I3D_image_buffer *****//
  2112. const
  2113. WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = $0001;
  2114. WGL_IMAGE_BUFFER_LOCK_I3D = $0002;
  2115. var
  2116. wglCreateImageBufferI3D: function(hDC: HDC; dwSize: DWORD; uFlags: UINT): PGLvoid; extdecl;
  2117. wglDestroyImageBufferI3D: function(hDC: HDC; pAddress: PGLvoid): BOOL; extdecl;
  2118. wglAssociateImageBufferEventsI3D: function(hdc: HDC; pEvent: PHandle; pAddress: PGLvoid; pSize: PDWORD; count: UINT): BOOL; extdecl;
  2119. wglReleaseImageBufferEventsI3D: function(hdc: HDC; pAddress: PGLvoid; count: UINT): BOOL; extdecl;
  2120. function Load_WGL_I3D_image_buffer: Boolean;
  2121. //***** WGL_I3D_swap_frame_lock *****//
  2122. var
  2123. wglEnableFrameLockI3D: function(): BOOL; extdecl;
  2124. wglDisableFrameLockI3D: function(): BOOL; extdecl;
  2125. wglIsEnabledFrameLockI3D: function(pFlag: PBOOL): BOOL; extdecl;
  2126. wglQueryFrameLockMasterI3D: function(pFlag: PBOOL): BOOL; extdecl;
  2127. function Load_WGL_I3D_swap_frame_lock: Boolean;
  2128. //***** WGL_I3D_swap_frame_usage *****//
  2129. var
  2130. wglGetFrameUsageI3D: function(pUsage: PGLfloat): BOOL; extdecl;
  2131. wglBeginFrameTrackingI3D: function(): BOOL; extdecl;
  2132. wglEndFrameTrackingI3D: function(): BOOL; extdecl;
  2133. wglQueryFrameTrackingI3D: function(pFrameCount: PDWORD; pMissedFrames: PDWORD; pLastMissedUsage: PGLfloat): BOOL; extdecl;
  2134. function Load_WGL_I3D_swap_frame_usage: Boolean;
  2135. {$ENDIF}
  2136. //***** GL_3DFX_texture_compression_FXT1 *****//
  2137. const
  2138. GL_COMPRESSED_RGB_FXT1_3DFX = $86B0;
  2139. GL_COMPRESSED_RGBA_FXT1_3DFX = $86B1;
  2140. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  2141. //***** GL_IBM_cull_vertex *****//
  2142. const
  2143. GL_CULL_VERTEX_IBM = $1928A;
  2144. function Load_GL_IBM_cull_vertex: Boolean;
  2145. //***** GL_IBM_multimode_draw_arrays *****//
  2146. var
  2147. glMultiModeDrawArraysIBM: procedure(mode: PGLenum; first: PGLint; count: PGLsizei; primcount: GLsizei; modestride: GLint); extdecl;
  2148. glMultiModeDrawElementsIBM: procedure(mode: PGLenum; count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei; modestride: GLint); extdecl;
  2149. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  2150. //***** GL_IBM_raster_pos_clip *****//
  2151. const
  2152. GL_RASTER_POSITION_UNCLIPPED_IBM = $19262;
  2153. function Load_GL_IBM_raster_pos_clip: Boolean;
  2154. //***** GL_IBM_texture_mirrored_repeat *****//
  2155. const
  2156. GL_MIRRORED_REPEAT_IBM = $8370;
  2157. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  2158. //***** GL_IBM_vertex_array_lists *****//
  2159. const
  2160. GL_VERTEX_ARRAY_LIST_IBM = $1929E;
  2161. GL_NORMAL_ARRAY_LIST_IBM = $1929F;
  2162. GL_COLOR_ARRAY_LIST_IBM = $192A0;
  2163. GL_INDEX_ARRAY_LIST_IBM = $192A1;
  2164. GL_TEXTURE_COORD_ARRAY_LIST_IBM = $192A2;
  2165. GL_EDGE_FLAG_ARRAY_LIST_IBM = $192A3;
  2166. GL_FOG_COORDINATE_ARRAY_LIST_IBM = $192A4;
  2167. GL_SECONDARY_COLOR_ARRAY_LIST_IBM = $192A5;
  2168. GL_VERTEX_ARRAY_LIST_STRIDE_IBM = $192A8;
  2169. GL_NORMAL_ARRAY_LIST_STRIDE_IBM = $192A9;
  2170. GL_COLOR_ARRAY_LIST_STRIDE_IBM = $192AA;
  2171. GL_INDEX_ARRAY_LIST_STRIDE_IBM = $192AB;
  2172. GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = $192AC;
  2173. GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = $192AD;
  2174. GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = $192AE;
  2175. GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = $192AF;
  2176. var
  2177. glColorPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2178. glSecondaryColorPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2179. glEdgeFlagPointerListIBM: procedure(stride: GLint; const pointer: PGLboolean; ptrstride: GLint); extdecl;
  2180. glFogCoordPointerListIBM: procedure(_type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2181. glNormalPointerListIBM: procedure(_type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2182. glTexCoordPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2183. glVertexPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2184. function Load_GL_IBM_vertex_array_lists: Boolean;
  2185. //***** GL_MESA_resize_buffers *****//
  2186. var
  2187. glResizeBuffersMESA: procedure(); extdecl;
  2188. function Load_GL_MESA_resize_buffers: Boolean;
  2189. //***** GL_MESA_window_pos *****//
  2190. var
  2191. glWindowPos2dMESA: procedure(x: GLdouble; y: GLdouble); extdecl;
  2192. glWindowPos2fMESA: procedure(x: GLfloat; y: GLfloat); extdecl;
  2193. glWindowPos2iMESA: procedure(x: GLint; y: GLint); extdecl;
  2194. glWindowPos2sMESA: procedure(x: GLshort; y: GLshort); extdecl;
  2195. glWindowPos2ivMESA: procedure(const p: PGLint); extdecl;
  2196. glWindowPos2svMESA: procedure(const p: PGLshort); extdecl;
  2197. glWindowPos2fvMESA: procedure(const p: PGLfloat); extdecl;
  2198. glWindowPos2dvMESA: procedure(const p: PGLdouble); extdecl;
  2199. glWindowPos3iMESA: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  2200. glWindowPos3sMESA: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  2201. glWindowPos3fMESA: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2202. glWindowPos3dMESA: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  2203. glWindowPos3ivMESA: procedure(const p: PGLint); extdecl;
  2204. glWindowPos3svMESA: procedure(const p: PGLshort); extdecl;
  2205. glWindowPos3fvMESA: procedure(const p: PGLfloat); extdecl;
  2206. glWindowPos3dvMESA: procedure(const p: PGLdouble); extdecl;
  2207. glWindowPos4iMESA: procedure(x: GLint; y: GLint; z: GLint; w: GLint); extdecl;
  2208. glWindowPos4sMESA: procedure(x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  2209. glWindowPos4fMESA: procedure(x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2210. glWindowPos4dMESA: procedure(x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  2211. glWindowPos4ivMESA: procedure(const p: PGLint); extdecl;
  2212. glWindowPos4svMESA: procedure(const p: PGLshort); extdecl;
  2213. glWindowPos4fvMESA: procedure(const p: PGLfloat); extdecl;
  2214. glWindowPos4dvMESA: procedure(const p: PGLdouble); extdecl;
  2215. function Load_GL_MESA_window_pos: Boolean;
  2216. //***** GL_OML_interlace *****//
  2217. const
  2218. GL_INTERLACE_OML = $8980;
  2219. GL_INTERLACE_READ_OML = $8981;
  2220. function Load_GL_OML_interlace: Boolean;
  2221. //***** GL_OML_resample *****//
  2222. const
  2223. GL_PACK_RESAMPLE_OML = $8984;
  2224. GL_UNPACK_RESAMPLE_OML = $8985;
  2225. GL_RESAMPLE_REPLICATE_OML = $8986;
  2226. GL_RESAMPLE_ZERO_FILL_OML = $8987;
  2227. GL_RESAMPLE_AVERAGE_OML = $8988;
  2228. GL_RESAMPLE_DECIMATE_OML = $8989;
  2229. // GL_RESAMPLE_AVERAGE_OML { already defined }
  2230. function Load_GL_OML_resample: Boolean;
  2231. //***** GL_OML_subsample *****//
  2232. const
  2233. GL_FORMAT_SUBSAMPLE_24_24_OML = $8982;
  2234. GL_FORMAT_SUBSAMPLE_244_244_OML = $8983;
  2235. function Load_GL_OML_subsample: Boolean;
  2236. //***** GL_SGIS_generate_mipmap *****//
  2237. const
  2238. GL_GENERATE_MIPMAP_SGIS = $8191;
  2239. GL_GENERATE_MIPMAP_HINT_SGIS = $8192;
  2240. function Load_GL_SGIS_generate_mipmap: Boolean;
  2241. //***** GL_SGIS_multisample *****//
  2242. const
  2243. GLX_SAMPLE_BUFFERS_SGIS = $186A0;
  2244. GLX_SAMPLES_SGIS = $186A1;
  2245. GL_MULTISAMPLE_SGIS = $809D;
  2246. GL_SAMPLE_ALPHA_TO_MASK_SGIS = $809E;
  2247. GL_SAMPLE_ALPHA_TO_ONE_SGIS = $809F;
  2248. GL_SAMPLE_MASK_SGIS = $80A0;
  2249. GL_MULTISAMPLE_BIT_EXT = $20000000;
  2250. GL_1PASS_SGIS = $80A1;
  2251. GL_2PASS_0_SGIS = $80A2;
  2252. GL_2PASS_1_SGIS = $80A3;
  2253. GL_4PASS_0_SGIS = $80A4;
  2254. GL_4PASS_1_SGIS = $80A5;
  2255. GL_4PASS_2_SGIS = $80A6;
  2256. GL_4PASS_3_SGIS = $80A7;
  2257. GL_SAMPLE_BUFFERS_SGIS = $80A8;
  2258. GL_SAMPLES_SGIS = $80A9;
  2259. GL_SAMPLE_MASK_VALUE_SGIS = $80AA;
  2260. GL_SAMPLE_MASK_INVERT_SGIS = $80AB;
  2261. GL_SAMPLE_PATTERN_SGIS = $80AC;
  2262. var
  2263. glSampleMaskSGIS: procedure(value: GLclampf; invert: GLboolean); extdecl;
  2264. glSamplePatternSGIS: procedure(pattern: GLenum); extdecl;
  2265. function Load_GL_SGIS_multisample: Boolean;
  2266. //***** GL_SGIS_pixel_texture *****//
  2267. const
  2268. GL_PIXEL_TEXTURE_SGIS = $8353;
  2269. GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = $8354;
  2270. GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = $8355;
  2271. GL_PIXEL_GROUP_COLOR_SGIS = $8356;
  2272. var
  2273. glPixelTexGenParameteriSGIS: procedure(pname: GLenum; param: GLint); extdecl;
  2274. glPixelTexGenParameterfSGIS: procedure(pname: GLenum; param: GLfloat); extdecl;
  2275. glGetPixelTexGenParameterivSGIS: procedure(pname: GLenum; params: GLint); extdecl;
  2276. glGetPixelTexGenParameterfvSGIS: procedure(pname: GLenum; params: GLfloat); extdecl;
  2277. function Load_GL_SGIS_pixel_texture: Boolean;
  2278. //***** GL_SGIS_texture_border_clamp *****//
  2279. // GL_CLAMP_TO_BORDER_SGIS { already defined }
  2280. function Load_GL_SGIS_texture_border_clamp: Boolean;
  2281. //***** GL_SGIS_texture_color_mask *****//
  2282. const
  2283. GL_TEXTURE_COLOR_WRITEMASK_SGIS = $81EF;
  2284. var
  2285. glTextureColorMaskSGIS: procedure(r: GLboolean; g: GLboolean; b: GLboolean; a: GLboolean); extdecl;
  2286. function Load_GL_SGIS_texture_color_mask: Boolean;
  2287. //***** GL_SGIS_texture_edge_clamp *****//
  2288. const
  2289. GL_CLAMP_TO_EDGE_SGIS = $812F;
  2290. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  2291. //***** GL_SGIS_texture_lod *****//
  2292. const
  2293. GL_TEXTURE_MIN_LOD_SGIS = $813A;
  2294. GL_TEXTURE_MAX_LOD_SGIS = $813B;
  2295. GL_TEXTURE_BASE_LEVEL_SGIS = $813C;
  2296. GL_TEXTURE_MAX_LEVEL_SGIS = $813D;
  2297. function Load_GL_SGIS_texture_lod: Boolean;
  2298. //***** GL_SGIS_depth_texture *****//
  2299. const
  2300. GL_DEPTH_COMPONENT16_SGIX = $81A5;
  2301. GL_DEPTH_COMPONENT24_SGIX = $81A6;
  2302. GL_DEPTH_COMPONENT32_SGIX = $81A7;
  2303. function Load_GL_SGIS_depth_texture: Boolean;
  2304. //***** GL_SGIX_fog_offset *****//
  2305. const
  2306. GL_FOG_OFFSET_SGIX = $8198;
  2307. GL_FOG_OFFSET_VALUE_SGIX = $8199;
  2308. function Load_GL_SGIX_fog_offset: Boolean;
  2309. //***** GL_SGIX_interlace *****//
  2310. const
  2311. GL_INTERLACE_SGIX = $8094;
  2312. function Load_GL_SGIX_interlace: Boolean;
  2313. //***** GL_SGIX_shadow_ambient *****//
  2314. const
  2315. GL_SHADOW_AMBIENT_SGIX = $80BF;
  2316. function Load_GL_SGIX_shadow_ambient: Boolean;
  2317. //***** GL_SGI_color_matrix *****//
  2318. const
  2319. GL_COLOR_MATRIX_SGI = $80B1;
  2320. GL_COLOR_MATRIX_STACK_DEPTH_SGI = $80B2;
  2321. GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = $80B3;
  2322. GL_POST_COLOR_MATRIX_RED_SCALE_SGI = $80B4;
  2323. GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = $80B5;
  2324. GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = $80B6;
  2325. GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = $80B7;
  2326. GL_POST_COLOR_MATRIX_RED_BIAS_SGI = $80B8;
  2327. GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = $80B9;
  2328. GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = $80BA;
  2329. GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = $80BB;
  2330. function Load_GL_SGI_color_matrix: Boolean;
  2331. //***** GL_SGI_color_table *****//
  2332. const
  2333. GL_COLOR_TABLE_SGI = $80D0;
  2334. GL_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D1;
  2335. GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D2;
  2336. GL_PROXY_COLOR_TABLE_SGI = $80D3;
  2337. GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D4;
  2338. GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D5;
  2339. GL_COLOR_TABLE_SCALE_SGI = $80D6;
  2340. GL_COLOR_TABLE_BIAS_SGI = $80D7;
  2341. GL_COLOR_TABLE_FORMAT_SGI = $80D8;
  2342. GL_COLOR_TABLE_WIDTH_SGI = $80D9;
  2343. GL_COLOR_TABLE_RED_SIZE_SGI = $80DA;
  2344. GL_COLOR_TABLE_GREEN_SIZE_SGI = $80DB;
  2345. GL_COLOR_TABLE_BLUE_SIZE_SGI = $80DC;
  2346. GL_COLOR_TABLE_ALPHA_SIZE_SGI = $80DD;
  2347. GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = $80DE;
  2348. GL_COLOR_TABLE_INTENSITY_SIZE_SGI = $80DF;
  2349. var
  2350. glColorTableSGI: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const table: PGLvoid); extdecl;
  2351. glCopyColorTableSGI: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  2352. glColorTableParameterivSGI: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  2353. glColorTableParameterfvSGI: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  2354. glGetColorTableSGI: procedure(target: GLenum; format: GLenum; _type: GLenum; table: PGLvoid); extdecl;
  2355. glGetColorTableParameterivSGI: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  2356. glGetColorTableParameterfvSGI: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  2357. function Load_GL_SGI_color_table: Boolean;
  2358. //***** GL_SGI_texture_color_table *****//
  2359. const
  2360. GL_TEXTURE_COLOR_TABLE_SGI = $80BC;
  2361. GL_PROXY_TEXTURE_COLOR_TABLE_SGI = $80BD;
  2362. function Load_GL_SGI_texture_color_table: Boolean;
  2363. //***** GL_SUN_vertex *****//
  2364. var
  2365. glColor4ubVertex2fSUN: procedure(r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat); extdecl;
  2366. glColor4ubVertex2fvSUN: procedure(const c: PGLubyte; const v: PGLfloat); extdecl;
  2367. glColor4ubVertex3fSUN: procedure(r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2368. glColor4ubVertex3fvSUN: procedure(const c: PGLubyte; const v: PGLfloat); extdecl;
  2369. glColor3fVertex3fSUN: procedure(r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2370. glColor3fVertex3fvSUN: procedure(const c: PGLfloat; const v: PGLfloat); extdecl;
  2371. glNormal3fVertex3fSUN: procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2372. glNormal3fVertex3fvSUN: procedure(const n: PGLfloat; const v: PGLfloat); extdecl;
  2373. glColor4fNormal3fVertex3fSUN: procedure(r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2374. glColor4fNormal3fVertex3fvSUN: procedure(const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2375. glTexCoord2fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2376. glTexCoord2fVertex3fvSUN: procedure(const tc: PGLfloat; const v: PGLfloat); extdecl;
  2377. glTexCoord4fVertex4fSUN: procedure(s: GLfloat; t: GLfloat; p: GLfloat; q: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2378. glTexCoord4fVertex4fvSUN: procedure(const tc: PGLfloat; const v: PGLfloat); extdecl;
  2379. glTexCoord2fColor4ubVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2380. glTexCoord2fColor4ubVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLubyte; const v: PGLfloat); extdecl;
  2381. glTexCoord2fColor3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2382. glTexCoord2fColor3fVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const v: PGLfloat); extdecl;
  2383. glTexCoord2fNormal3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2384. glTexCoord2fNormal3fVertex3fvSUN: procedure(const tc: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2385. glTexCoord2fColor4fNormal3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2386. glTexCoord2fColor4fNormal3fVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2387. glTexCoord4fColor4fNormal3fVertex4fSUN: procedure(s: GLfloat; t: GLfloat; p: GLfloat; q: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2388. glTexCoord4fColor4fNormal3fVertex4fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2389. glReplacementCodeuiVertex3fSUN: procedure(rc: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2390. glReplacementCodeuiVertex3fvSUN: procedure(const rc: PGLuint; const v: PGLfloat); extdecl;
  2391. glReplacementCodeuiColor4ubVertex3fSUN: procedure(rc: GLuint; r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2392. glReplacementCodeuiColor4ubVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLubyte; const v: PGLfloat); extdecl;
  2393. glReplacementCodeuiColor3fVertex3fSUN: procedure(rc: GLuint; r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2394. glReplacementCodeuiColor3fVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLfloat; const v: PGLfloat); extdecl;
  2395. glReplacementCodeuiNormal3fVertex3fSUN: procedure(rc: GLuint; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2396. glReplacementCodeuiNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const n: PGLfloat; const v: PGLfloat); extdecl;
  2397. glReplacementCodeuiColor4fNormal3fVertex3fSUN: procedure(rc: GLuint; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2398. glReplacementCodeuiColor4fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2399. glReplacementCodeuiTexCoord2fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2400. glReplacementCodeuiTexCoord2fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const v: PGLfloat); extdecl;
  2401. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2402. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2403. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2404. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2405. function Load_GL_SUN_vertex: Boolean;
  2406. //***** GL_ARB_fragment_program *****//
  2407. const
  2408. GL_FRAGMENT_PROGRAM_ARB = $8804;
  2409. // GL_PROGRAM_FORMAT_ASCII_ARB { already defined }
  2410. // GL_PROGRAM_LENGTH_ARB { already defined }
  2411. // GL_PROGRAM_FORMAT_ARB { already defined }
  2412. // GL_PROGRAM_BINDING_ARB { already defined }
  2413. // GL_PROGRAM_INSTRUCTIONS_ARB { already defined }
  2414. // GL_MAX_PROGRAM_INSTRUCTIONS_ARB { already defined }
  2415. // GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB { already defined }
  2416. // GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB { already defined }
  2417. // GL_PROGRAM_TEMPORARIES_ARB { already defined }
  2418. // GL_MAX_PROGRAM_TEMPORARIES_ARB { already defined }
  2419. // GL_PROGRAM_NATIVE_TEMPORARIES_ARB { already defined }
  2420. // GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB { already defined }
  2421. // GL_PROGRAM_PARAMETERS_ARB { already defined }
  2422. // GL_MAX_PROGRAM_PARAMETERS_ARB { already defined }
  2423. // GL_PROGRAM_NATIVE_PARAMETERS_ARB { already defined }
  2424. // GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB { already defined }
  2425. // GL_PROGRAM_ATTRIBS_ARB { already defined }
  2426. // GL_MAX_PROGRAM_ATTRIBS_ARB { already defined }
  2427. // GL_PROGRAM_NATIVE_ATTRIBS_ARB { already defined }
  2428. // GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB { already defined }
  2429. // GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB { already defined }
  2430. // GL_MAX_PROGRAM_ENV_PARAMETERS_ARB { already defined }
  2431. // GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB { already defined }
  2432. GL_PROGRAM_ALU_INSTRUCTIONS_ARB = $8805;
  2433. GL_PROGRAM_TEX_INSTRUCTIONS_ARB = $8806;
  2434. GL_PROGRAM_TEX_INDIRECTIONS_ARB = $8807;
  2435. GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = $8808;
  2436. GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = $8809;
  2437. GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = $880A;
  2438. GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = $880B;
  2439. GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = $880C;
  2440. GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = $880D;
  2441. GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = $880E;
  2442. GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = $880F;
  2443. GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = $8810;
  2444. // GL_PROGRAM_STRING_ARB { already defined }
  2445. // GL_PROGRAM_ERROR_POSITION_ARB { already defined }
  2446. // GL_CURRENT_MATRIX_ARB { already defined }
  2447. // GL_TRANSPOSE_CURRENT_MATRIX_ARB { already defined }
  2448. // GL_CURRENT_MATRIX_STACK_DEPTH_ARB { already defined }
  2449. // GL_MAX_PROGRAM_MATRICES_ARB { already defined }
  2450. // GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB { already defined }
  2451. GL_MAX_TEXTURE_COORDS_ARB = $8871;
  2452. GL_MAX_TEXTURE_IMAGE_UNITS_ARB = $8872;
  2453. // GL_PROGRAM_ERROR_STRING_ARB { already defined }
  2454. // GL_MATRIX0_ARB { already defined }
  2455. // GL_MATRIX1_ARB { already defined }
  2456. // GL_MATRIX2_ARB { already defined }
  2457. // GL_MATRIX3_ARB { already defined }
  2458. // GL_MATRIX4_ARB { already defined }
  2459. // GL_MATRIX5_ARB { already defined }
  2460. // GL_MATRIX6_ARB { already defined }
  2461. // GL_MATRIX7_ARB { already defined }
  2462. // GL_MATRIX8_ARB { already defined }
  2463. // GL_MATRIX9_ARB { already defined }
  2464. // GL_MATRIX10_ARB { already defined }
  2465. // GL_MATRIX11_ARB { already defined }
  2466. // GL_MATRIX12_ARB { already defined }
  2467. // GL_MATRIX13_ARB { already defined }
  2468. // GL_MATRIX14_ARB { already defined }
  2469. // GL_MATRIX15_ARB { already defined }
  2470. // GL_MATRIX16_ARB { already defined }
  2471. // GL_MATRIX17_ARB { already defined }
  2472. // GL_MATRIX18_ARB { already defined }
  2473. // GL_MATRIX19_ARB { already defined }
  2474. // GL_MATRIX20_ARB { already defined }
  2475. // GL_MATRIX21_ARB { already defined }
  2476. // GL_MATRIX22_ARB { already defined }
  2477. // GL_MATRIX23_ARB { already defined }
  2478. // GL_MATRIX24_ARB { already defined }
  2479. // GL_MATRIX25_ARB { already defined }
  2480. // GL_MATRIX26_ARB { already defined }
  2481. // GL_MATRIX27_ARB { already defined }
  2482. // GL_MATRIX28_ARB { already defined }
  2483. // GL_MATRIX29_ARB { already defined }
  2484. // GL_MATRIX30_ARB { already defined }
  2485. // GL_MATRIX31_ARB { already defined }
  2486. // glProgramStringARB { already defined }
  2487. // glBindProgramARB { already defined }
  2488. // glDeleteProgramsARB { already defined }
  2489. // glGenProgramsARB { already defined }
  2490. // glProgramEnvParameter4dARB { already defined }
  2491. // glProgramEnvParameter4dvARB { already defined }
  2492. // glProgramEnvParameter4fARB { already defined }
  2493. // glProgramEnvParameter4fvARB { already defined }
  2494. // glProgramLocalParameter4dARB { already defined }
  2495. // glProgramLocalParameter4dvARB { already defined }
  2496. // glProgramLocalParameter4fARB { already defined }
  2497. // glProgramLocalParameter4fvARB { already defined }
  2498. // glGetProgramEnvParameterdvARB { already defined }
  2499. // glGetProgramEnvParameterfvARB { already defined }
  2500. // glGetProgramLocalParameterdvARB { already defined }
  2501. // glGetProgramLocalParameterfvARB { already defined }
  2502. // glGetProgramivARB { already defined }
  2503. // glGetProgramStringARB { already defined }
  2504. // glIsProgramARB { already defined }
  2505. function Load_GL_ARB_fragment_program: Boolean;
  2506. {***** GL_ATI_text_fragment_shader *****}
  2507. const
  2508. GL_TEXT_FRAGMENT_SHADER_ATI = $8200;
  2509. function Load_GL_ATI_text_fragment_shader: Boolean;
  2510. {***** GL_ARB_vertex_buffer_object *****}
  2511. const
  2512. GL_BUFFER_SIZE_ARB = $8764;
  2513. GL_BUFFER_USAGE_ARB = $8765;
  2514. GL_ARRAY_BUFFER_ARB = $8892;
  2515. GL_ELEMENT_ARRAY_BUFFER_ARB = $8893;
  2516. GL_ARRAY_BUFFER_BINDING_ARB = $8894;
  2517. GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = $8895;
  2518. GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = $8896;
  2519. GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = $8897;
  2520. GL_COLOR_ARRAY_BUFFER_BINDING_ARB = $8898;
  2521. GL_INDEX_ARRAY_BUFFER_BINDING_ARB = $8899;
  2522. GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = $889A;
  2523. GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = $889B;
  2524. GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = $889C;
  2525. GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = $889D;
  2526. GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = $889E;
  2527. GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = $889F;
  2528. GL_READ_ONLY_ARB = $88B8;
  2529. GL_WRITE_ONLY_ARB = $88B9;
  2530. GL_READ_WRITE_ARB = $88BA;
  2531. GL_BUFFER_ACCESS_ARB = $88BB;
  2532. GL_BUFFER_MAPPED_ARB = $88BC;
  2533. GL_BUFFER_MAP_POINTER_ARB = $88BD;
  2534. GL_STREAM_DRAW_ARB = $88E0;
  2535. GL_STREAM_READ_ARB = $88E1;
  2536. GL_STREAM_COPY_ARB = $88E2;
  2537. GL_STATIC_DRAW_ARB = $88E4;
  2538. GL_STATIC_READ_ARB = $88E5;
  2539. GL_STATIC_COPY_ARB = $88E6;
  2540. GL_DYNAMIC_DRAW_ARB = $88E8;
  2541. GL_DYNAMIC_READ_ARB = $88E9;
  2542. GL_DYNAMIC_COPY_ARB = $88EA;
  2543. var
  2544. glBindBufferARB : procedure(target : GLenum; buffer: GLuint); extdecl;
  2545. glDeleteBuffersARB : procedure(n : GLsizei; buffers : PGLuint); extdecl;
  2546. glGenBuffersARB : procedure(n : GLsizei; buffers : PGLuint); extdecl;
  2547. glIsBufferARB : function (buffer : GLuint) :GLboolean; extdecl;
  2548. glBufferDataARB : procedure(target : GLenum; size:GLsizei; data:PGLvoid;usage: GLenum); extdecl;
  2549. glBufferSubDataARB : procedure(target : GLenum; offset :GLint; size : GLsizei; data: PGLvoid); extdecl;
  2550. glGetBufferSubDataARB : procedure(target : GLenum; offset :GLint; size : GLsizei; data: PGLvoid); extdecl;
  2551. glMapBufferARB : function (target :GLenum; access: GLenum) : PGLvoid; extdecl;
  2552. glUnmapBufferARB : function (target :GLenum) :GLboolean; extdecl;
  2553. glGetBufferParameterivARB:procedure(target:GLenum; pname:GLenum; params:PGLint); extdecl;
  2554. glGetBufferPointervARB : procedure(target: GLenum; pname:GLenum; params: PPGLvoid); extdecl;
  2555. function Load_GL_ARB_vertex_buffer_object : boolean;
  2556. //***** GL_APPLE_client_storage *****//
  2557. const
  2558. GL_UNPACK_CLIENT_STORAGE_APPLE = $85B2;
  2559. function Load_GL_APPLE_client_storage: Boolean;
  2560. //***** GL_APPLE_element_array *****//
  2561. const
  2562. GL_ELEMENT_ARRAY_APPLE = $8768;
  2563. GL_ELEMENT_ARRAY_TYPE_APPLE = $8769;
  2564. GL_ELEMENT_ARRAY_POINTER_APPLE = $876A;
  2565. var
  2566. glElementPointerAPPLE: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  2567. glDrawElementArrayAPPLE: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  2568. glDrawRangeElementArrayAPPLE: procedure(mode: GLenum; start: GLuint; _end: GLuint; first: GLint; count: GLsizei); extdecl;
  2569. glMultiDrawElementArrayAPPLE: procedure(mode: GLenum; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2570. glMultiDrawRangeElementArrayAPPLE: procedure(mode: GLenum; start: GLuint; _end: GLuint; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2571. function Load_GL_APPLE_element_array: Boolean;
  2572. //***** GL_APPLE_fence *****//
  2573. const
  2574. GL_DRAW_PIXELS_APPLE = $8A0A;
  2575. GL_FENCE_APPLE = $8A0B;
  2576. var
  2577. glGenFencesAPPLE: procedure(n: GLsizei; fences: PGLuint); extdecl;
  2578. glDeleteFencesAPPLE: procedure(n: GLsizei; const fences: PGLuint); extdecl;
  2579. glSetFenceAPPLE: procedure(fence: GLuint); extdecl;
  2580. glIsFenceAPPLE: function(fence: GLuint): GLboolean; extdecl;
  2581. glTestFenceAPPLE: function(fence: GLuint): GLboolean; extdecl;
  2582. glFinishFenceAPPLE: procedure(fence: GLuint); extdecl;
  2583. glTestObjectAPPLE: function(_object: GLenum; name: GLuint): GLboolean; extdecl;
  2584. glFinishObjectAPPLE: procedure(_object: GLenum; name: GLint); extdecl;
  2585. function Load_GL_APPLE_fence: Boolean;
  2586. //***** GL_APPLE_vertex_array_object *****//
  2587. const
  2588. GL_VERTEX_ARRAY_BINDING_APPLE = $85B5;
  2589. var
  2590. glBindVertexArrayAPPLE: procedure(_array: GLuint); extdecl;
  2591. glDeleteVertexArraysAPPLE: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  2592. glGenVertexArraysAPPLE: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  2593. glIsVertexArrayAPPLE: function(_array: GLuint): GLboolean; extdecl;
  2594. function Load_GL_APPLE_vertex_array_object: Boolean;
  2595. //***** GL_APPLE_vertex_array_range *****//
  2596. const
  2597. GL_VERTEX_ARRAY_RANGE_APPLE = $851D;
  2598. GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = $851E;
  2599. GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE = $8520;
  2600. GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = $8521;
  2601. GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = $851F;
  2602. GL_STORAGE_CACHED_APPLE = $85BE;
  2603. GL_STORAGE_SHARED_APPLE = $85BF;
  2604. var
  2605. glVertexArrayRangeAPPLE: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  2606. glFlushVertexArrayRangeAPPLE: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  2607. glVertexArrayParameteriAPPLE: procedure(pname: GLenum; param: GLint); extdecl;
  2608. function Load_GL_APPLE_vertex_array_range: Boolean;
  2609. {$IFDEF Windows}
  2610. //***** WGL_ARB_pixel_format *****//
  2611. const
  2612. WGL_NUMBER_PIXEL_FORMATS_ARB = $2000;
  2613. WGL_DRAW_TO_WINDOW_ARB = $2001;
  2614. WGL_DRAW_TO_BITMAP_ARB = $2002;
  2615. WGL_ACCELERATION_ARB = $2003;
  2616. WGL_NEED_PALETTE_ARB = $2004;
  2617. WGL_NEED_SYSTEM_PALETTE_ARB = $2005;
  2618. WGL_SWAP_LAYER_BUFFERS_ARB = $2006;
  2619. WGL_SWAP_METHOD_ARB = $2007;
  2620. WGL_NUMBER_OVERLAYS_ARB = $2008;
  2621. WGL_NUMBER_UNDERLAYS_ARB = $2009;
  2622. WGL_TRANSPARENT_ARB = $200A;
  2623. WGL_TRANSPARENT_RED_VALUE_ARB = $2037;
  2624. WGL_TRANSPARENT_GREEN_VALUE_ARB = $2038;
  2625. WGL_TRANSPARENT_BLUE_VALUE_ARB = $2039;
  2626. WGL_TRANSPARENT_ALPHA_VALUE_ARB = $203A;
  2627. WGL_TRANSPARENT_INDEX_VALUE_ARB = $203B;
  2628. WGL_SHARE_DEPTH_ARB = $200C;
  2629. WGL_SHARE_STENCIL_ARB = $200D;
  2630. WGL_SHARE_ACCUM_ARB = $200E;
  2631. WGL_SUPPORT_GDI_ARB = $200F;
  2632. WGL_SUPPORT_OPENGL_ARB = $2010;
  2633. WGL_DOUBLE_BUFFER_ARB = $2011;
  2634. WGL_STEREO_ARB = $2012;
  2635. WGL_PIXEL_TYPE_ARB = $2013;
  2636. WGL_COLOR_BITS_ARB = $2014;
  2637. WGL_RED_BITS_ARB = $2015;
  2638. WGL_RED_SHIFT_ARB = $2016;
  2639. WGL_GREEN_BITS_ARB = $2017;
  2640. WGL_GREEN_SHIFT_ARB = $2018;
  2641. WGL_BLUE_BITS_ARB = $2019;
  2642. WGL_BLUE_SHIFT_ARB = $201A;
  2643. WGL_ALPHA_BITS_ARB = $201B;
  2644. WGL_ALPHA_SHIFT_ARB = $201C;
  2645. WGL_ACCUM_BITS_ARB = $201D;
  2646. WGL_ACCUM_RED_BITS_ARB = $201E;
  2647. WGL_ACCUM_GREEN_BITS_ARB = $201F;
  2648. WGL_ACCUM_BLUE_BITS_ARB = $2020;
  2649. WGL_ACCUM_ALPHA_BITS_ARB = $2021;
  2650. WGL_DEPTH_BITS_ARB = $2022;
  2651. WGL_STENCIL_BITS_ARB = $2023;
  2652. WGL_AUX_BUFFERS_ARB = $2024;
  2653. WGL_NO_ACCELERATION_ARB = $2025;
  2654. WGL_GENERIC_ACCELERATION_ARB = $2026;
  2655. WGL_FULL_ACCELERATION_ARB = $2027;
  2656. WGL_SWAP_EXCHANGE_ARB = $2028;
  2657. WGL_SWAP_COPY_ARB = $2029;
  2658. WGL_SWAP_UNDEFINED_ARB = $202A;
  2659. WGL_TYPE_RGBA_ARB = $202B;
  2660. WGL_TYPE_COLORINDEX_ARB = $202C;
  2661. var
  2662. wglGetPixelFormatAttribivARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; piValues: PGLint): BOOL; extdecl;
  2663. wglGetPixelFormatAttribfvARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; pfValues: PGLfloat): BOOL; extdecl;
  2664. wglChoosePixelFormatARB: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; extdecl;
  2665. function Load_WGL_ARB_pixel_format: Boolean;
  2666. //***** WGL_ARB_make_current_read *****//
  2667. const
  2668. WGL_ERROR_INVALID_PIXEL_TYPE_ARB = $2043;
  2669. WGL_ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = $2054;
  2670. var
  2671. wglMakeContextCurrentARB: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): BOOL; extdecl;
  2672. wglGetCurrentReadDCARB: function(): HDC; extdecl;
  2673. function Load_WGL_ARB_make_current_read: Boolean;
  2674. //***** WGL_ARB_pbuffer *****//
  2675. const
  2676. WGL_DRAW_TO_PBUFFER_ARB = $202D;
  2677. // WGL_DRAW_TO_PBUFFER_ARB { already defined }
  2678. WGL_MAX_PBUFFER_PIXELS_ARB = $202E;
  2679. WGL_MAX_PBUFFER_WIDTH_ARB = $202F;
  2680. WGL_MAX_PBUFFER_HEIGHT_ARB = $2030;
  2681. WGL_PBUFFER_LARGEST_ARB = $2033;
  2682. WGL_PBUFFER_WIDTH_ARB = $2034;
  2683. WGL_PBUFFER_HEIGHT_ARB = $2035;
  2684. WGL_PBUFFER_LOST_ARB = $2036;
  2685. var
  2686. wglCreatePbufferARB: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THandle; extdecl;
  2687. wglGetPbufferDCARB: function(hPbuffer: THandle): HDC; extdecl;
  2688. wglReleasePbufferDCARB: function(hPbuffer: THandle; hDC: HDC): GLint; extdecl;
  2689. wglDestroyPbufferARB: function(hPbuffer: THandle): BOOL; extdecl;
  2690. wglQueryPbufferARB: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2691. function Load_WGL_ARB_pbuffer: Boolean;
  2692. //***** WGL_EXT_swap_control *****//
  2693. var
  2694. wglSwapIntervalEXT: function(interval: GLint): BOOL; extdecl;
  2695. wglGetSwapIntervalEXT: function(): GLint; extdecl;
  2696. function Load_WGL_EXT_swap_control: Boolean;
  2697. //***** WGL_ARB_render_texture *****//
  2698. const
  2699. WGL_BIND_TO_TEXTURE_RGB_ARB = $2070;
  2700. WGL_BIND_TO_TEXTURE_RGBA_ARB = $2071;
  2701. WGL_TEXTURE_FORMAT_ARB = $2072;
  2702. WGL_TEXTURE_TARGET_ARB = $2073;
  2703. WGL_MIPMAP_TEXTURE_ARB = $2074;
  2704. WGL_TEXTURE_RGB_ARB = $2075;
  2705. WGL_TEXTURE_RGBA_ARB = $2076;
  2706. WGL_NO_TEXTURE_ARB = $2077;
  2707. WGL_TEXTURE_CUBE_MAP_ARB = $2078;
  2708. WGL_TEXTURE_1D_ARB = $2079;
  2709. WGL_TEXTURE_2D_ARB = $207A;
  2710. // WGL_NO_TEXTURE_ARB { already defined }
  2711. WGL_MIPMAP_LEVEL_ARB = $207B;
  2712. WGL_CUBE_MAP_FACE_ARB = $207C;
  2713. WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $207D;
  2714. WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $207E;
  2715. WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $207F;
  2716. WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $2080;
  2717. WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $2081;
  2718. WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $2082;
  2719. WGL_FRONT_LEFT_ARB = $2083;
  2720. WGL_FRONT_RIGHT_ARB = $2084;
  2721. WGL_BACK_LEFT_ARB = $2085;
  2722. WGL_BACK_RIGHT_ARB = $2086;
  2723. WGL_AUX0_ARB = $2087;
  2724. WGL_AUX1_ARB = $2088;
  2725. WGL_AUX2_ARB = $2089;
  2726. WGL_AUX3_ARB = $208A;
  2727. WGL_AUX4_ARB = $208B;
  2728. WGL_AUX5_ARB = $208C;
  2729. WGL_AUX6_ARB = $208D;
  2730. WGL_AUX7_ARB = $208E;
  2731. WGL_AUX8_ARB = $208F;
  2732. WGL_AUX9_ARB = $2090;
  2733. var
  2734. wglBindTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): BOOL; extdecl;
  2735. wglReleaseTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): BOOL; extdecl;
  2736. wglSetPbufferAttribARB: function(hPbuffer: THandle; const piAttribList: PGLint): BOOL; extdecl;
  2737. function Load_WGL_ARB_render_texture: Boolean;
  2738. //***** WGL_EXT_extensions_string *****//
  2739. var
  2740. wglGetExtensionsStringEXT: function(): Pchar; extdecl;
  2741. function Load_WGL_EXT_extensions_string: Boolean;
  2742. //***** WGL_EXT_make_current_read *****//
  2743. var
  2744. wglMakeContextCurrentEXT: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): BOOL; extdecl;
  2745. wglGetCurrentReadDCEXT: function(): HDC; extdecl;
  2746. function Load_WGL_EXT_make_current_read: Boolean;
  2747. //***** WGL_EXT_pbuffer *****//
  2748. const
  2749. WGL_DRAW_TO_PBUFFER_EXT = $202D;
  2750. WGL_MAX_PBUFFER_PIXELS_EXT = $202E;
  2751. WGL_MAX_PBUFFER_WIDTH_EXT = $202F;
  2752. WGL_MAX_PBUFFER_HEIGHT_EXT = $2030;
  2753. WGL_OPTIMAL_PBUFFER_WIDTH_EXT = $2031;
  2754. WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = $2032;
  2755. WGL_PBUFFER_LARGEST_EXT = $2033;
  2756. WGL_PBUFFER_WIDTH_EXT = $2034;
  2757. WGL_PBUFFER_HEIGHT_EXT = $2035;
  2758. var
  2759. wglCreatePbufferEXT: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THandle; extdecl;
  2760. wglGetPbufferDCEXT: function(hPbuffer: THandle): HDC; extdecl;
  2761. wglReleasePbufferDCEXT: function(hPbuffer: THandle; hDC: HDC): GLint; extdecl;
  2762. wglDestroyPbufferEXT: function(hPbuffer: THandle): BOOL; extdecl;
  2763. wglQueryPbufferEXT: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2764. function Load_WGL_EXT_pbuffer: Boolean;
  2765. //***** WGL_EXT_pixel_format *****//
  2766. const
  2767. WGL_NUMBER_PIXEL_FORMATS_EXT = $2000;
  2768. WGL_DRAW_TO_WINDOW_EXT = $2001;
  2769. WGL_DRAW_TO_BITMAP_EXT = $2002;
  2770. WGL_ACCELERATION_EXT = $2003;
  2771. WGL_NEED_PALETTE_EXT = $2004;
  2772. WGL_NEED_SYSTEM_PALETTE_EXT = $2005;
  2773. WGL_SWAP_LAYER_BUFFERS_EXT = $2006;
  2774. WGL_SWAP_METHOD_EXT = $2007;
  2775. WGL_NUMBER_OVERLAYS_EXT = $2008;
  2776. WGL_NUMBER_UNDERLAYS_EXT = $2009;
  2777. WGL_TRANSPARENT_EXT = $200A;
  2778. WGL_TRANSPARENT_VALUE_EXT = $200B;
  2779. WGL_SHARE_DEPTH_EXT = $200C;
  2780. WGL_SHARE_STENCIL_EXT = $200D;
  2781. WGL_SHARE_ACCUM_EXT = $200E;
  2782. WGL_SUPPORT_GDI_EXT = $200F;
  2783. WGL_SUPPORT_OPENGL_EXT = $2010;
  2784. WGL_DOUBLE_BUFFER_EXT = $2011;
  2785. WGL_STEREO_EXT = $2012;
  2786. WGL_PIXEL_TYPE_EXT = $2013;
  2787. WGL_COLOR_BITS_EXT = $2014;
  2788. WGL_RED_BITS_EXT = $2015;
  2789. WGL_RED_SHIFT_EXT = $2016;
  2790. WGL_GREEN_BITS_EXT = $2017;
  2791. WGL_GREEN_SHIFT_EXT = $2018;
  2792. WGL_BLUE_BITS_EXT = $2019;
  2793. WGL_BLUE_SHIFT_EXT = $201A;
  2794. WGL_ALPHA_BITS_EXT = $201B;
  2795. WGL_ALPHA_SHIFT_EXT = $201C;
  2796. WGL_ACCUM_BITS_EXT = $201D;
  2797. WGL_ACCUM_RED_BITS_EXT = $201E;
  2798. WGL_ACCUM_GREEN_BITS_EXT = $201F;
  2799. WGL_ACCUM_BLUE_BITS_EXT = $2020;
  2800. WGL_ACCUM_ALPHA_BITS_EXT = $2021;
  2801. WGL_DEPTH_BITS_EXT = $2022;
  2802. WGL_STENCIL_BITS_EXT = $2023;
  2803. WGL_AUX_BUFFERS_EXT = $2024;
  2804. WGL_NO_ACCELERATION_EXT = $2025;
  2805. WGL_GENERIC_ACCELERATION_EXT = $2026;
  2806. WGL_FULL_ACCELERATION_EXT = $2027;
  2807. WGL_SWAP_EXCHANGE_EXT = $2028;
  2808. WGL_SWAP_COPY_EXT = $2029;
  2809. WGL_SWAP_UNDEFINED_EXT = $202A;
  2810. WGL_TYPE_RGBA_EXT = $202B;
  2811. WGL_TYPE_COLORINDEX_EXT = $202C;
  2812. var
  2813. wglGetPixelFormatAttribivEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; piValues: PGLint): BOOL; extdecl;
  2814. wglGetPixelFormatAttribfvEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; pfValues: PGLfloat): BOOL; extdecl;
  2815. wglChoosePixelFormatEXT: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; extdecl;
  2816. function Load_WGL_EXT_pixel_format: Boolean;
  2817. //***** WGL_I3D_digital_video_control *****//
  2818. const
  2819. WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = $2050;
  2820. WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D = $2051;
  2821. WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D = $2052;
  2822. WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D = $2053;
  2823. var
  2824. wglGetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2825. wglSetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): BOOL; extdecl;
  2826. function Load_WGL_I3D_digital_video_control: Boolean;
  2827. //***** WGL_I3D_gamma *****//
  2828. const
  2829. WGL_GAMMA_TABLE_SIZE_I3D = $204E;
  2830. WGL_GAMMA_EXCLUDE_DESKTOP_I3D = $204F;
  2831. // WGL_GAMMA_EXCLUDE_DESKTOP_I3D { already defined }
  2832. var
  2833. wglGetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2834. wglSetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): BOOL; extdecl;
  2835. wglGetGammaTableI3D: function(hDC: HDC; iEntries: GLint; puRed: PGLUSHORT; puGreen: PGLUSHORT; puBlue: PGLUSHORT): BOOL; extdecl;
  2836. wglSetGammaTableI3D: function(hDC: HDC; iEntries: GLint; const puRed: PGLUSHORT; const puGreen: PGLUSHORT; const puBlue: PGLUSHORT): BOOL; extdecl;
  2837. function Load_WGL_I3D_gamma: Boolean;
  2838. //***** WGL_I3D_genlock *****//
  2839. const
  2840. WGL_GENLOCK_SOURCE_MULTIVIEW_I3D = $2044;
  2841. WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D = $2045;
  2842. WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D = $2046;
  2843. WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D = $2047;
  2844. WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D = $2048;
  2845. WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D = $2049;
  2846. WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D = $204A;
  2847. WGL_GENLOCK_SOURCE_EDGE_RISING_I3D = $204B;
  2848. WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D = $204C;
  2849. var
  2850. wglEnableGenlockI3D: function(hDC: HDC): BOOL; extdecl;
  2851. wglDisableGenlockI3D: function(hDC: HDC): BOOL; extdecl;
  2852. wglIsEnabledGenlockI3D: function(hDC: HDC; pFlag: PBOOL): BOOL; extdecl;
  2853. wglGenlockSourceI3D: function(hDC: HDC; uSource: GLUINT): BOOL; extdecl;
  2854. wglGetGenlockSourceI3D: function(hDC: HDC; uSource: PGLUINT): BOOL; extdecl;
  2855. wglGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: GLUINT): BOOL; extdecl;
  2856. wglGetGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: PGLUINT): BOOL; extdecl;
  2857. wglGenlockSampleRateI3D: function(hDC: HDC; uRate: GLUINT): BOOL; extdecl;
  2858. wglGetGenlockSampleRateI3D: function(hDC: HDC; uRate: PGLUINT): BOOL; extdecl;
  2859. wglGenlockSourceDelayI3D: function(hDC: HDC; uDelay: GLUINT): BOOL; extdecl;
  2860. wglGetGenlockSourceDelayI3D: function(hDC: HDC; uDelay: PGLUINT): BOOL; extdecl;
  2861. wglQueryGenlockMaxSourceDelayI3D: function(hDC: HDC; uMaxLineDelay: PGLUINT; uMaxPixelDelay: PGLUINT): BOOL; extdecl;
  2862. function Load_WGL_I3D_genlock: Boolean;
  2863. {$ENDIF}
  2864. //***** GL_ARB_matrix_palette *****//
  2865. const
  2866. GL_MATRIX_PALETTE_ARB = $8840;
  2867. GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = $8841;
  2868. GL_MAX_PALETTE_MATRICES_ARB = $8842;
  2869. GL_CURRENT_PALETTE_MATRIX_ARB = $8843;
  2870. GL_MATRIX_INDEX_ARRAY_ARB = $8844;
  2871. GL_CURRENT_MATRIX_INDEX_ARB = $8845;
  2872. GL_MATRIX_INDEX_ARRAY_SIZE_ARB = $8846;
  2873. GL_MATRIX_INDEX_ARRAY_TYPE_ARB = $8847;
  2874. GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = $8848;
  2875. GL_MATRIX_INDEX_ARRAY_POINTER_ARB = $8849;
  2876. var
  2877. glCurrentPaletteMatrixARB: procedure(index: GLint); extdecl;
  2878. glMatrixIndexubvARB: procedure(size: GLint; indices: PGLubyte); extdecl;
  2879. glMatrixIndexusvARB: procedure(size: GLint; indices: PGLushort); extdecl;
  2880. glMatrixIndexuivARB: procedure(size: GLint; indices: PGLuint); extdecl;
  2881. glMatrixIndexPointerARB: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  2882. function Load_GL_ARB_matrix_palette: Boolean;
  2883. //***** GL_NV_element_array *****//
  2884. const
  2885. GL_ELEMENT_ARRAY_TYPE_NV = $8769;
  2886. GL_ELEMENT_ARRAY_POINTER_NV = $876A;
  2887. var
  2888. glElementPointerNV: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  2889. glDrawElementArrayNV: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  2890. glDrawRangeElementArrayNV: procedure(mode: GLenum; start: GLuint; _end: GLuint; first: GLint; count: GLsizei); extdecl;
  2891. glMultiDrawElementArrayNV: procedure(mode: GLenum; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2892. glMultiDrawRangeElementArrayNV: procedure(mode: GLenum; start: GLuint; _end: GLuint; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2893. function Load_GL_NV_element_array: Boolean;
  2894. //***** GL_NV_float_buffer *****//
  2895. const
  2896. GL_FLOAT_R_NV = $8880;
  2897. GL_FLOAT_RG_NV = $8881;
  2898. GL_FLOAT_RGB_NV = $8882;
  2899. GL_FLOAT_RGBA_NV = $8883;
  2900. GL_FLOAT_R16_NV = $8884;
  2901. GL_FLOAT_R32_NV = $8885;
  2902. GL_FLOAT_RG16_NV = $8886;
  2903. GL_FLOAT_RG32_NV = $8887;
  2904. GL_FLOAT_RGB16_NV = $8888;
  2905. GL_FLOAT_RGB32_NV = $8889;
  2906. GL_FLOAT_RGBA16_NV = $888A;
  2907. GL_FLOAT_RGBA32_NV = $888B;
  2908. GL_TEXTURE_FLOAT_COMPONENTS_NV = $888C;
  2909. GL_FLOAT_CLEAR_COLOR_VALUE_NV = $888D;
  2910. GL_FLOAT_RGBA_MODE_NV = $888E;
  2911. {$IFDEF Windows}
  2912. WGL_FLOAT_COMPONENTS_NV = $20B0;
  2913. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV = $20B1;
  2914. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV = $20B2;
  2915. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = $20B3;
  2916. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = $20B4;
  2917. WGL_TEXTURE_FLOAT_R_NV = $20B5;
  2918. WGL_TEXTURE_FLOAT_RG_NV = $20B6;
  2919. WGL_TEXTURE_FLOAT_RGB_NV = $20B7;
  2920. WGL_TEXTURE_FLOAT_RGBA_NV = $20B8;
  2921. {$ENDIF}
  2922. function Load_GL_NV_float_buffer: Boolean;
  2923. //***** GL_NV_fragment_program *****//
  2924. const
  2925. GL_FRAGMENT_PROGRAM_NV = $8870;
  2926. GL_MAX_TEXTURE_COORDS_NV = $8871;
  2927. GL_MAX_TEXTURE_IMAGE_UNITS_NV = $8872;
  2928. GL_FRAGMENT_PROGRAM_BINDING_NV = $8873;
  2929. GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = $8868;
  2930. GL_PROGRAM_ERROR_STRING_NV = $8874;
  2931. var
  2932. glProgramNamedParameter4fNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2933. glProgramNamedParameter4dNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  2934. glGetProgramNamedParameterfvNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; params: PGLfloat); extdecl;
  2935. glGetProgramNamedParameterdvNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; params: PGLdouble); extdecl;
  2936. // glProgramLocalParameter4dARB { already defined }
  2937. // glProgramLocalParameter4dvARB { already defined }
  2938. // glProgramLocalParameter4fARB { already defined }
  2939. // glProgramLocalParameter4fvARB { already defined }
  2940. // glGetProgramLocalParameterdvARB { already defined }
  2941. // glGetProgramLocalParameterfvARB { already defined }
  2942. function Load_GL_NV_fragment_program: Boolean;
  2943. //***** GL_NV_primitive_restart *****//
  2944. const
  2945. GL_PRIMITIVE_RESTART_NV = $8558;
  2946. GL_PRIMITIVE_RESTART_INDEX_NV = $8559;
  2947. var
  2948. glPrimitiveRestartNV: procedure(); extdecl;
  2949. glPrimitiveRestartIndexNV: procedure(index: GLuint); extdecl;
  2950. function Load_GL_NV_primitive_restart: Boolean;
  2951. //***** GL_NV_vertex_program2 *****//
  2952. function Load_GL_NV_vertex_program2: Boolean;
  2953. {$IFDEF Windows}
  2954. //***** WGL_NV_render_texture_rectangle *****//
  2955. const
  2956. WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV = $20A0;
  2957. WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV = $20A1;
  2958. WGL_TEXTURE_RECTANGLE_NV = $20A2;
  2959. function Load_WGL_NV_render_texture_rectangle: Boolean;
  2960. {$ENDIF}
  2961. //***** GL_NV_pixel_data_range *****//
  2962. const
  2963. GL_WRITE_PIXEL_DATA_RANGE_NV = $8878;
  2964. GL_READ_PIXEL_DATA_RANGE_NV = $8879;
  2965. GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = $887A;
  2966. GL_READ_PIXEL_DATA_RANGE_LENGTH_NV = $887B;
  2967. GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV = $887C;
  2968. GL_READ_PIXEL_DATA_RANGE_POINTER_NV = $887D;
  2969. var
  2970. glPixelDataRangeNV: procedure(target: GLenum; length: GLsizei; pointer: PGLvoid); extdecl;
  2971. glFlushPixelDataRangeNV: procedure(target: GLenum); extdecl;
  2972. // wglAllocateMemoryNV { already defined }
  2973. // wglFreeMemoryNV { already defined }
  2974. function Load_GL_NV_pixel_data_range: Boolean;
  2975. //***** GL_EXT_texture_rectangle *****//
  2976. const
  2977. GL_TEXTURE_RECTANGLE_EXT = $84F5;
  2978. GL_TEXTURE_BINDING_RECTANGLE_EXT = $84F6;
  2979. GL_PROXY_TEXTURE_RECTANGLE_EXT = $84F7;
  2980. GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT = $84F8;
  2981. function Load_GL_EXT_texture_rectangle: Boolean;
  2982. //***** GL_S3_s3tc *****//
  2983. const
  2984. GL_RGB_S3TC = $83A0;
  2985. GL_RGB4_S3TC = $83A1;
  2986. GL_RGBA_S3TC = $83A2;
  2987. GL_RGBA4_S3TC = $83A3;
  2988. function Load_GL_S3_s3tc: Boolean;
  2989. //***** GL_ATI_draw_buffers *****//
  2990. const
  2991. GL_MAX_DRAW_BUFFERS_ATI = $8824;
  2992. GL_DRAW_BUFFER0_ATI = $8825;
  2993. GL_DRAW_BUFFER1_ATI = $8826;
  2994. GL_DRAW_BUFFER2_ATI = $8827;
  2995. GL_DRAW_BUFFER3_ATI = $8828;
  2996. GL_DRAW_BUFFER4_ATI = $8829;
  2997. GL_DRAW_BUFFER5_ATI = $882A;
  2998. GL_DRAW_BUFFER6_ATI = $882B;
  2999. GL_DRAW_BUFFER7_ATI = $882C;
  3000. GL_DRAW_BUFFER8_ATI = $882D;
  3001. GL_DRAW_BUFFER9_ATI = $882E;
  3002. GL_DRAW_BUFFER10_ATI = $882F;
  3003. GL_DRAW_BUFFER11_ATI = $8830;
  3004. GL_DRAW_BUFFER12_ATI = $8831;
  3005. GL_DRAW_BUFFER13_ATI = $8832;
  3006. GL_DRAW_BUFFER14_ATI = $8833;
  3007. GL_DRAW_BUFFER15_ATI = $8834;
  3008. var
  3009. glDrawBuffersATI: procedure(n: GLsizei; const bufs: PGLenum); extdecl;
  3010. function Load_GL_ATI_draw_buffers: Boolean;
  3011. {$IFDEF Windows}
  3012. //***** WGL_ATI_pixel_format_float *****//
  3013. const
  3014. WGL_RGBA_FLOAT_MODE_ATI = $8820;
  3015. WGL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = $8835;
  3016. WGL_TYPE_RGBA_FLOAT_ATI = $21A0;
  3017. function Load_WGL_ATI_pixel_format_float: Boolean;
  3018. {$ENDIF}
  3019. //***** GL_ATI_texture_env_combine3 *****//
  3020. const
  3021. GL_MODULATE_ADD_ATI = $8744;
  3022. GL_MODULATE_SIGNED_ADD_ATI = $8745;
  3023. GL_MODULATE_SUBTRACT_ATI = $8746;
  3024. function Load_GL_ATI_texture_env_combine3: Boolean;
  3025. //***** GL_ATI_texture_float *****//
  3026. const
  3027. GL_RGBA_FLOAT32_ATI = $8814;
  3028. GL_RGB_FLOAT32_ATI = $8815;
  3029. GL_ALPHA_FLOAT32_ATI = $8816;
  3030. GL_INTENSITY_FLOAT32_ATI = $8817;
  3031. GL_LUMINANCE_FLOAT32_ATI = $8818;
  3032. GL_LUMINANCE_ALPHA_FLOAT32_ATI = $8819;
  3033. GL_RGBA_FLOAT16_ATI = $881A;
  3034. GL_RGB_FLOAT16_ATI = $881B;
  3035. GL_ALPHA_FLOAT16_ATI = $881C;
  3036. GL_INTENSITY_FLOAT16_ATI = $881D;
  3037. GL_LUMINANCE_FLOAT16_ATI = $881E;
  3038. GL_LUMINANCE_ALPHA_FLOAT16_ATI = $881F;
  3039. function Load_GL_ATI_texture_float: Boolean;
  3040. //***** GL_NV_texture_expand_normal *****//
  3041. const
  3042. GL_TEXTURE_UNSIGNED_REMAP_MODE_NV = $888F;
  3043. function Load_GL_NV_texture_expand_normal: Boolean;
  3044. //***** GL_NV_half_float *****//
  3045. const
  3046. GL_HALF_FLOAT_NV = $140B;
  3047. var
  3048. glVertex2hNV: procedure(x: GLushort; y: GLushort); extdecl;
  3049. glVertex2hvNV: procedure(const v: PGLushort); extdecl;
  3050. glVertex3hNV: procedure(x: GLushort; y: GLushort; z: GLushort); extdecl;
  3051. glVertex3hvNV: procedure(const v: PGLushort); extdecl;
  3052. glVertex4hNV: procedure(x: GLushort; y: GLushort; z: GLushort; w: GLushort); extdecl;
  3053. glVertex4hvNV: procedure(const v: PGLushort); extdecl;
  3054. glNormal3hNV: procedure(nx: GLushort; ny: GLushort; nz: GLushort); extdecl;
  3055. glNormal3hvNV: procedure(const v: PGLushort); extdecl;
  3056. glColor3hNV: procedure(red: GLushort; green: GLushort; blue: GLushort); extdecl;
  3057. glColor3hvNV: procedure(const v: PGLushort); extdecl;
  3058. glColor4hNV: procedure(red: GLushort; green: GLushort; blue: GLushort; alpha: GLushort); extdecl;
  3059. glColor4hvNV: procedure(const v: PGLushort); extdecl;
  3060. glTexCoord1hNV: procedure(s: GLushort); extdecl;
  3061. glTexCoord1hvNV: procedure(const v: PGLushort); extdecl;
  3062. glTexCoord2hNV: procedure(s: GLushort; t: GLushort); extdecl;
  3063. glTexCoord2hvNV: procedure(const v: PGLushort); extdecl;
  3064. glTexCoord3hNV: procedure(s: GLushort; t: GLushort; r: GLushort); extdecl;
  3065. glTexCoord3hvNV: procedure(const v: PGLushort); extdecl;
  3066. glTexCoord4hNV: procedure(s: GLushort; t: GLushort; r: GLushort; q: GLushort); extdecl;
  3067. glTexCoord4hvNV: procedure(const v: PGLushort); extdecl;
  3068. glMultiTexCoord1hNV: procedure(target: GLenum; s: GLushort); extdecl;
  3069. glMultiTexCoord1hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3070. glMultiTexCoord2hNV: procedure(target: GLenum; s: GLushort; t: GLushort); extdecl;
  3071. glMultiTexCoord2hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3072. glMultiTexCoord3hNV: procedure(target: GLenum; s: GLushort; t: GLushort; r: GLushort); extdecl;
  3073. glMultiTexCoord3hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3074. glMultiTexCoord4hNV: procedure(target: GLenum; s: GLushort; t: GLushort; r: GLushort; q: GLushort); extdecl;
  3075. glMultiTexCoord4hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3076. glFogCoordhNV: procedure(fog: GLushort); extdecl;
  3077. glFogCoordhvNV: procedure(const fog: PGLushort); extdecl;
  3078. glSecondaryColor3hNV: procedure(red: GLushort; green: GLushort; blue: GLushort); extdecl;
  3079. glSecondaryColor3hvNV: procedure(const v: PGLushort); extdecl;
  3080. glVertexWeighthNV: procedure(weight: GLushort); extdecl;
  3081. glVertexWeighthvNV: procedure(const weight: PGLushort); extdecl;
  3082. glVertexAttrib1hNV: procedure(index: GLuint; x: GLushort); extdecl;
  3083. glVertexAttrib1hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3084. glVertexAttrib2hNV: procedure(index: GLuint; x: GLushort; y: GLushort); extdecl;
  3085. glVertexAttrib2hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3086. glVertexAttrib3hNV: procedure(index: GLuint; x: GLushort; y: GLushort; z: GLushort); extdecl;
  3087. glVertexAttrib3hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3088. glVertexAttrib4hNV: procedure(index: GLuint; x: GLushort; y: GLushort; z: GLushort; w: GLushort); extdecl;
  3089. glVertexAttrib4hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3090. glVertexAttribs1hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3091. glVertexAttribs2hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3092. glVertexAttribs3hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3093. glVertexAttribs4hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3094. function Load_GL_NV_half_float: Boolean;
  3095. //***** GL_ATI_map_object_buffer *****//
  3096. var
  3097. glMapObjectBufferATI: function(buffer: GLuint): PGLvoid; extdecl;
  3098. glUnmapObjectBufferATI: procedure(buffer: GLuint); extdecl;
  3099. function Load_GL_ATI_map_object_buffer: Boolean;
  3100. //***** GL_ATI_separate_stencil *****//
  3101. const
  3102. GL_KEEP = $1E00;
  3103. GL_ZERO = $0000;
  3104. GL_REPLACE = $1E01;
  3105. GL_INCR = $1E02;
  3106. GL_DECR = $1E03;
  3107. GL_INVERT = $150A;
  3108. GL_NEVER = $0200;
  3109. GL_LESS = $0201;
  3110. GL_LEQUAL = $0203;
  3111. GL_GREATER = $0204;
  3112. GL_GEQUAL = $0206;
  3113. GL_EQUAL = $0202;
  3114. GL_NOTEQUAL = $0205;
  3115. GL_ALWAYS = $0207;
  3116. GL_FRONT = $0404;
  3117. GL_BACK = $0405;
  3118. GL_FRONT_AND_BACK = $0408;
  3119. GL_STENCIL_BACK_FUNC_ATI = $8800;
  3120. GL_STENCIL_BACK_FAIL_ATI = $8801;
  3121. GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = $8802;
  3122. GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI = $8803;
  3123. var
  3124. glStencilOpSeparateATI: procedure(face: GLenum; sfail: GLenum; dpfail: GLenum; dppass: GLenum); extdecl;
  3125. glStencilFuncSeparateATI: procedure(frontfunc: GLenum; backfunc: GLenum; ref: GLint; mask: GLuint); extdecl;
  3126. function Load_GL_ATI_separate_stencil: Boolean;
  3127. //***** GL_ATI_vertex_attrib_array_object *****//
  3128. var
  3129. glVertexAttribArrayObjectATI: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  3130. glGetVertexAttribArrayObjectfvATI: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  3131. glGetVertexAttribArrayObjectivATI: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  3132. function Load_GL_ATI_vertex_attrib_array_object: Boolean;
  3133. //***** GL_ARB_occlusion_query *****//
  3134. const
  3135. GL_SAMPLES_PASSED_ARB = $8914;
  3136. GL_QUERY_COUNTER_BITS_ARB = $8864;
  3137. GL_CURRENT_QUERY_ARB = $8865;
  3138. GL_QUERY_RESULT_ARB = $8866;
  3139. GL_QUERY_RESULT_AVAILABLE_ARB = $8867;
  3140. var
  3141. glGenQueriesARB: procedure(n: GLsizei; ids: PGLuint); extdecl;
  3142. glDeleteQueriesARB: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  3143. glIsQueryARB: function(id: GLuint): GLboolean; extdecl;
  3144. glBeginQueryARB: procedure(target: GLenum; id: GLuint); extdecl;
  3145. glEndQueryARB: procedure(target: GLenum); extdecl;
  3146. glGetQueryivARB: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3147. glGetQueryObjectivARB: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  3148. glGetQueryObjectuivARB: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  3149. function Load_GL_ARB_occlusion_query: Boolean;
  3150. //***** GL_ARB_shader_objects *****//
  3151. const
  3152. GL_PROGRAM_OBJECT_ARB = $8B40;
  3153. GL_OBJECT_TYPE_ARB = $8B4E;
  3154. GL_OBJECT_SUBTYPE_ARB = $8B4F;
  3155. GL_OBJECT_DELETE_STATUS_ARB = $8B80;
  3156. GL_OBJECT_COMPILE_STATUS_ARB = $8B81;
  3157. GL_OBJECT_LINK_STATUS_ARB = $8B82;
  3158. GL_OBJECT_VALIDATE_STATUS_ARB = $8B83;
  3159. GL_OBJECT_INFO_LOG_LENGTH_ARB = $8B84;
  3160. GL_OBJECT_ATTACHED_OBJECTS_ARB = $8B85;
  3161. GL_OBJECT_ACTIVE_UNIFORMS_ARB = $8B86;
  3162. GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = $8B87;
  3163. GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = $8B88;
  3164. GL_SHADER_OBJECT_ARB = $8B48;
  3165. GL_FLOAT = $1406;
  3166. GL_FLOAT_VEC2_ARB = $8B50;
  3167. GL_FLOAT_VEC3_ARB = $8B51;
  3168. GL_FLOAT_VEC4_ARB = $8B52;
  3169. GL_INT = $1404;
  3170. GL_INT_VEC2_ARB = $8B53;
  3171. GL_INT_VEC3_ARB = $8B54;
  3172. GL_INT_VEC4_ARB = $8B55;
  3173. GL_BOOL_ARB = $8B56;
  3174. GL_BOOL_VEC2_ARB = $8B57;
  3175. GL_BOOL_VEC3_ARB = $8B58;
  3176. GL_BOOL_VEC4_ARB = $8B59;
  3177. GL_FLOAT_MAT2_ARB = $8B5A;
  3178. GL_FLOAT_MAT3_ARB = $8B5B;
  3179. GL_FLOAT_MAT4_ARB = $8B5C;
  3180. var
  3181. glDeleteObjectARB: procedure(obj: GLhandleARB); extdecl;
  3182. glGetHandleARB: function(pname: GLenum): GLhandleARB; extdecl;
  3183. glDetachObjectARB: procedure(containerObj: GLhandleARB; attachedObj: GLhandleARB); extdecl;
  3184. glCreateShaderObjectARB: function(shaderType: GLenum): GLhandleARB; extdecl;
  3185. glShaderSourceARB: procedure(shaderObj: GLhandleARB; count: GLsizei; const _string: PGLvoid; const length: PGLint); extdecl;
  3186. glCompileShaderARB: procedure(shaderObj: GLhandleARB); extdecl;
  3187. glCreateProgramObjectARB: function(): GLhandleARB; extdecl;
  3188. glAttachObjectARB: procedure(containerObj: GLhandleARB; obj: GLhandleARB); extdecl;
  3189. glLinkProgramARB: procedure(programObj: GLhandleARB); extdecl;
  3190. glUseProgramObjectARB: procedure(programObj: GLhandleARB); extdecl;
  3191. glValidateProgramARB: procedure(programObj: GLhandleARB); extdecl;
  3192. glUniform1fARB: procedure(location: GLint; v0: GLfloat); extdecl;
  3193. glUniform2fARB: procedure(location: GLint; v0: GLfloat; v1: GLfloat); extdecl;
  3194. glUniform3fARB: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); extdecl;
  3195. glUniform4fARB: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); extdecl;
  3196. glUniform1iARB: procedure(location: GLint; v0: GLint); extdecl;
  3197. glUniform2iARB: procedure(location: GLint; v0: GLint; v1: GLint); extdecl;
  3198. glUniform3iARB: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint); extdecl;
  3199. glUniform4iARB: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); extdecl;
  3200. glUniform1fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3201. glUniform2fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3202. glUniform3fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3203. glUniform4fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3204. glUniform1ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3205. glUniform2ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3206. glUniform3ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3207. glUniform4ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3208. glUniformMatrix2fvARB: procedure(location: GLint; count: GLsizei; transpose: GLboolean; value: PGLfloat); extdecl;
  3209. glUniformMatrix3fvARB: procedure(location: GLint; count: GLsizei; transpose: GLboolean; value: PGLfloat); extdecl;
  3210. glUniformMatrix4fvARB: procedure(location: GLint; count: GLsizei; transpose: GLboolean; value: PGLfloat); extdecl;
  3211. glGetObjectParameterfvARB: procedure(obj: GLhandleARB; pname: GLenum; params: PGLfloat); extdecl;
  3212. glGetObjectParameterivARB: procedure(obj: GLhandleARB; pname: GLenum; params: PGLint); extdecl;
  3213. glGetInfoLogARB: procedure(obj: GLhandleARB; maxLength: GLsizei; length: PGLsizei; infoLog: PGLcharARB); extdecl;
  3214. glGetAttachedObjectsARB: procedure(containerObj: GLhandleARB; maxCount: GLsizei; count: PGLsizei; obj: PGLhandleARB); extdecl;
  3215. glGetUniformLocationARB: function(programObj: GLhandleARB; const name: PGLcharARB): GLint; extdecl;
  3216. glGetActiveUniformARB: procedure(programObj: GLhandleARB; index: GLuint; maxLength: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLcharARB); extdecl;
  3217. glGetUniformfvARB: procedure(programObj: GLhandleARB; location: GLint; params: PGLfloat); extdecl;
  3218. glGetUniformivARB: procedure(programObj: GLhandleARB; location: GLint; params: PGLint); extdecl;
  3219. glGetShaderSourceARB: procedure(obj: GLhandleARB; maxLength: GLsizei; length: PGLsizei; source: PGLcharARB); extdecl;
  3220. function Load_GL_ARB_shader_objects: Boolean;
  3221. //***** GL_ARB_vertex_shader *****//
  3222. const
  3223. GL_VERTEX_SHADER_ARB = $8B31;
  3224. GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = $8B4A;
  3225. GL_MAX_VARYING_FLOATS_ARB = $8B4B;
  3226. // GL_MAX_VERTEX_ATTRIBS_ARB { already defined }
  3227. // GL_MAX_TEXTURE_IMAGE_UNITS_ARB { already defined }
  3228. GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = $8B4C;
  3229. GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = $8B4D;
  3230. // GL_MAX_TEXTURE_COORDS_ARB { already defined }
  3231. // GL_VERTEX_PROGRAM_POINT_SIZE_ARB { already defined }
  3232. // GL_VERTEX_PROGRAM_TWO_SIDE_ARB { already defined }
  3233. // GL_OBJECT_TYPE_ARB { already defined }
  3234. // GL_OBJECT_SUBTYPE_ARB { already defined }
  3235. GL_OBJECT_ACTIVE_ATTRIBUTES_ARB = $8B89;
  3236. GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = $8B8A;
  3237. // GL_SHADER_OBJECT_ARB { already defined }
  3238. // GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB { already defined }
  3239. // GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB { already defined }
  3240. // GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB { already defined }
  3241. // GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB { already defined }
  3242. // GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB { already defined }
  3243. // GL_CURRENT_VERTEX_ATTRIB_ARB { already defined }
  3244. // GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB { already defined }
  3245. // GL_FLOAT { already defined }
  3246. // GL_FLOAT_VEC2_ARB { already defined }
  3247. // GL_FLOAT_VEC3_ARB { already defined }
  3248. // GL_FLOAT_VEC4_ARB { already defined }
  3249. // GL_FLOAT_MAT2_ARB { already defined }
  3250. // GL_FLOAT_MAT3_ARB { already defined }
  3251. // GL_FLOAT_MAT4_ARB { already defined }
  3252. // glVertexAttrib1fARB { already defined }
  3253. // glVertexAttrib1sARB { already defined }
  3254. // glVertexAttrib1dARB { already defined }
  3255. // glVertexAttrib2fARB { already defined }
  3256. // glVertexAttrib2sARB { already defined }
  3257. // glVertexAttrib2dARB { already defined }
  3258. // glVertexAttrib3fARB { already defined }
  3259. // glVertexAttrib3sARB { already defined }
  3260. // glVertexAttrib3dARB { already defined }
  3261. // glVertexAttrib4fARB { already defined }
  3262. // glVertexAttrib4sARB { already defined }
  3263. // glVertexAttrib4dARB { already defined }
  3264. // glVertexAttrib4NubARB { already defined }
  3265. // glVertexAttrib1fvARB { already defined }
  3266. // glVertexAttrib1svARB { already defined }
  3267. // glVertexAttrib1dvARB { already defined }
  3268. // glVertexAttrib2fvARB { already defined }
  3269. // glVertexAttrib2svARB { already defined }
  3270. // glVertexAttrib2dvARB { already defined }
  3271. // glVertexAttrib3fvARB { already defined }
  3272. // glVertexAttrib3svARB { already defined }
  3273. // glVertexAttrib3dvARB { already defined }
  3274. // glVertexAttrib4fvARB { already defined }
  3275. // glVertexAttrib4svARB { already defined }
  3276. // glVertexAttrib4dvARB { already defined }
  3277. // glVertexAttrib4ivARB { already defined }
  3278. // glVertexAttrib4bvARB { already defined }
  3279. // glVertexAttrib4ubvARB { already defined }
  3280. // glVertexAttrib4usvARB { already defined }
  3281. // glVertexAttrib4uivARB { already defined }
  3282. // glVertexAttrib4NbvARB { already defined }
  3283. // glVertexAttrib4NsvARB { already defined }
  3284. // glVertexAttrib4NivARB { already defined }
  3285. // glVertexAttrib4NubvARB { already defined }
  3286. // glVertexAttrib4NusvARB { already defined }
  3287. // glVertexAttrib4NuivARB { already defined }
  3288. // glVertexAttribPointerARB { already defined }
  3289. // glEnableVertexAttribArrayARB { already defined }
  3290. // glDisableVertexAttribArrayARB { already defined }
  3291. var
  3292. glBindAttribLocationARB: procedure(programObj: GLhandleARB; index: GLuint; const name: PGLcharARB); extdecl;
  3293. glGetActiveAttribARB: procedure(programObj: GLhandleARB; index: GLuint; maxLength: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLcharARB); extdecl;
  3294. glGetAttribLocationARB: function(programObj: GLhandleARB; const name: PGLcharARB): GLint; extdecl;
  3295. // glGetVertexAttribdvARB { already defined }
  3296. // glGetVertexAttribfvARB { already defined }
  3297. // glGetVertexAttribivARB { already defined }
  3298. // glGetVertexAttribPointervARB { already defined }
  3299. function Load_GL_ARB_vertex_shader: Boolean;
  3300. //***** GL_ARB_fragment_shader *****//
  3301. const
  3302. GL_FRAGMENT_SHADER_ARB = $8B30;
  3303. GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = $8B49;
  3304. // GL_MAX_TEXTURE_COORDS_ARB { already defined }
  3305. // GL_MAX_TEXTURE_IMAGE_UNITS_ARB { already defined }
  3306. // GL_OBJECT_TYPE_ARB { already defined }
  3307. // GL_OBJECT_SUBTYPE_ARB { already defined }
  3308. // GL_SHADER_OBJECT_ARB { already defined }
  3309. function Load_GL_ARB_fragment_shader: Boolean;
  3310. //***** GL_ARB_shading_language_100 *****//
  3311. function Load_GL_ARB_shading_language_100: Boolean;
  3312. //***** GL_ARB_texture_non_power_of_two *****//
  3313. function Load_GL_ARB_texture_non_power_of_two: Boolean;
  3314. //***** GL_ARB_point_sprite *****//
  3315. const
  3316. GL_POINT_SPRITE_ARB = $8861;
  3317. GL_COORD_REPLACE_ARB = $8862;
  3318. function Load_GL_ARB_point_sprite: Boolean;
  3319. //***** GL_EXT_depth_bounds_test *****//
  3320. const
  3321. GL_DEPTH_BOUNDS_TEST_EXT = $8890;
  3322. GL_DEPTH_BOUNDS_EXT = $8891;
  3323. var
  3324. glDepthBoundsEXT: procedure(zmin: GLclampd; zmax: GLclampd); extdecl;
  3325. function Load_GL_EXT_depth_bounds_test: Boolean;
  3326. //***** GL_EXT_texture_mirror_clamp *****//
  3327. const
  3328. GL_MIRROR_CLAMP_EXT = $8742;
  3329. GL_MIRROR_CLAMP_TO_EDGE_EXT = $8743;
  3330. GL_MIRROR_CLAMP_TO_BORDER_EXT = $8912;
  3331. function Load_GL_EXT_texture_mirror_clamp: Boolean;
  3332. //***** GL_EXT_blend_equation_separate *****//
  3333. const
  3334. GL_BLEND_EQUATION_RGB_EXT = $8009;
  3335. GL_BLEND_EQUATION_ALPHA_EXT = $883D;
  3336. var
  3337. glBlendEquationSeparateEXT: procedure(modeRGB: GLenum; modeAlpha: GLenum); extdecl;
  3338. function Load_GL_EXT_blend_equation_separate: Boolean;
  3339. //***** GL_MESA_pack_invert *****//
  3340. const
  3341. GL_PACK_INVERT_MESA = $8758;
  3342. function Load_GL_MESA_pack_invert: Boolean;
  3343. //***** GL_MESA_ycbcr_texture *****//
  3344. const
  3345. GL_YCBCR_MESA = $8757;
  3346. GL_UNSIGNED_SHORT_8_8_MESA = $85BA;
  3347. GL_UNSIGNED_SHORT_8_8_REV_MESA = $85BB;
  3348. function Load_GL_MESA_ycbcr_texture: Boolean;
  3349. //***** GL_ARB_fragment_program_shadow *****//
  3350. function Load_GL_ARB_fragment_program_shadow: Boolean;
  3351. //***** GL_NV_fragment_program_option *****//
  3352. function Load_GL_NV_fragment_program_option: Boolean;
  3353. //***** GL_EXT_pixel_buffer_object *****//
  3354. const
  3355. GL_PIXEL_PACK_BUFFER_EXT = $88EB;
  3356. GL_PIXEL_UNPACK_BUFFER_EXT = $88EC;
  3357. GL_PIXEL_PACK_BUFFER_BINDING_EXT = $88ED;
  3358. GL_PIXEL_UNPACK_BUFFER_BINDING_EXT = $88EF;
  3359. function Load_GL_EXT_pixel_buffer_object: Boolean;
  3360. //***** GL_NV_fragment_program2 *****//
  3361. const
  3362. GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = $88F4;
  3363. GL_MAX_PROGRAM_CALL_DEPTH_NV = $88F5;
  3364. GL_MAX_PROGRAM_IF_DEPTH_NV = $88F6;
  3365. GL_MAX_PROGRAM_LOOP_DEPTH_NV = $88F7;
  3366. GL_MAX_PROGRAM_LOOP_COUNT_NV = $88F8;
  3367. function Load_GL_NV_fragment_program2: Boolean;
  3368. //***** GL_NV_vertex_program2_option *****//
  3369. // GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV { already defined }
  3370. // GL_MAX_PROGRAM_CALL_DEPTH_NV { already defined }
  3371. function Load_GL_NV_vertex_program2_option: Boolean;
  3372. //***** GL_NV_vertex_program3 *****//
  3373. // GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB { already defined }
  3374. function Load_GL_NV_vertex_program3: Boolean;
  3375. //***** GL_ARB_draw_buffers *****//
  3376. const
  3377. GL_MAX_DRAW_BUFFERS_ARB = $8824;
  3378. GL_DRAW_BUFFER0_ARB = $8825;
  3379. GL_DRAW_BUFFER1_ARB = $8826;
  3380. GL_DRAW_BUFFER2_ARB = $8827;
  3381. GL_DRAW_BUFFER3_ARB = $8828;
  3382. GL_DRAW_BUFFER4_ARB = $8829;
  3383. GL_DRAW_BUFFER5_ARB = $882A;
  3384. GL_DRAW_BUFFER6_ARB = $882B;
  3385. GL_DRAW_BUFFER7_ARB = $882C;
  3386. GL_DRAW_BUFFER8_ARB = $882D;
  3387. GL_DRAW_BUFFER9_ARB = $882E;
  3388. GL_DRAW_BUFFER10_ARB = $882F;
  3389. GL_DRAW_BUFFER11_ARB = $8830;
  3390. GL_DRAW_BUFFER12_ARB = $8831;
  3391. GL_DRAW_BUFFER13_ARB = $8832;
  3392. GL_DRAW_BUFFER14_ARB = $8833;
  3393. GL_DRAW_BUFFER15_ARB = $8834;
  3394. var
  3395. glDrawBuffersARB: procedure(n: GLsizei; const bufs: PGLenum); extdecl;
  3396. function Load_GL_ARB_draw_buffers: Boolean;
  3397. //***** GL_ARB_texture_rectangle *****//
  3398. const
  3399. GL_TEXTURE_RECTANGLE_ARB = $84F5;
  3400. GL_TEXTURE_BINDING_RECTANGLE_ARB = $84F6;
  3401. GL_PROXY_TEXTURE_RECTANGLE_ARB = $84F7;
  3402. GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = $84F8;
  3403. function Load_GL_ARB_texture_rectangle: Boolean;
  3404. //***** GL_ARB_color_buffer_float *****//
  3405. const
  3406. GL_RGBA_FLOAT_MODE_ARB = $8820;
  3407. GL_CLAMP_VERTEX_COLOR_ARB = $891A;
  3408. GL_CLAMP_FRAGMENT_COLOR_ARB = $891B;
  3409. GL_CLAMP_READ_COLOR_ARB = $891C;
  3410. GL_FIXED_ONLY_ARB = $891D;
  3411. WGL_TYPE_RGBA_FLOAT_ARB = $21A0;
  3412. var
  3413. glClampColorARB: procedure(target: GLenum; clamp: GLenum); extdecl;
  3414. function Load_GL_ARB_color_buffer_float: Boolean;
  3415. //***** GL_ARB_half_float_pixel *****//
  3416. const
  3417. GL_HALF_FLOAT_ARB = $140B;
  3418. function Load_GL_ARB_half_float_pixel: Boolean;
  3419. //***** GL_ARB_texture_float *****//
  3420. const
  3421. GL_TEXTURE_RED_TYPE_ARB = $8C10;
  3422. GL_TEXTURE_GREEN_TYPE_ARB = $8C11;
  3423. GL_TEXTURE_BLUE_TYPE_ARB = $8C12;
  3424. GL_TEXTURE_ALPHA_TYPE_ARB = $8C13;
  3425. GL_TEXTURE_LUMINANCE_TYPE_ARB = $8C14;
  3426. GL_TEXTURE_INTENSITY_TYPE_ARB = $8C15;
  3427. GL_TEXTURE_DEPTH_TYPE_ARB = $8C16;
  3428. GL_UNSIGNED_NORMALIZED_ARB = $8C17;
  3429. GL_RGBA32F_ARB = $8814;
  3430. GL_RGB32F_ARB = $8815;
  3431. GL_ALPHA32F_ARB = $8816;
  3432. GL_INTENSITY32F_ARB = $8817;
  3433. GL_LUMINANCE32F_ARB = $8818;
  3434. GL_LUMINANCE_ALPHA32F_ARB = $8819;
  3435. GL_RGBA16F_ARB = $881A;
  3436. GL_RGB16F_ARB = $881B;
  3437. GL_ALPHA16F_ARB = $881C;
  3438. GL_INTENSITY16F_ARB = $881D;
  3439. GL_LUMINANCE16F_ARB = $881E;
  3440. GL_LUMINANCE_ALPHA16F_ARB = $881F;
  3441. function Load_GL_ARB_texture_float: Boolean;
  3442. //***** GL_EXT_texture_compression_dxt1 *****//
  3443. // GL_COMPRESSED_RGB_S3TC_DXT1_EXT { already defined }
  3444. // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT { already defined }
  3445. function Load_GL_EXT_texture_compression_dxt1: Boolean;
  3446. //***** GL_ARB_pixel_buffer_object *****//
  3447. const
  3448. GL_PIXEL_PACK_BUFFER_ARB = $88EB;
  3449. GL_PIXEL_UNPACK_BUFFER_ARB = $88EC;
  3450. GL_PIXEL_PACK_BUFFER_BINDING_ARB = $88ED;
  3451. GL_PIXEL_UNPACK_BUFFER_BINDING_ARB = $88EF;
  3452. function Load_GL_ARB_pixel_buffer_object: Boolean;
  3453. //***** GL_EXT_framebuffer_object *****//
  3454. const
  3455. GL_FRAMEBUFFER_EXT = $8D40;
  3456. GL_RENDERBUFFER_EXT = $8D41;
  3457. GL_STENCIL_INDEX_EXT = $8D45;
  3458. GL_STENCIL_INDEX1_EXT = $8D46;
  3459. GL_STENCIL_INDEX4_EXT = $8D47;
  3460. GL_STENCIL_INDEX8_EXT = $8D48;
  3461. GL_STENCIL_INDEX16_EXT = $8D49;
  3462. GL_RENDERBUFFER_WIDTH_EXT = $8D42;
  3463. GL_RENDERBUFFER_HEIGHT_EXT = $8D43;
  3464. GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = $8D44;
  3465. GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = $8CD0;
  3466. GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = $8CD1;
  3467. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = $8CD2;
  3468. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = $8CD3;
  3469. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = $8CD4;
  3470. GL_COLOR_ATTACHMENT0_EXT = $8CE0;
  3471. GL_COLOR_ATTACHMENT1_EXT = $8CE1;
  3472. GL_COLOR_ATTACHMENT2_EXT = $8CE2;
  3473. GL_COLOR_ATTACHMENT3_EXT = $8CE3;
  3474. GL_COLOR_ATTACHMENT4_EXT = $8CE4;
  3475. GL_COLOR_ATTACHMENT5_EXT = $8CE5;
  3476. GL_COLOR_ATTACHMENT6_EXT = $8CE6;
  3477. GL_COLOR_ATTACHMENT7_EXT = $8CE7;
  3478. GL_COLOR_ATTACHMENT8_EXT = $8CE8;
  3479. GL_COLOR_ATTACHMENT9_EXT = $8CE9;
  3480. GL_COLOR_ATTACHMENT10_EXT = $8CEA;
  3481. GL_COLOR_ATTACHMENT11_EXT = $8CEB;
  3482. GL_COLOR_ATTACHMENT12_EXT = $8CEC;
  3483. GL_COLOR_ATTACHMENT13_EXT = $8CED;
  3484. GL_COLOR_ATTACHMENT14_EXT = $8CEE;
  3485. GL_COLOR_ATTACHMENT15_EXT = $8CEF;
  3486. GL_DEPTH_ATTACHMENT_EXT = $8D00;
  3487. GL_STENCIL_ATTACHMENT_EXT = $8D20;
  3488. GL_FRAMEBUFFER_COMPLETE_EXT = $8CD5;
  3489. GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = $8CD6;
  3490. GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = $8CD7;
  3491. GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = $8CD8;
  3492. GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = $8CD9;
  3493. GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = $8CDA;
  3494. GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = $8CDB;
  3495. GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = $8CDC;
  3496. GL_FRAMEBUFFER_UNSUPPORTED_EXT = $8CDD;
  3497. GL_FRAMEBUFFER_STATUS_ERROR_EXT = $8CDE;
  3498. GL_FRAMEBUFFER_BINDING_EXT = $8CA6;
  3499. GL_RENDERBUFFER_BINDING_EXT = $8CA7;
  3500. GL_MAX_COLOR_ATTACHMENTS_EXT = $8CDF;
  3501. GL_MAX_RENDERBUFFER_SIZE_EXT = $84E8;
  3502. GL_INVALID_FRAMEBUFFER_OPERATION_EXT = $0506;
  3503. var
  3504. glIsRenderbufferEXT: function(renderbuffer: GLuint): GLboolean; extdecl;
  3505. glBindRenderbufferEXT: procedure(target: GLenum; renderbuffer: GLuint); extdecl;
  3506. glDeleteRenderbuffersEXT: procedure(n: GLsizei; const renderbuffers: PGLuint); extdecl;
  3507. glGenRenderbuffersEXT: procedure(n: GLsizei; renderbuffers: PGLuint); extdecl;
  3508. glRenderbufferStorageEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei); extdecl;
  3509. glGetRenderbufferParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3510. glIsFramebufferEXT: function(framebuffer: GLuint): GLboolean; extdecl;
  3511. glBindFramebufferEXT: procedure(target: GLenum; framebuffer: GLuint); extdecl;
  3512. glDeleteFramebuffersEXT: procedure(n: GLsizei; const framebuffers: PGLuint); extdecl;
  3513. glGenFramebuffersEXT: procedure(n: GLsizei; framebuffers: PGLuint); extdecl;
  3514. glCheckFramebufferStatusEXT: function(target: GLenum): GLenum; extdecl;
  3515. glFramebufferTexture1DEXT: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint); extdecl;
  3516. glFramebufferTexture2DEXT: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint); extdecl;
  3517. glFramebufferTexture3DEXT: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint; zoffset: GLint); extdecl;
  3518. glFramebufferRenderbufferEXT: procedure(target: GLenum; attachment: GLenum; renderbuffertarget: GLenum; renderbuffer: GLuint); extdecl;
  3519. glGetFramebufferAttachmentParameterivEXT: procedure(target: GLenum; attachment: GLenum; pname: GLenum; params: PGLint); extdecl;
  3520. glGenerateMipmapEXT: procedure(target: GLenum); extdecl;
  3521. function Load_GL_EXT_framebuffer_object: Boolean;
  3522. //**** GL_ARB_framebuffer_object *****//
  3523. const
  3524. GL_INVALID_FRAMEBUFFER_OPERATION = $0506;
  3525. GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = $8210;
  3526. GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = $8211;
  3527. GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = $8212;
  3528. GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = $8213;
  3529. GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = $8214;
  3530. GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = $8215;
  3531. GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = $8216;
  3532. GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = $8217;
  3533. GL_FRAMEBUFFER_DEFAULT = $8218;
  3534. GL_FRAMEBUFFER_UNDEFINED = $8219;
  3535. GL_DEPTH_STENCIL_ATTACHMENT = $821A;
  3536. GL_MAX_RENDERBUFFER_SIZE = $84E8;
  3537. GL_DEPTH_STENCIL = $84F9;
  3538. GL_UNSIGNED_INT_24_8 = $84FA;
  3539. GL_DEPTH24_STENCIL8 = $88F0;
  3540. GL_TEXTURE_STENCIL_SIZE = $88F1;
  3541. GL_TEXTURE_RED_TYPE = $8C10;
  3542. GL_TEXTURE_GREEN_TYPE = $8C11;
  3543. GL_TEXTURE_BLUE_TYPE = $8C12;
  3544. GL_TEXTURE_ALPHA_TYPE = $8C13;
  3545. GL_TEXTURE_DEPTH_TYPE = $8C16;
  3546. GL_UNSIGNED_NORMALIZED = $8C17;
  3547. GL_FRAMEBUFFER_BINDING = $8CA6;
  3548. GL_DRAW_FRAMEBUFFER_BINDING = GL_FRAMEBUFFER_BINDING;
  3549. GL_RENDERBUFFER_BINDING = $8CA7;
  3550. GL_READ_FRAMEBUFFER = $8CA8;
  3551. GL_DRAW_FRAMEBUFFER = $8CA9;
  3552. GL_READ_FRAMEBUFFER_BINDING = $8CAA;
  3553. GL_RENDERBUFFER_SAMPLES = $8CAB;
  3554. GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = $8CD0;
  3555. GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = $8CD1;
  3556. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = $8CD2;
  3557. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = $8CD3;
  3558. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = $8CD4;
  3559. GL_FRAMEBUFFER_COMPLETE = $8CD5;
  3560. GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = $8CD6;
  3561. GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = $8CD7;
  3562. GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = $8CDB;
  3563. GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = $8CDC;
  3564. GL_FRAMEBUFFER_UNSUPPORTED = $8CDD;
  3565. GL_MAX_COLOR_ATTACHMENTS = $8CDF;
  3566. GL_COLOR_ATTACHMENT0 = $8CE0;
  3567. GL_COLOR_ATTACHMENT1 = $8CE1;
  3568. GL_COLOR_ATTACHMENT2 = $8CE2;
  3569. GL_COLOR_ATTACHMENT3 = $8CE3;
  3570. GL_COLOR_ATTACHMENT4 = $8CE4;
  3571. GL_COLOR_ATTACHMENT5 = $8CE5;
  3572. GL_COLOR_ATTACHMENT6 = $8CE6;
  3573. GL_COLOR_ATTACHMENT7 = $8CE7;
  3574. GL_COLOR_ATTACHMENT8 = $8CE8;
  3575. GL_COLOR_ATTACHMENT9 = $8CE9;
  3576. GL_COLOR_ATTACHMENT10 = $8CEA;
  3577. GL_COLOR_ATTACHMENT11 = $8CEB;
  3578. GL_COLOR_ATTACHMENT12 = $8CEC;
  3579. GL_COLOR_ATTACHMENT13 = $8CED;
  3580. GL_COLOR_ATTACHMENT14 = $8CEE;
  3581. GL_COLOR_ATTACHMENT15 = $8CEF;
  3582. GL_DEPTH_ATTACHMENT = $8D00;
  3583. GL_STENCIL_ATTACHMENT = $8D20;
  3584. GL_FRAMEBUFFER = $8D40;
  3585. GL_RENDERBUFFER = $8D41;
  3586. GL_RENDERBUFFER_WIDTH = $8D42;
  3587. GL_RENDERBUFFER_HEIGHT = $8D43;
  3588. GL_RENDERBUFFER_INTERNAL_FORMAT = $8D44;
  3589. GL_STENCIL_INDEX1 = $8D46;
  3590. GL_STENCIL_INDEX4 = $8D47;
  3591. GL_STENCIL_INDEX8 = $8D48;
  3592. GL_STENCIL_INDEX16 = $8D49;
  3593. GL_RENDERBUFFER_RED_SIZE = $8D50;
  3594. GL_RENDERBUFFER_GREEN_SIZE = $8D51;
  3595. GL_RENDERBUFFER_BLUE_SIZE = $8D52;
  3596. GL_RENDERBUFFER_ALPHA_SIZE = $8D53;
  3597. GL_RENDERBUFFER_DEPTH_SIZE = $8D54;
  3598. GL_RENDERBUFFER_STENCIL_SIZE = $8D55;
  3599. GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = $8D56;
  3600. GL_MAX_SAMPLES = $8D57;
  3601. var
  3602. glIsRenderbuffer: function(renderbuffer: GLuint): GLboolean; extdecl;
  3603. glBindRenderbuffer: procedure(target: GLenum; renderbuffer: GLuint); extdecl;
  3604. glDeleteRenderbuffers: procedure(n: GLsizei; const renderbuffers: PGLuint); extdecl;
  3605. glGenRenderbuffers: procedure(n: GLsizei; renderbuffers: PGLuint); extdecl;
  3606. glRenderbufferStorage: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei); extdecl;
  3607. glGetRenderbufferParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3608. glIsFramebuffer: function(framebuffer: GLuint): GLboolean; extdecl;
  3609. glBindFramebuffer: procedure(target: GLenum; framebuffer: GLuint); extdecl;
  3610. glDeleteFramebuffers: procedure(n: GLsizei; const framebuffers: PGLuint); extdecl;
  3611. glGenFramebuffers: procedure(n: GLsizei; framebuffers: PGLuint); extdecl;
  3612. glCheckFramebufferStatus: function(target: GLenum): GLenum; extdecl;
  3613. glFramebufferTexture1D: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint); extdecl;
  3614. glFramebufferTexture2D: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint); extdecl;
  3615. glFramebufferTexture3D: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint; zoffset: GLint); extdecl;
  3616. glFramebufferRenderbuffer: procedure(target: GLenum; attachment: GLenum; renderbuffertarget: GLenum; renderbuffer: GLuint); extdecl;
  3617. glGetFramebufferAttachmentParameteriv: procedure(target: GLenum; attachment: GLenum; pname: GLenum; params: PGLint); extdecl;
  3618. glGenerateMipmap: procedure(target: GLenum); extdecl;
  3619. glBlitFramebuffer: procedure(srcX0: GLint; srcY0: GLint; srcX1: GLint; srcY1: GLint; dstX0: GLint; dstY0: GLint; dstX1: GLint; dstY1: GLint; mask: GLbitfield; filter: GLenum); extdecl;
  3620. glRenderbufferStorageMultisample: procedure(target: GLenum; samples: GLsizei; internalformat: GLenum; width: GLsizei; height: GLsizei); extdecl;
  3621. glFramebufferTextureLayer: procedure(target: GLenum; attachment: GLenum; texture: GLuint; level: GLint; layer: GLint); extdecl;
  3622. { Using LoadAsCore = true means that we will *not* check
  3623. if the extension is advertised in glGetString(GL_EXTENSIONS) string.
  3624. This allows to successfully Load_GL_version_3_0 in an OpenGL 3.0
  3625. forward-compatible context, where the "core extensions" do not have
  3626. to be mentioned inside glGetString(GL_EXTENSIONS). }
  3627. function Load_GL_ARB_framebuffer_object(LoadAsCore: boolean = false): Boolean;
  3628. //**** GL_ARB_framebuffer_object DEPRECATED *****//
  3629. const
  3630. GL_INDEX = $8222;
  3631. GL_TEXTURE_LUMINANCE_TYPE = $8C14;
  3632. GL_TEXTURE_INTENSITY_TYPE = $8C15;
  3633. //**** GL_ARB_map_buffer_range *****//
  3634. const
  3635. GL_MAP_READ_BIT = $0001;
  3636. GL_MAP_WRITE_BIT = $0002;
  3637. GL_MAP_INVALIDATE_RANGE_BIT = $0004;
  3638. GL_MAP_INVALIDATE_BUFFER_BIT = $0008;
  3639. GL_MAP_FLUSH_EXPLICIT_BIT = $0010;
  3640. GL_MAP_UNSYNCHRONIZED_BIT = $0020;
  3641. var
  3642. glMapBufferRange: function(target: GLenum; offset: GLintptr; length: GLsizeiptr; access: GLbitfield): PGLvoid; extdecl;
  3643. glFlushMappedBufferRange: procedure(target: GLenum; offset: GLintptr; length: GLsizeiptr); extdecl;
  3644. function Load_GL_ARB_map_buffer_range(LoadAsCore: boolean = false): Boolean;
  3645. //**** GL_ARB_vertex_array_object *****//
  3646. const
  3647. GL_VERTEX_ARRAY_BINDING = $85B5;
  3648. var
  3649. glBindVertexArray: procedure(_array: GLuint); extdecl;
  3650. glDeleteVertexArrays: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  3651. glGenVertexArrays: procedure(n: GLsizei; arrays: PGLuint); extdecl;
  3652. glIsVertexArray: function(_array: GLuint): GLboolean; extdecl;
  3653. function Load_GL_ARB_vertex_array_object(LoadAsCore: boolean = false): Boolean;
  3654. //**** GL_ARB_copy_buffer *****//
  3655. const
  3656. GL_COPY_READ_BUFFER = $8F36;
  3657. GL_COPY_WRITE_BUFFER = $8F37;
  3658. var
  3659. glCopyBufferSubData: procedure(readTarget: GLenum; writeTarget: GLenum; readOffset: GLintptr; writeOffset: GLintptr; size: GLsizeiptr); extdecl;
  3660. function Load_GL_ARB_copy_buffer(LoadAsCore: boolean = false): Boolean;
  3661. //**** GL_ARB_uniform_buffer_object *****//
  3662. const
  3663. GL_UNIFORM_BUFFER = $8A11;
  3664. GL_UNIFORM_BUFFER_BINDING = $8A28;
  3665. GL_UNIFORM_BUFFER_START = $8A29;
  3666. GL_UNIFORM_BUFFER_SIZE = $8A2A;
  3667. GL_MAX_VERTEX_UNIFORM_BLOCKS = $8A2B;
  3668. GL_MAX_GEOMETRY_UNIFORM_BLOCKS = $8A2C;
  3669. GL_MAX_FRAGMENT_UNIFORM_BLOCKS = $8A2D;
  3670. GL_MAX_COMBINED_UNIFORM_BLOCKS = $8A2E;
  3671. GL_MAX_UNIFORM_BUFFER_BINDINGS = $8A2F;
  3672. GL_MAX_UNIFORM_BLOCK_SIZE = $8A30;
  3673. GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = $8A31;
  3674. GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = $8A32;
  3675. GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = $8A33;
  3676. GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = $8A34;
  3677. GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = $8A35;
  3678. GL_ACTIVE_UNIFORM_BLOCKS = $8A36;
  3679. GL_UNIFORM_TYPE = $8A37;
  3680. GL_UNIFORM_SIZE = $8A38;
  3681. GL_UNIFORM_NAME_LENGTH = $8A39;
  3682. GL_UNIFORM_BLOCK_INDEX = $8A3A;
  3683. GL_UNIFORM_OFFSET = $8A3B;
  3684. GL_UNIFORM_ARRAY_STRIDE = $8A3C;
  3685. GL_UNIFORM_MATRIX_STRIDE = $8A3D;
  3686. GL_UNIFORM_IS_ROW_MAJOR = $8A3E;
  3687. GL_UNIFORM_BLOCK_BINDING = $8A3F;
  3688. GL_UNIFORM_BLOCK_DATA_SIZE = $8A40;
  3689. GL_UNIFORM_BLOCK_NAME_LENGTH = $8A41;
  3690. GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = $8A42;
  3691. GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = $8A43;
  3692. GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = $8A44;
  3693. GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = $8A45;
  3694. GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = $8A46;
  3695. GL_INVALID_INDEX = DWord($FFFFFFFF);
  3696. var
  3697. glGetUniformIndices: procedure(_program: GLuint; uniformCount: GLsizei; const uniformNames: PPGLchar; uniformIndices: PGLuint); extdecl;
  3698. glGetActiveUniformsiv: procedure(_program: GLuint; uniformCount: GLsizei; const uniformIndices: PGLuint; pname: GLenum; params: PGLint); extdecl;
  3699. glGetActiveUniformName: procedure(_program: GLuint; uniformIndex: GLuint; bufSize: GLsizei; length: PGLsizei; uniformName: PGLchar); extdecl;
  3700. glGetUniformBlockIndex: function(_program: GLuint; const uniformBlockName: PGLchar): GLuint; extdecl;
  3701. glGetActiveUniformBlockiv: procedure(_program: GLuint; uniformBlockIndex: GLuint; pname: GLenum; params: PGLint); extdecl;
  3702. glGetActiveUniformBlockName: procedure(_program: GLuint; uniformBlockIndex: GLuint; bufSize: GLsizei; length: PGLsizei; uniformBlockName: PGLchar); extdecl;
  3703. glUniformBlockBinding: procedure(_program: GLuint; uniformBlockIndex: GLuint; uniformBlockBinding: GLuint); extdecl;
  3704. function Load_GL_ARB_uniform_buffer_object(LoadAsCore: boolean = false): Boolean;
  3705. //**** GL_ARB_draw_elements_base_vertex *****//
  3706. var
  3707. glDrawElementsBaseVertex: procedure(mode: GLenum; count: GLsizei; _type: GLenum; const indices: PGLvoid; basevertex: GLint); extdecl;
  3708. glDrawRangeElementsBaseVertex: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei; _type: GLenum; const indices: PGLvoid; basevertex: GLint); extdecl;
  3709. glDrawElementsInstancedBaseVertex: procedure(mode: GLenum; count: GLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei; basevertex: GLint); extdecl;
  3710. glMultiDrawElementsBaseVertex: procedure(mode: GLenum; const count: PGLsizei; _type: GLenum; const indices: PPGLvoid; primcount: GLsizei; const basevertex: PGLint); extdecl;
  3711. function Load_GL_ARB_draw_elements_base_vertex(LoadAsCore: boolean = false): Boolean;
  3712. //**** GL_ARB_provoking_vertex *****//
  3713. const
  3714. GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = $8E4C;
  3715. GL_FIRST_VERTEX_CONVENTION = $8E4D;
  3716. GL_LAST_VERTEX_CONVENTION = $8E4E;
  3717. GL_PROVOKING_VERTEX = $8E4F;
  3718. var
  3719. glProvokingVertex: procedure(mode: GLenum); extdecl;
  3720. function Load_GL_ARB_provoking_vertex(LoadAsCore: boolean = false): Boolean;
  3721. //**** GL_ARB_sync *****//
  3722. type
  3723. GLsync = Pointer;
  3724. TGLsync = GLSync;
  3725. PGLsync = ^GLSync;
  3726. const
  3727. GL_MAX_SERVER_WAIT_TIMEOUT = $9111;
  3728. GL_OBJECT_TYPE = $9112;
  3729. GL_SYNC_CONDITION = $9113;
  3730. GL_SYNC_STATUS = $9114;
  3731. GL_SYNC_FLAGS = $9115;
  3732. GL_SYNC_FENCE = $9116;
  3733. GL_SYNC_GPU_COMMANDS_COMPLETE = $9117;
  3734. GL_UNSIGNALED = $9118;
  3735. GL_SIGNALED = $9119;
  3736. GL_ALREADY_SIGNALED = $911A;
  3737. GL_TIMEOUT_EXPIRED = $911B;
  3738. GL_CONDITION_SATISFIED = $911C;
  3739. GL_WAIT_FAILED = $911D;
  3740. GL_SYNC_FLUSH_COMMANDS_BIT = $00000001;
  3741. GL_TIMEOUT_IGNORED = QWord($FFFFFFFFFFFFFFFF);
  3742. var
  3743. glFenceSync: function(condition: GLenum; flags: GLbitfield): GLsync; extdecl;
  3744. glIsSync: function(sync: GLsync): GLboolean; extdecl;
  3745. glDeleteSync: procedure(sync: GLsync); extdecl;
  3746. glClientWaitSync: function(sync: GLsync; flags: GLbitfield; timeout: GLuint64): GLenum; extdecl;
  3747. glWaitSync: procedure(sync: GLsync; flags: GLbitfield; timeout: GLuint64); extdecl;
  3748. glGetInteger64v: procedure(pname: GLenum; params: PGLint64); extdecl;
  3749. glGetSynciv: procedure(sync: GLsync; pname: GLenum; bufSize: GLsizei; length: PGLsizei; values: PGLint); extdecl;
  3750. function Load_GL_ARB_sync(LoadAsCore: boolean = false): Boolean;
  3751. //**** GL_ARB_texture_multisample *****//
  3752. const
  3753. GL_SAMPLE_POSITION = $8E50;
  3754. GL_SAMPLE_MASK = $8E51;
  3755. GL_SAMPLE_MASK_VALUE = $8E52;
  3756. GL_MAX_SAMPLE_MASK_WORDS = $8E59;
  3757. GL_TEXTURE_2D_MULTISAMPLE = $9100;
  3758. GL_PROXY_TEXTURE_2D_MULTISAMPLE = $9101;
  3759. GL_TEXTURE_2D_MULTISAMPLE_ARRAY = $9102;
  3760. GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = $9103;
  3761. GL_TEXTURE_BINDING_2D_MULTISAMPLE = $9104;
  3762. GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = $9105;
  3763. GL_TEXTURE_SAMPLES = $9106;
  3764. GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = $9107;
  3765. GL_SAMPLER_2D_MULTISAMPLE = $9108;
  3766. GL_INT_SAMPLER_2D_MULTISAMPLE = $9109;
  3767. GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = $910A;
  3768. GL_SAMPLER_2D_MULTISAMPLE_ARRAY = $910B;
  3769. GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = $910C;
  3770. GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = $910D;
  3771. GL_MAX_COLOR_TEXTURE_SAMPLES = $910E;
  3772. GL_MAX_DEPTH_TEXTURE_SAMPLES = $910F;
  3773. GL_MAX_INTEGER_SAMPLES = $9110;
  3774. var
  3775. glTexImage2DMultisample: procedure(target: GLenum; samples: GLsizei; internalformat: GLint; width: GLsizei; height: GLsizei; fixedsamplelocations: GLboolean); extdecl;
  3776. glTexImage3DMultisample: procedure(target: GLenum; samples: GLsizei; internalformat: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; fixedsamplelocations: GLboolean); extdecl;
  3777. glGetMultisamplefv: procedure(pname: GLenum; index: GLuint; val: PGLfloat); extdecl;
  3778. glSampleMaski: procedure(index: GLuint; mask: GLbitfield); extdecl;
  3779. function Load_GL_ARB_texture_multisample(LoadAsCore: boolean = false): Boolean;
  3780. //**** GL_ARB_blend_func_extended *****//
  3781. const
  3782. GL_SRC1_COLOR = $88F9;
  3783. // reuse GL_SRC1_ALPHA
  3784. const
  3785. GL_ONE_MINUS_SRC1_COLOR = $88FA;
  3786. GL_ONE_MINUS_SRC1_ALPHA = $88FB;
  3787. GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = $88FC;
  3788. var
  3789. glBindFragDataLocationIndexed: procedure(_program: GLuint; colorNumber: GLuint; index: GLuint; const name: PGLchar); extdecl;
  3790. glGetFragDataIndex: function(_program: GLuint; const name: PGLchar): GLint; extdecl;
  3791. function Load_GL_ARB_blend_func_extended(LoadAsCore: boolean = false): Boolean;
  3792. //**** GL_ARB_sampler_objects *****//
  3793. const
  3794. GL_SAMPLER_BINDING = $8919;
  3795. var
  3796. glGenSamplers: procedure(count: GLsizei; samplers: PGLuint); extdecl;
  3797. glDeleteSamplers: procedure(count: GLsizei; const samplers: PGLuint); extdecl;
  3798. glIsSampler: function(sampler: GLuint): GLboolean; extdecl;
  3799. glBindSampler: procedure(_unit: GLenum; sampler: GLuint); extdecl;
  3800. glSamplerParameteri: procedure(sampler: GLuint; pname: GLenum; param: GLint); extdecl;
  3801. glSamplerParameteriv: procedure(sampler: GLuint; pname: GLenum; const param: PGLint); extdecl;
  3802. glSamplerParameterf: procedure(sampler: GLuint; pname: GLenum; param: GLfloat); extdecl;
  3803. glSamplerParameterfv: procedure(sampler: GLuint; pname: GLenum; const param: PGLfloat); extdecl;
  3804. glSamplerParameterIiv: procedure(sampler: GLuint; pname: GLenum; const param: PGLint); extdecl;
  3805. glSamplerParameterIuiv: procedure(sampler: GLuint; pname: GLenum; const param: PGLuint); extdecl;
  3806. glGetSamplerParameteriv: procedure(sampler: GLuint; pname: GLenum; params: PGLint); extdecl;
  3807. glGetSamplerParameterIiv: procedure(sampler: GLuint; pname: GLenum; params: PGLint); extdecl;
  3808. glGetSamplerParameterfv: procedure(sampler: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  3809. glGetSamplerParameterIuiv: procedure(sampler: GLuint; pname: GLenum; params: PGLuint); extdecl;
  3810. function Load_GL_ARB_sampler_objects(LoadAsCore: boolean = false): Boolean;
  3811. //**** GL_ARB_timer_query *****//
  3812. const
  3813. GL_TIME_ELAPSED = $88BF;
  3814. GL_TIMESTAMP = $8E28;
  3815. var
  3816. glQueryCounter: procedure(id: GLuint; target: GLenum); extdecl;
  3817. glGetQueryObjecti64v: procedure(id: GLuint; pname: GLenum; params: PGLint64); extdecl;
  3818. glGetQueryObjectui64v: procedure(id: GLuint; pname: GLenum; params: PGLuint64); extdecl;
  3819. function Load_GL_ARB_timer_query(LoadAsCore: boolean = false): Boolean;
  3820. //**** GL_ARB_vertex_type_2_10_10_10_rev *****//
  3821. const
  3822. GL_INT_2_10_10_10_REV = $8D9F;
  3823. var
  3824. glVertexP2ui: procedure(_type: GLenum; value: GLuint); extdecl;
  3825. glVertexP2uiv: procedure(_type: GLenum; const value: PGLuint); extdecl;
  3826. glVertexP3ui: procedure(_type: GLenum; value: GLuint); extdecl;
  3827. glVertexP3uiv: procedure(_type: GLenum; const value: PGLuint); extdecl;
  3828. glVertexP4ui: procedure(_type: GLenum; value: GLuint); extdecl;
  3829. glVertexP4uiv: procedure(_type: GLenum; const value: PGLuint); extdecl;
  3830. glTexCoordP1ui: procedure(_type: GLenum; coords: GLuint); extdecl;
  3831. glTexCoordP1uiv: procedure(_type: GLenum; const coords: PGLuint); extdecl;
  3832. glTexCoordP2ui: procedure(_type: GLenum; coords: GLuint); extdecl;
  3833. glTexCoordP2uiv: procedure(_type: GLenum; const coords: PGLuint); extdecl;
  3834. glTexCoordP3ui: procedure(_type: GLenum; coords: GLuint); extdecl;
  3835. glTexCoordP3uiv: procedure(_type: GLenum; const coords: PGLuint); extdecl;
  3836. glTexCoordP4ui: procedure(_type: GLenum; coords: GLuint); extdecl;
  3837. glTexCoordP4uiv: procedure(_type: GLenum; const coords: PGLuint); extdecl;
  3838. glMultiTexCoordP1ui: procedure(texture: GLenum; _type: GLenum; coords: GLuint); extdecl;
  3839. glMultiTexCoordP1uiv: procedure(texture: GLenum; _type: GLenum; const coords: PGLuint); extdecl;
  3840. glMultiTexCoordP2ui: procedure(texture: GLenum; _type: GLenum; coords: GLuint); extdecl;
  3841. glMultiTexCoordP2uiv: procedure(texture: GLenum; _type: GLenum; const coords: PGLuint); extdecl;
  3842. glMultiTexCoordP3ui: procedure(texture: GLenum; _type: GLenum; coords: GLuint); extdecl;
  3843. glMultiTexCoordP3uiv: procedure(texture: GLenum; _type: GLenum; const coords: PGLuint); extdecl;
  3844. glMultiTexCoordP4ui: procedure(texture: GLenum; _type: GLenum; coords: GLuint); extdecl;
  3845. glMultiTexCoordP4uiv: procedure(texture: GLenum; _type: GLenum; const coords: PGLuint); extdecl;
  3846. glNormalP3ui: procedure(_type: GLenum; coords: GLuint); extdecl;
  3847. glNormalP3uiv: procedure(_type: GLenum; const coords: PGLuint); extdecl;
  3848. glColorP3ui: procedure(_type: GLenum; color: GLuint); extdecl;
  3849. glColorP3uiv: procedure(_type: GLenum; const color: PGLuint); extdecl;
  3850. glColorP4ui: procedure(_type: GLenum; color: GLuint); extdecl;
  3851. glColorP4uiv: procedure(_type: GLenum; const color: PGLuint); extdecl;
  3852. glSecondaryColorP3ui: procedure(_type: GLenum; color: GLuint); extdecl;
  3853. glSecondaryColorP3uiv: procedure(_type: GLenum; const color: PGLuint); extdecl;
  3854. glVertexAttribP1ui: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; value: GLuint); extdecl;
  3855. glVertexAttribP1uiv: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; const value: PGLuint); extdecl;
  3856. glVertexAttribP2ui: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; value: GLuint); extdecl;
  3857. glVertexAttribP2uiv: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; const value: PGLuint); extdecl;
  3858. glVertexAttribP3ui: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; value: GLuint); extdecl;
  3859. glVertexAttribP3uiv: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; const value: PGLuint); extdecl;
  3860. glVertexAttribP4ui: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; value: GLuint); extdecl;
  3861. glVertexAttribP4uiv: procedure(index: GLuint; _type: GLenum; normalized: GLboolean; const value: PGLuint); extdecl;
  3862. function Load_GL_ARB_vertex_type_2_10_10_10_rev(LoadAsCore: boolean = false): Boolean;
  3863. //**** GL_ARB_gpu_shader_fp64 *****//
  3864. // reuse GL_DOUBLE
  3865. const
  3866. GL_DOUBLE_VEC2 = $8FFC;
  3867. GL_DOUBLE_VEC3 = $8FFD;
  3868. GL_DOUBLE_VEC4 = $8FFE;
  3869. GL_DOUBLE_MAT2 = $8F46;
  3870. GL_DOUBLE_MAT3 = $8F47;
  3871. GL_DOUBLE_MAT4 = $8F48;
  3872. GL_DOUBLE_MAT2x3 = $8F49;
  3873. GL_DOUBLE_MAT2x4 = $8F4A;
  3874. GL_DOUBLE_MAT3x2 = $8F4B;
  3875. GL_DOUBLE_MAT3x4 = $8F4C;
  3876. GL_DOUBLE_MAT4x2 = $8F4D;
  3877. GL_DOUBLE_MAT4x3 = $8F4E;
  3878. var
  3879. glUniform1d: procedure(location: GLint; x: GLdouble); extdecl;
  3880. glUniform2d: procedure(location: GLint; x: GLdouble; y: GLdouble); extdecl;
  3881. glUniform3d: procedure(location: GLint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  3882. glUniform4d: procedure(location: GLint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  3883. glUniform1dv: procedure(location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3884. glUniform2dv: procedure(location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3885. glUniform3dv: procedure(location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3886. glUniform4dv: procedure(location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3887. glUniformMatrix2dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3888. glUniformMatrix3dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3889. glUniformMatrix4dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3890. glUniformMatrix2x3dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3891. glUniformMatrix2x4dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3892. glUniformMatrix3x2dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3893. glUniformMatrix3x4dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3894. glUniformMatrix4x2dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3895. glUniformMatrix4x3dv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3896. glGetUniformdv: procedure(_program: GLuint; location: GLint; params: PGLdouble); extdecl;
  3897. { All of the following ProgramUniform* functions are supported if and only
  3898. if EXT_direct_state_access is supported.
  3899. (See http://www.opengl.org/registry/specs/ARB/gpu_shader_fp64.txt)
  3900. Load_GL_ARB_gpu_shader_fp64 will try to load them, but their presence/absence
  3901. will have no effect on the result of Load_GL_ARB_gpu_shader_fp64 and
  3902. Load_GL_VERSION_4_0 functions. (Because they are not mandatory parts of
  3903. the extension or OpenGL 4.0 core spec.) }
  3904. glProgramUniform1dEXT: procedure(_program: GLuint; location: GLint; x: GLdouble); extdecl;
  3905. glProgramUniform2dEXT: procedure(_program: GLuint; location: GLint; x: GLdouble; y: GLdouble); extdecl;
  3906. glProgramUniform3dEXT: procedure(_program: GLuint; location: GLint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  3907. glProgramUniform4dEXT: procedure(_program: GLuint; location: GLint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  3908. glProgramUniform1dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3909. glProgramUniform2dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3910. glProgramUniform3dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3911. glProgramUniform4dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; const value: PGLdouble); extdecl;
  3912. glProgramUniformMatrix2dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3913. glProgramUniformMatrix3dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3914. glProgramUniformMatrix4dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3915. glProgramUniformMatrix2x3dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3916. glProgramUniformMatrix2x4dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3917. glProgramUniformMatrix3x2dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3918. glProgramUniformMatrix3x4dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3919. glProgramUniformMatrix4x2dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3920. glProgramUniformMatrix4x3dvEXT: procedure(_program: GLuint; location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLdouble); extdecl;
  3921. function Load_GL_ARB_gpu_shader_fp64(LoadAsCore: boolean = false): Boolean;
  3922. //**** GL_ARB_shader_subroutine *****//
  3923. const
  3924. GL_ACTIVE_SUBROUTINES = $8DE5;
  3925. GL_ACTIVE_SUBROUTINE_UNIFORMS = $8DE6;
  3926. GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = $8E47;
  3927. GL_ACTIVE_SUBROUTINE_MAX_LENGTH = $8E48;
  3928. GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = $8E49;
  3929. GL_MAX_SUBROUTINES = $8DE7;
  3930. GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = $8DE8;
  3931. GL_NUM_COMPATIBLE_SUBROUTINES = $8E4A;
  3932. GL_COMPATIBLE_SUBROUTINES = $8E4B;
  3933. var
  3934. glGetSubroutineUniformLocation: function(_program: GLuint; shadertype: GLenum; const name: PGLchar): GLint; extdecl;
  3935. glGetSubroutineIndex: function(_program: GLuint; shadertype: GLenum; const name: PGLchar): GLuint; extdecl;
  3936. glGetActiveSubroutineUniformiv: procedure(_program: GLuint; shadertype: GLenum; index: GLuint; pname: GLenum; values: PGLint); extdecl;
  3937. glGetActiveSubroutineUniformName: procedure(_program: GLuint; shadertype: GLenum; index: GLuint; bufsize: GLsizei; length: PGLsizei; name: PGLchar); extdecl;
  3938. glGetActiveSubroutineName: procedure(_program: GLuint; shadertype: GLenum; index: GLuint; bufsize: GLsizei; length: PGLsizei; name: PGLchar); extdecl;
  3939. glUniformSubroutinesuiv: procedure(shadertype: GLenum; count: GLsizei; const indices: PGLuint); extdecl;
  3940. glGetUniformSubroutineuiv: procedure(shadertype: GLenum; location: GLint; params: PGLuint); extdecl;
  3941. glGetProgramStageiv: procedure(_program: GLuint; shadertype: GLenum; pname: GLenum; values: PGLint); extdecl;
  3942. function Load_GL_ARB_shader_subroutine(LoadAsCore: boolean = false): Boolean;
  3943. //**** GL_ARB_tessellation_shader *****//
  3944. const
  3945. GL_PATCHES = $000E;
  3946. GL_PATCH_VERTICES = $8E72;
  3947. GL_PATCH_DEFAULT_INNER_LEVEL = $8E73;
  3948. GL_PATCH_DEFAULT_OUTER_LEVEL = $8E74;
  3949. GL_TESS_CONTROL_OUTPUT_VERTICES = $8E75;
  3950. GL_TESS_GEN_MODE = $8E76;
  3951. GL_TESS_GEN_SPACING = $8E77;
  3952. GL_TESS_GEN_VERTEX_ORDER = $8E78;
  3953. GL_TESS_GEN_POINT_MODE = $8E79;
  3954. // reuse GL_TRIANGLES
  3955. // reuse GL_QUADS
  3956. const
  3957. GL_ISOLINES = $8E7A;
  3958. // reuse GL_EQUAL
  3959. const
  3960. GL_FRACTIONAL_ODD = $8E7B;
  3961. GL_FRACTIONAL_EVEN = $8E7C;
  3962. // reuse GL_CCW
  3963. // reuse GL_CW
  3964. const
  3965. GL_MAX_PATCH_VERTICES = $8E7D;
  3966. GL_MAX_TESS_GEN_LEVEL = $8E7E;
  3967. GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = $8E7F;
  3968. GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = $8E80;
  3969. GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = $8E81;
  3970. GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = $8E82;
  3971. GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = $8E83;
  3972. GL_MAX_TESS_PATCH_COMPONENTS = $8E84;
  3973. GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = $8E85;
  3974. GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = $8E86;
  3975. GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = $8E89;
  3976. GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = $8E8A;
  3977. GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = $886C;
  3978. GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = $886D;
  3979. GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = $8E1E;
  3980. GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = $8E1F;
  3981. GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = $84F0;
  3982. GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = $84F1;
  3983. GL_TESS_EVALUATION_SHADER = $8E87;
  3984. GL_TESS_CONTROL_SHADER = $8E88;
  3985. var
  3986. glPatchParameteri: procedure(pname: GLenum; value: GLint); extdecl;
  3987. glPatchParameterfv: procedure(pname: GLenum; const values: PGLfloat); extdecl;
  3988. function Load_GL_ARB_tessellation_shader(LoadAsCore: boolean = false): Boolean;
  3989. //**** GL_ARB_transform_feedback2 *****//
  3990. const
  3991. GL_TRANSFORM_FEEDBACK = $8E22;
  3992. GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = $8E23;
  3993. GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = $8E24;
  3994. GL_TRANSFORM_FEEDBACK_BINDING = $8E25;
  3995. var
  3996. glBindTransformFeedback: procedure(target: GLenum; id: GLuint); extdecl;
  3997. glDeleteTransformFeedbacks: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  3998. glGenTransformFeedbacks: procedure(n: GLsizei; ids: PGLuint); extdecl;
  3999. glIsTransformFeedback: function(id: GLuint): GLboolean; extdecl;
  4000. glPauseTransformFeedback: procedure(); extdecl;
  4001. glResumeTransformFeedback: procedure(); extdecl;
  4002. glDrawTransformFeedback: procedure(mode: GLenum; id: GLuint); extdecl;
  4003. function Load_GL_ARB_transform_feedback2(LoadAsCore: boolean = false): Boolean;
  4004. //**** GL_ARB_transform_feedback3 *****//
  4005. const
  4006. GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = $8E70;
  4007. var
  4008. glDrawTransformFeedbackStream: procedure(mode: GLenum; id: GLuint; stream: GLuint); extdecl;
  4009. glBeginQueryIndexed: procedure(target: GLenum; index: GLuint; id: GLuint); extdecl;
  4010. glEndQueryIndexed: procedure(target: GLenum; index: GLuint); extdecl;
  4011. glGetQueryIndexediv: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLint); extdecl;
  4012. function Load_GL_ARB_transform_feedback3(LoadAsCore: boolean = false): Boolean;
  4013. //***** GL_version_1_4 *****//
  4014. const
  4015. GL_BLEND_DST_RGB = $80C8;
  4016. GL_BLEND_SRC_RGB = $80C9;
  4017. GL_BLEND_DST_ALPHA = $80CA;
  4018. GL_BLEND_SRC_ALPHA = $80CB;
  4019. GL_POINT_SIZE_MIN = $8126;
  4020. GL_POINT_SIZE_MAX = $8127;
  4021. GL_POINT_FADE_THRESHOLD_SIZE = $8128;
  4022. GL_POINT_DISTANCE_ATTENUATION = $8129;
  4023. GL_GENERATE_MIPMAP = $8191;
  4024. GL_GENERATE_MIPMAP_HINT = $8192;
  4025. GL_DEPTH_COMPONENT16 = $81A5;
  4026. GL_DEPTH_COMPONENT24 = $81A6;
  4027. GL_DEPTH_COMPONENT32 = $81A7;
  4028. GL_MIRRORED_REPEAT = $8370;
  4029. GL_FOG_COORDINATE_SOURCE = $8450;
  4030. GL_FOG_COORDINATE = $8451;
  4031. GL_FRAGMENT_DEPTH = $8452;
  4032. GL_CURRENT_FOG_COORDINATE = $8453;
  4033. GL_FOG_COORDINATE_ARRAY_TYPE = $8454;
  4034. GL_FOG_COORDINATE_ARRAY_STRIDE = $8455;
  4035. GL_FOG_COORDINATE_ARRAY_POINTER = $8456;
  4036. GL_FOG_COORDINATE_ARRAY = $8457;
  4037. GL_COLOR_SUM = $8458;
  4038. GL_CURRENT_SECONDARY_COLOR = $8459;
  4039. GL_SECONDARY_COLOR_ARRAY_SIZE = $845A;
  4040. GL_SECONDARY_COLOR_ARRAY_TYPE = $845B;
  4041. GL_SECONDARY_COLOR_ARRAY_STRIDE = $845C;
  4042. GL_SECONDARY_COLOR_ARRAY_POINTER = $845D;
  4043. GL_SECONDARY_COLOR_ARRAY = $845E;
  4044. GL_MAX_TEXTURE_LOD_BIAS = $84FD;
  4045. GL_TEXTURE_FILTER_CONTROL = $8500;
  4046. GL_TEXTURE_LOD_BIAS = $8501;
  4047. GL_INCR_WRAP = $8507;
  4048. GL_DECR_WRAP = $8508;
  4049. GL_TEXTURE_DEPTH_SIZE = $884A;
  4050. GL_DEPTH_TEXTURE_MODE = $884B;
  4051. GL_TEXTURE_COMPARE_MODE = $884C;
  4052. GL_TEXTURE_COMPARE_FUNC = $884D;
  4053. GL_COMPARE_R_TO_TEXTURE = $884E;
  4054. var
  4055. glBlendFuncSeparate: procedure(sfactorRGB: GLenum; dfactorRGB: GLenum; sfactorAlpha: GLenum; dfactorAlpha: GLenum); extdecl;
  4056. glFogCoordf: procedure(coord: GLfloat); extdecl;
  4057. glFogCoordfv: procedure(const coord: PGLfloat); extdecl;
  4058. glFogCoordd: procedure(coord: GLdouble); extdecl;
  4059. glFogCoorddv: procedure(const coord: PGLdouble); extdecl;
  4060. glFogCoordPointer: procedure(_type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  4061. glMultiDrawArrays: procedure(mode: GLenum; first: PGLint; count: PGLsizei; primcount: GLsizei); extdecl;
  4062. glMultiDrawElements: procedure(mode: GLenum; const count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei); extdecl;
  4063. glPointParameterf: procedure(pname: GLenum; param: GLfloat); extdecl;
  4064. glPointParameterfv: procedure(pname: GLenum; const params: PGLfloat); extdecl;
  4065. glPointParameteri: procedure(pname: GLenum; param: GLint); extdecl;
  4066. glPointParameteriv: procedure(pname: GLenum; const params: PGLint); extdecl;
  4067. glSecondaryColor3b: procedure(red: GLbyte; green: GLbyte; blue: GLbyte); extdecl;
  4068. glSecondaryColor3bv: procedure(const v: PGLbyte); extdecl;
  4069. glSecondaryColor3d: procedure(red: GLdouble; green: GLdouble; blue: GLdouble); extdecl;
  4070. glSecondaryColor3dv: procedure(const v: PGLdouble); extdecl;
  4071. glSecondaryColor3f: procedure(red: GLfloat; green: GLfloat; blue: GLfloat); extdecl;
  4072. glSecondaryColor3fv: procedure(const v: PGLfloat); extdecl;
  4073. glSecondaryColor3i: procedure(red: GLint; green: GLint; blue: GLint); extdecl;
  4074. glSecondaryColor3iv: procedure(const v: PGLint); extdecl;
  4075. glSecondaryColor3s: procedure(red: GLshort; green: GLshort; blue: GLshort); extdecl;
  4076. glSecondaryColor3sv: procedure(const v: PGLshort); extdecl;
  4077. glSecondaryColor3ub: procedure(red: GLubyte; green: GLubyte; blue: GLubyte); extdecl;
  4078. glSecondaryColor3ubv: procedure(const v: PGLubyte); extdecl;
  4079. glSecondaryColor3ui: procedure(red: GLuint; green: GLuint; blue: GLuint); extdecl;
  4080. glSecondaryColor3uiv: procedure(const v: PGLuint); extdecl;
  4081. glSecondaryColor3us: procedure(red: GLushort; green: GLushort; blue: GLushort); extdecl;
  4082. glSecondaryColor3usv: procedure(const v: PGLushort); extdecl;
  4083. glSecondaryColorPointer: procedure(size: GLint; _type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  4084. glWindowPos2d: procedure(x: GLdouble; y: GLdouble); extdecl;
  4085. glWindowPos2dv: procedure(const v: PGLdouble); extdecl;
  4086. glWindowPos2f: procedure(x: GLfloat; y: GLfloat); extdecl;
  4087. glWindowPos2fv: procedure(const v: PGLfloat); extdecl;
  4088. glWindowPos2i: procedure(x: GLint; y: GLint); extdecl;
  4089. glWindowPos2iv: procedure(const v: PGLint); extdecl;
  4090. glWindowPos2s: procedure(x: GLshort; y: GLshort); extdecl;
  4091. glWindowPos2sv: procedure(const v: PGLshort); extdecl;
  4092. glWindowPos3d: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  4093. glWindowPos3dv: procedure(const v: PGLdouble); extdecl;
  4094. glWindowPos3f: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  4095. glWindowPos3fv: procedure(const v: PGLfloat); extdecl;
  4096. glWindowPos3i: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  4097. glWindowPos3iv: procedure(const v: PGLint); extdecl;
  4098. glWindowPos3s: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  4099. glWindowPos3sv: procedure(const v: PGLshort); extdecl;
  4100. function Load_GL_version_1_4: Boolean;
  4101. //***** GL_version_1_5 *****//
  4102. const
  4103. GL_BUFFER_SIZE = $8764;
  4104. GL_BUFFER_USAGE = $8765;
  4105. GL_QUERY_COUNTER_BITS = $8864;
  4106. GL_CURRENT_QUERY = $8865;
  4107. GL_QUERY_RESULT = $8866;
  4108. GL_QUERY_RESULT_AVAILABLE = $8867;
  4109. GL_ARRAY_BUFFER = $8892;
  4110. GL_ELEMENT_ARRAY_BUFFER = $8893;
  4111. GL_ARRAY_BUFFER_BINDING = $8894;
  4112. GL_ELEMENT_ARRAY_BUFFER_BINDING = $8895;
  4113. GL_VERTEX_ARRAY_BUFFER_BINDING = $8896;
  4114. GL_NORMAL_ARRAY_BUFFER_BINDING = $8897;
  4115. GL_COLOR_ARRAY_BUFFER_BINDING = $8898;
  4116. GL_INDEX_ARRAY_BUFFER_BINDING = $8899;
  4117. GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = $889A;
  4118. GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = $889B;
  4119. GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = $889C;
  4120. GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = $889D;
  4121. GL_WEIGHT_ARRAY_BUFFER_BINDING = $889E;
  4122. GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = $889F;
  4123. GL_READ_ONLY = $88B8;
  4124. GL_WRITE_ONLY = $88B9;
  4125. GL_READ_WRITE = $88BA;
  4126. GL_BUFFER_ACCESS = $88BB;
  4127. GL_BUFFER_MAPPED = $88BC;
  4128. GL_BUFFER_MAP_POINTER = $88BD;
  4129. GL_STREAM_DRAW = $88E0;
  4130. GL_STREAM_READ = $88E1;
  4131. GL_STREAM_COPY = $88E2;
  4132. GL_STATIC_DRAW = $88E4;
  4133. GL_STATIC_READ = $88E5;
  4134. GL_STATIC_COPY = $88E6;
  4135. GL_DYNAMIC_DRAW = $88E8;
  4136. GL_DYNAMIC_READ = $88E9;
  4137. GL_DYNAMIC_COPY = $88EA;
  4138. GL_SAMPLES_PASSED = $8914;
  4139. GL_FOG_COORD_SRC = $8450;
  4140. GL_FOG_COORD = $8451;
  4141. GL_CURRENT_FOG_COORD = $8453;
  4142. GL_FOG_COORD_ARRAY_TYPE = $8454;
  4143. GL_FOG_COORD_ARRAY_STRIDE = $8455;
  4144. GL_FOG_COORD_ARRAY_POINTER = $8456;
  4145. GL_FOG_COORD_ARRAY = $8457;
  4146. GL_FOG_COORD_ARRAY_BUFFER_BINDING = $889D;
  4147. GL_SRC0_RGB = $8580;
  4148. GL_SRC1_RGB = $8581;
  4149. GL_SRC2_RGB = $8582;
  4150. GL_SRC0_ALPHA = $8588;
  4151. GL_SRC1_ALPHA = $8589;
  4152. GL_SRC2_ALPHA = $858A;
  4153. var
  4154. glGenQueries: procedure(n: GLsizei; ids: PGLuint); extdecl;
  4155. glDeleteQueries: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  4156. glIsQuery: function(id: GLuint): GLboolean; extdecl;
  4157. glBeginQuery: procedure(target: GLenum; id: GLuint); extdecl;
  4158. glEndQuery: procedure(target: GLenum); extdecl;
  4159. glGetQueryiv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  4160. glGetQueryObjectiv: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  4161. glGetQueryObjectuiv: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  4162. glBindBuffer: procedure(target: GLenum; buffer: GLuint); extdecl;
  4163. glDeleteBuffers: procedure(n: GLsizei; const buffers: PGLuint); extdecl;
  4164. glGenBuffers: procedure(n: GLsizei; buffers: PGLuint); extdecl;
  4165. glIsBuffer: function(buffer: GLuint): GLboolean; extdecl;
  4166. glBufferData: procedure(target: GLenum; size: GLsizeiptr; const data: PGLvoid; usage: GLenum); extdecl;
  4167. glBufferSubData: procedure(target: GLenum; offset: GLintptr; size: GLsizeiptr; const data: PGLvoid); extdecl;
  4168. glGetBufferSubData: procedure(target: GLenum; offset: GLintptr; size: GLsizeiptr; data: PGLvoid); extdecl;
  4169. glMapBuffer: function(target: GLenum; access: GLenum): PGLvoid; extdecl;
  4170. glUnmapBuffer: function(target: GLenum): GLboolean; extdecl;
  4171. glGetBufferParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  4172. glGetBufferPointerv: procedure(target: GLenum; pname: GLenum; params: PGLvoid); extdecl;
  4173. function Load_GL_version_1_5: Boolean;
  4174. //***** GL_version_2_0 *****//
  4175. const
  4176. GL_BLEND_EQUATION_RGB = $8009;
  4177. GL_VERTEX_ATTRIB_ARRAY_ENABLED = $8622;
  4178. GL_VERTEX_ATTRIB_ARRAY_SIZE = $8623;
  4179. GL_VERTEX_ATTRIB_ARRAY_STRIDE = $8624;
  4180. GL_VERTEX_ATTRIB_ARRAY_TYPE = $8625;
  4181. GL_CURRENT_VERTEX_ATTRIB = $8626;
  4182. GL_VERTEX_PROGRAM_POINT_SIZE = $8642;
  4183. GL_VERTEX_PROGRAM_TWO_SIDE = $8643;
  4184. GL_VERTEX_ATTRIB_ARRAY_POINTER = $8645;
  4185. GL_STENCIL_BACK_FUNC = $8800;
  4186. GL_STENCIL_BACK_FAIL = $8801;
  4187. GL_STENCIL_BACK_PASS_DEPTH_FAIL = $8802;
  4188. GL_STENCIL_BACK_PASS_DEPTH_PASS = $8803;
  4189. GL_MAX_DRAW_BUFFERS = $8824;
  4190. GL_DRAW_BUFFER0 = $8825;
  4191. GL_DRAW_BUFFER1 = $8826;
  4192. GL_DRAW_BUFFER2 = $8827;
  4193. GL_DRAW_BUFFER3 = $8828;
  4194. GL_DRAW_BUFFER4 = $8829;
  4195. GL_DRAW_BUFFER5 = $882A;
  4196. GL_DRAW_BUFFER6 = $882B;
  4197. GL_DRAW_BUFFER7 = $882C;
  4198. GL_DRAW_BUFFER8 = $882D;
  4199. GL_DRAW_BUFFER9 = $882E;
  4200. GL_DRAW_BUFFER10 = $882F;
  4201. GL_DRAW_BUFFER11 = $8830;
  4202. GL_DRAW_BUFFER12 = $8831;
  4203. GL_DRAW_BUFFER13 = $8832;
  4204. GL_DRAW_BUFFER14 = $8833;
  4205. GL_DRAW_BUFFER15 = $8834;
  4206. GL_BLEND_EQUATION_ALPHA = $883D;
  4207. GL_POINT_SPRITE = $8861;
  4208. GL_COORD_REPLACE = $8862;
  4209. GL_MAX_VERTEX_ATTRIBS = $8869;
  4210. GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = $886A;
  4211. GL_MAX_TEXTURE_COORDS = $8871;
  4212. GL_MAX_TEXTURE_IMAGE_UNITS = $8872;
  4213. GL_FRAGMENT_SHADER = $8B30;
  4214. GL_VERTEX_SHADER = $8B31;
  4215. GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = $8B49;
  4216. GL_MAX_VERTEX_UNIFORM_COMPONENTS = $8B4A;
  4217. GL_MAX_VARYING_FLOATS = $8B4B;
  4218. GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = $8B4C;
  4219. GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = $8B4D;
  4220. GL_SHADER_TYPE = $8B4F;
  4221. GL_FLOAT_VEC2 = $8B50;
  4222. GL_FLOAT_VEC3 = $8B51;
  4223. GL_FLOAT_VEC4 = $8B52;
  4224. GL_INT_VEC2 = $8B53;
  4225. GL_INT_VEC3 = $8B54;
  4226. GL_INT_VEC4 = $8B55;
  4227. GL_BOOL = $8B56;
  4228. GL_BOOL_VEC2 = $8B57;
  4229. GL_BOOL_VEC3 = $8B58;
  4230. GL_BOOL_VEC4 = $8B59;
  4231. GL_FLOAT_MAT2 = $8B5A;
  4232. GL_FLOAT_MAT3 = $8B5B;
  4233. GL_FLOAT_MAT4 = $8B5C;
  4234. GL_SAMPLER_1D = $8B5D;
  4235. GL_SAMPLER_2D = $8B5E;
  4236. GL_SAMPLER_3D = $8B5F;
  4237. GL_SAMPLER_CUBE = $8B60;
  4238. GL_SAMPLER_1D_SHADOW = $8B61;
  4239. GL_SAMPLER_2D_SHADOW = $8B62;
  4240. GL_DELETE_STATUS = $8B80;
  4241. GL_COMPILE_STATUS = $8B81;
  4242. GL_LINK_STATUS = $8B82;
  4243. GL_VALIDATE_STATUS = $8B83;
  4244. GL_INFO_LOG_LENGTH = $8B84;
  4245. GL_ATTACHED_SHADERS = $8B85;
  4246. GL_ACTIVE_UNIFORMS = $8B86;
  4247. GL_ACTIVE_UNIFORM_MAX_LENGTH = $8B87;
  4248. GL_SHADER_SOURCE_LENGTH = $8B88;
  4249. GL_ACTIVE_ATTRIBUTES = $8B89;
  4250. GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = $8B8A;
  4251. GL_FRAGMENT_SHADER_DERIVATIVE_HINT = $8B8B;
  4252. GL_SHADING_LANGUAGE_VERSION = $8B8C;
  4253. GL_CURRENT_PROGRAM = $8B8D;
  4254. GL_POINT_SPRITE_COORD_ORIGIN = $8CA0;
  4255. GL_LOWER_LEFT = $8CA1;
  4256. GL_UPPER_LEFT = $8CA2;
  4257. GL_STENCIL_BACK_REF = $8CA3;
  4258. GL_STENCIL_BACK_VALUE_MASK = $8CA4;
  4259. GL_STENCIL_BACK_WRITEMASK = $8CA5;
  4260. var
  4261. glBlendEquationSeparate: procedure(modeRGB: GLenum; modeAlpha: GLenum); extdecl;
  4262. glDrawBuffers: procedure(n: GLsizei; const bufs: PGLenum); extdecl;
  4263. glStencilOpSeparate: procedure(face: GLenum; sfail: GLenum; dpfail: GLenum; dppass: GLenum); extdecl;
  4264. glStencilFuncSeparate: procedure(frontfunc: GLenum; backfunc: GLenum; ref: GLint; mask: GLuint); extdecl;
  4265. glStencilMaskSeparate: procedure(face: GLenum; mask: GLuint); extdecl;
  4266. glAttachShader: procedure(_program: GLuint; shader: GLuint); extdecl;
  4267. glBindAttribLocation: procedure(_program: GLuint; index: GLuint; const name: PGLchar); extdecl;
  4268. glCompileShader: procedure(shader: GLuint); extdecl;
  4269. glCreateProgram: function(): GLuint; extdecl;
  4270. glCreateShader: function(_type: GLenum): GLuint; extdecl;
  4271. glDeleteProgram: procedure(_program: GLuint); extdecl;
  4272. glDeleteShader: procedure(shader: GLuint); extdecl;
  4273. glDetachShader: procedure(_program: GLuint; shader: GLuint); extdecl;
  4274. glDisableVertexAttribArray: procedure(index: GLuint); extdecl;
  4275. glEnableVertexAttribArray: procedure(index: GLuint); extdecl;
  4276. glGetActiveAttrib: procedure(_program: GLuint; index: GLuint; bufSize: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLchar); extdecl;
  4277. glGetActiveUniform: procedure(_program: GLuint; index: GLuint; bufSize: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLchar); extdecl;
  4278. glGetAttachedShaders: procedure(_program: GLuint; maxCount: GLsizei; count: PGLsizei; obj: PGLuint); extdecl;
  4279. glGetAttribLocation: function(_program: GLuint; const name: PGLchar): GLint; extdecl;
  4280. glGetProgramiv: procedure(_program: GLuint; pname: GLenum; params: PGLint); extdecl;
  4281. glGetProgramInfoLog: procedure(_program: GLuint; bufSize: GLsizei; length: PGLsizei; infoLog: PGLchar); extdecl;
  4282. glGetShaderiv: procedure(shader: GLuint; pname: GLenum; params: PGLint); extdecl;
  4283. glGetShaderInfoLog: procedure(shader: GLuint; bufSize: GLsizei; length: PGLsizei; infoLog: PGLchar); extdecl;
  4284. glGetShaderSource: procedure(shader: GLuint; bufSize: GLsizei; length: PGLsizei; source: PGLchar); extdecl;
  4285. glGetUniformLocation: function(_program: GLuint; const name: PGLchar): GLint; extdecl;
  4286. glGetUniformfv: procedure(_program: GLuint; location: GLint; params: PGLfloat); extdecl;
  4287. glGetUniformiv: procedure(_program: GLuint; location: GLint; params: PGLint); extdecl;
  4288. glGetVertexAttribdv: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  4289. glGetVertexAttribfv: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  4290. glGetVertexAttribiv: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  4291. glGetVertexAttribPointerv: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  4292. glIsProgram: function(_program: GLuint): GLboolean; extdecl;
  4293. glIsShader: function(shader: GLuint): GLboolean; extdecl;
  4294. glLinkProgram: procedure(_program: GLuint); extdecl;
  4295. glShaderSource: procedure(shader: GLuint; count: GLsizei; const _string: PGLchar; const length: PGLint); extdecl;
  4296. glUseProgram: procedure(_program: GLuint); extdecl;
  4297. glUniform1f: procedure(location: GLint; v0: GLfloat); extdecl;
  4298. glUniform2f: procedure(location: GLint; v0: GLfloat; v1: GLfloat); extdecl;
  4299. glUniform3f: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); extdecl;
  4300. glUniform4f: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); extdecl;
  4301. glUniform1i: procedure(location: GLint; v0: GLint); extdecl;
  4302. glUniform2i: procedure(location: GLint; v0: GLint; v1: GLint); extdecl;
  4303. glUniform3i: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint); extdecl;
  4304. glUniform4i: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); extdecl;
  4305. glUniform1fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  4306. glUniform2fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  4307. glUniform3fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  4308. glUniform4fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  4309. glUniform1iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  4310. glUniform2iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  4311. glUniform3iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  4312. glUniform4iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  4313. glUniformMatrix2fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4314. glUniformMatrix3fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4315. glUniformMatrix4fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4316. glValidateProgram: procedure(_program: GLuint); extdecl;
  4317. glVertexAttrib1d: procedure(index: GLuint; x: GLdouble); extdecl;
  4318. glVertexAttrib1dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  4319. glVertexAttrib1f: procedure(index: GLuint; x: GLfloat); extdecl;
  4320. glVertexAttrib1fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  4321. glVertexAttrib1s: procedure(index: GLuint; x: GLshort); extdecl;
  4322. glVertexAttrib1sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  4323. glVertexAttrib2d: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  4324. glVertexAttrib2dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  4325. glVertexAttrib2f: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  4326. glVertexAttrib2fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  4327. glVertexAttrib2s: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  4328. glVertexAttrib2sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  4329. glVertexAttrib3d: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  4330. glVertexAttrib3dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  4331. glVertexAttrib3f: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  4332. glVertexAttrib3fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  4333. glVertexAttrib3s: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  4334. glVertexAttrib3sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  4335. glVertexAttrib4Nbv: procedure(index: GLuint; const v: PGLbyte); extdecl;
  4336. glVertexAttrib4Niv: procedure(index: GLuint; const v: PGLint); extdecl;
  4337. glVertexAttrib4Nsv: procedure(index: GLuint; const v: PGLshort); extdecl;
  4338. glVertexAttrib4Nub: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  4339. glVertexAttrib4Nubv: procedure(index: GLuint; const v: PGLubyte); extdecl;
  4340. glVertexAttrib4Nuiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  4341. glVertexAttrib4Nusv: procedure(index: GLuint; const v: PGLushort); extdecl;
  4342. glVertexAttrib4bv: procedure(index: GLuint; const v: PGLbyte); extdecl;
  4343. glVertexAttrib4d: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  4344. glVertexAttrib4dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  4345. glVertexAttrib4f: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  4346. glVertexAttrib4fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  4347. glVertexAttrib4iv: procedure(index: GLuint; const v: PGLint); extdecl;
  4348. glVertexAttrib4s: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  4349. glVertexAttrib4sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  4350. glVertexAttrib4ubv: procedure(index: GLuint; const v: PGLubyte); extdecl;
  4351. glVertexAttrib4uiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  4352. glVertexAttrib4usv: procedure(index: GLuint; const v: PGLushort); extdecl;
  4353. glVertexAttribPointer: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; const pointer: PGLvoid); extdecl;
  4354. function Load_GL_version_2_0: Boolean;
  4355. //**** GL_VERSION_2_1 *****//
  4356. const
  4357. GL_PIXEL_PACK_BUFFER = $88EB;
  4358. GL_PIXEL_UNPACK_BUFFER = $88EC;
  4359. GL_PIXEL_PACK_BUFFER_BINDING = $88ED;
  4360. GL_PIXEL_UNPACK_BUFFER_BINDING = $88EF;
  4361. GL_FLOAT_MAT2x3 = $8B65;
  4362. GL_FLOAT_MAT2x4 = $8B66;
  4363. GL_FLOAT_MAT3x2 = $8B67;
  4364. GL_FLOAT_MAT3x4 = $8B68;
  4365. GL_FLOAT_MAT4x2 = $8B69;
  4366. GL_FLOAT_MAT4x3 = $8B6A;
  4367. GL_SRGB = $8C40;
  4368. GL_SRGB8 = $8C41;
  4369. GL_SRGB_ALPHA = $8C42;
  4370. GL_SRGB8_ALPHA8 = $8C43;
  4371. GL_COMPRESSED_SRGB = $8C48;
  4372. GL_COMPRESSED_SRGB_ALPHA = $8C49;
  4373. var
  4374. glUniformMatrix2x3fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4375. glUniformMatrix3x2fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4376. glUniformMatrix2x4fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4377. glUniformMatrix4x2fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4378. glUniformMatrix3x4fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4379. glUniformMatrix4x3fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  4380. function Load_GL_VERSION_2_1(): Boolean;
  4381. //**** GL_VERSION_2_1 DEPRECATED *****//
  4382. const
  4383. GL_CURRENT_RASTER_SECONDARY_COLOR = $845F;
  4384. GL_SLUMINANCE_ALPHA = $8C44;
  4385. GL_SLUMINANCE8_ALPHA8 = $8C45;
  4386. GL_SLUMINANCE = $8C46;
  4387. GL_SLUMINANCE8 = $8C47;
  4388. GL_COMPRESSED_SLUMINANCE = $8C4A;
  4389. GL_COMPRESSED_SLUMINANCE_ALPHA = $8C4B;
  4390. //**** GL_VERSION_3_0 *****//
  4391. const
  4392. GL_COMPARE_REF_TO_TEXTURE = $884E;
  4393. GL_CLIP_DISTANCE0 = $3000;
  4394. GL_CLIP_DISTANCE1 = $3001;
  4395. GL_CLIP_DISTANCE2 = $3002;
  4396. GL_CLIP_DISTANCE3 = $3003;
  4397. GL_CLIP_DISTANCE4 = $3004;
  4398. GL_CLIP_DISTANCE5 = $3005;
  4399. GL_CLIP_DISTANCE6 = $3006;
  4400. GL_CLIP_DISTANCE7 = $3007;
  4401. GL_MAX_CLIP_DISTANCES = $0D32;
  4402. GL_MAJOR_VERSION = $821B;
  4403. GL_MINOR_VERSION = $821C;
  4404. GL_NUM_EXTENSIONS = $821D;
  4405. GL_CONTEXT_FLAGS = $821E;
  4406. GL_DEPTH_BUFFER = $8223;
  4407. GL_STENCIL_BUFFER = $8224;
  4408. GL_COMPRESSED_RED = $8225;
  4409. GL_COMPRESSED_RG = $8226;
  4410. GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = $0001;
  4411. GL_RGBA32F = $8814;
  4412. GL_RGB32F = $8815;
  4413. GL_RGBA16F = $881A;
  4414. GL_RGB16F = $881B;
  4415. GL_VERTEX_ATTRIB_ARRAY_INTEGER = $88FD;
  4416. GL_MAX_ARRAY_TEXTURE_LAYERS = $88FF;
  4417. GL_MIN_PROGRAM_TEXEL_OFFSET = $8904;
  4418. GL_MAX_PROGRAM_TEXEL_OFFSET = $8905;
  4419. GL_CLAMP_READ_COLOR = $891C;
  4420. GL_FIXED_ONLY = $891D;
  4421. GL_MAX_VARYING_COMPONENTS = $8B4B;
  4422. GL_TEXTURE_1D_ARRAY = $8C18;
  4423. GL_PROXY_TEXTURE_1D_ARRAY = $8C19;
  4424. GL_TEXTURE_2D_ARRAY = $8C1A;
  4425. GL_PROXY_TEXTURE_2D_ARRAY = $8C1B;
  4426. GL_TEXTURE_BINDING_1D_ARRAY = $8C1C;
  4427. GL_TEXTURE_BINDING_2D_ARRAY = $8C1D;
  4428. GL_R11F_G11F_B10F = $8C3A;
  4429. GL_UNSIGNED_INT_10F_11F_11F_REV = $8C3B;
  4430. GL_RGB9_E5 = $8C3D;
  4431. GL_UNSIGNED_INT_5_9_9_9_REV = $8C3E;
  4432. GL_TEXTURE_SHARED_SIZE = $8C3F;
  4433. GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = $8C76;
  4434. GL_TRANSFORM_FEEDBACK_BUFFER_MODE = $8C7F;
  4435. GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = $8C80;
  4436. GL_TRANSFORM_FEEDBACK_VARYINGS = $8C83;
  4437. GL_TRANSFORM_FEEDBACK_BUFFER_START = $8C84;
  4438. GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = $8C85;
  4439. GL_PRIMITIVES_GENERATED = $8C87;
  4440. GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = $8C88;
  4441. GL_RASTERIZER_DISCARD = $8C89;
  4442. GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = $8C8A;
  4443. GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = $8C8B;
  4444. GL_INTERLEAVED_ATTRIBS = $8C8C;
  4445. GL_SEPARATE_ATTRIBS = $8C8D;
  4446. GL_TRANSFORM_FEEDBACK_BUFFER = $8C8E;
  4447. GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = $8C8F;
  4448. GL_RGBA32UI = $8D70;
  4449. GL_RGB32UI = $8D71;
  4450. GL_RGBA16UI = $8D76;
  4451. GL_RGB16UI = $8D77;
  4452. GL_RGBA8UI = $8D7C;
  4453. GL_RGB8UI = $8D7D;
  4454. GL_RGBA32I = $8D82;
  4455. GL_RGB32I = $8D83;
  4456. GL_RGBA16I = $8D88;
  4457. GL_RGB16I = $8D89;
  4458. GL_RGBA8I = $8D8E;
  4459. GL_RGB8I = $8D8F;
  4460. GL_RED_INTEGER = $8D94;
  4461. GL_GREEN_INTEGER = $8D95;
  4462. GL_BLUE_INTEGER = $8D96;
  4463. GL_RGB_INTEGER = $8D98;
  4464. GL_RGBA_INTEGER = $8D99;
  4465. GL_BGR_INTEGER = $8D9A;
  4466. GL_BGRA_INTEGER = $8D9B;
  4467. GL_SAMPLER_1D_ARRAY = $8DC0;
  4468. GL_SAMPLER_2D_ARRAY = $8DC1;
  4469. GL_SAMPLER_1D_ARRAY_SHADOW = $8DC3;
  4470. GL_SAMPLER_2D_ARRAY_SHADOW = $8DC4;
  4471. GL_SAMPLER_CUBE_SHADOW = $8DC5;
  4472. GL_UNSIGNED_INT_VEC2 = $8DC6;
  4473. GL_UNSIGNED_INT_VEC3 = $8DC7;
  4474. GL_UNSIGNED_INT_VEC4 = $8DC8;
  4475. GL_INT_SAMPLER_1D = $8DC9;
  4476. GL_INT_SAMPLER_2D = $8DCA;
  4477. GL_INT_SAMPLER_3D = $8DCB;
  4478. GL_INT_SAMPLER_CUBE = $8DCC;
  4479. GL_INT_SAMPLER_1D_ARRAY = $8DCE;
  4480. GL_INT_SAMPLER_2D_ARRAY = $8DCF;
  4481. GL_UNSIGNED_INT_SAMPLER_1D = $8DD1;
  4482. GL_UNSIGNED_INT_SAMPLER_2D = $8DD2;
  4483. GL_UNSIGNED_INT_SAMPLER_3D = $8DD3;
  4484. GL_UNSIGNED_INT_SAMPLER_CUBE = $8DD4;
  4485. GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = $8DD6;
  4486. GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = $8DD7;
  4487. GL_QUERY_WAIT = $8E13;
  4488. GL_QUERY_NO_WAIT = $8E14;
  4489. GL_QUERY_BY_REGION_WAIT = $8E15;
  4490. GL_QUERY_BY_REGION_NO_WAIT = $8E16;
  4491. GL_BUFFER_ACCESS_FLAGS = $911F;
  4492. GL_BUFFER_MAP_LENGTH = $9120;
  4493. GL_BUFFER_MAP_OFFSET = $9121;
  4494. var
  4495. glColorMaski: procedure(index: GLuint; r: GLboolean; g: GLboolean; b: GLboolean; a: GLboolean); extdecl;
  4496. glGetBooleani_v: procedure(target: GLenum; index: GLuint; data: PGLboolean); extdecl;
  4497. glGetIntegeri_v: procedure(target: GLenum; index: GLuint; data: PGLint); extdecl; (* Also used in GL_ARB_uniform_buffer_object *)
  4498. glEnablei: procedure(target: GLenum; index: GLuint); extdecl;
  4499. glDisablei: procedure(target: GLenum; index: GLuint); extdecl;
  4500. glIsEnabledi: function(target: GLenum; index: GLuint): GLboolean; extdecl;
  4501. glBeginTransformFeedback: procedure(primitiveMode: GLenum); extdecl;
  4502. glEndTransformFeedback: procedure(); extdecl;
  4503. glBindBufferRange: procedure(target: GLenum; index: GLuint; buffer: GLuint; offset: GLintptr; size: GLsizeiptr); extdecl; (* Also used in GL_ARB_uniform_buffer_object *)
  4504. glBindBufferBase: procedure(target: GLenum; index: GLuint; buffer: GLuint); extdecl; (* Also used in GL_ARB_uniform_buffer_object *)
  4505. glTransformFeedbackVaryings: procedure(_program: GLuint; count: GLsizei; const varyings: PPGLchar; bufferMode: GLenum); extdecl;
  4506. glGetTransformFeedbackVarying: procedure(_program: GLuint; index: GLuint; bufSize: GLsizei; length: PGLsizei; size: PGLsizei; _type: PGLenum; name: PGLchar); extdecl;
  4507. glClampColor: procedure(target: GLenum; clamp: GLenum); extdecl;
  4508. glBeginConditionalRender: procedure(id: GLuint; mode: GLenum); extdecl;
  4509. glEndConditionalRender: procedure(); extdecl;
  4510. glVertexAttribIPointer: procedure(index: GLuint; size: GLint; _type: GLenum; stride: GLsizei; const _pointer: PGLvoid); extdecl;
  4511. glGetVertexAttribIiv: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  4512. glGetVertexAttribIuiv: procedure(index: GLuint; pname: GLenum; params: PGLuint); extdecl;
  4513. glVertexAttribI1i: procedure(index: GLuint; x: GLint); extdecl;
  4514. glVertexAttribI2i: procedure(index: GLuint; x: GLint; y: GLint); extdecl;
  4515. glVertexAttribI3i: procedure(index: GLuint; x: GLint; y: GLint; z: GLint); extdecl;
  4516. glVertexAttribI4i: procedure(index: GLuint; x: GLint; y: GLint; z: GLint; w: GLint); extdecl;
  4517. glVertexAttribI1ui: procedure(index: GLuint; x: GLuint); extdecl;
  4518. glVertexAttribI2ui: procedure(index: GLuint; x: GLuint; y: GLuint); extdecl;
  4519. glVertexAttribI3ui: procedure(index: GLuint; x: GLuint; y: GLuint; z: GLuint); extdecl;
  4520. glVertexAttribI4ui: procedure(index: GLuint; x: GLuint; y: GLuint; z: GLuint; w: GLuint); extdecl;
  4521. glVertexAttribI1iv: procedure(index: GLuint; const v: PGLint); extdecl;
  4522. glVertexAttribI2iv: procedure(index: GLuint; const v: PGLint); extdecl;
  4523. glVertexAttribI3iv: procedure(index: GLuint; const v: PGLint); extdecl;
  4524. glVertexAttribI4iv: procedure(index: GLuint; const v: PGLint); extdecl;
  4525. glVertexAttribI1uiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  4526. glVertexAttribI2uiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  4527. glVertexAttribI3uiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  4528. glVertexAttribI4uiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  4529. glVertexAttribI4bv: procedure(index: GLuint; const v: PGLbyte); extdecl;
  4530. glVertexAttribI4sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  4531. glVertexAttribI4ubv: procedure(index: GLuint; const v: PGLubyte); extdecl;
  4532. glVertexAttribI4usv: procedure(index: GLuint; const v: PGLushort); extdecl;
  4533. glGetUniformuiv: procedure(_program: GLuint; location: GLint; params: PGLuint); extdecl;
  4534. glBindFragDataLocation: procedure(_program: GLuint; color: GLuint; const name: PGLchar); extdecl;
  4535. glGetFragDataLocation: function(_program: GLuint; const name: PGLchar): GLint; extdecl;
  4536. glUniform1ui: procedure(location: GLint; v0: GLuint); extdecl;
  4537. glUniform2ui: procedure(location: GLint; v0: GLuint; v1: GLuint); extdecl;
  4538. glUniform3ui: procedure(location: GLint; v0: GLuint; v1: GLuint; v2: GLuint); extdecl;
  4539. glUniform4ui: procedure(location: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); extdecl;
  4540. glUniform1uiv: procedure(location: GLint; count: GLsizei; const value: PGLuint); extdecl;
  4541. glUniform2uiv: procedure(location: GLint; count: GLsizei; const value: PGLuint); extdecl;
  4542. glUniform3uiv: procedure(location: GLint; count: GLsizei; const value: PGLuint); extdecl;
  4543. glUniform4uiv: procedure(location: GLint; count: GLsizei; const value: PGLuint); extdecl;
  4544. glTexParameterIiv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  4545. glTexParameterIuiv: procedure(target: GLenum; pname: GLenum; const params: PGLuint); extdecl;
  4546. glGetTexParameterIiv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  4547. glGetTexParameterIuiv: procedure(target: GLenum; pname: GLenum; params: PGLuint); extdecl;
  4548. glClearBufferiv: procedure(buffer: GLenum; drawbuffer: GLint; const value: PGLint); extdecl;
  4549. glClearBufferuiv: procedure(buffer: GLenum; drawbuffer: GLint; const value: PGLuint); extdecl;
  4550. glClearBufferfv: procedure(buffer: GLenum; drawbuffer: GLint; const value: PGLfloat); extdecl;
  4551. glClearBufferfi: procedure(buffer: GLenum; drawbuffer: GLint; depth: GLfloat; stencil: GLint); extdecl;
  4552. glGetStringi: function(name: GLenum; index: GLuint): PGLubyte; extdecl;
  4553. function Load_GL_VERSION_3_0(): Boolean; //returns false if any legacy components missing
  4554. function Load_GL_VERSION_3_0_CORE(): Boolean; //returns false only if core 3.0 functions are missing
  4555. function Load_GL_version_3_1_CORE(): boolean;
  4556. function Load_GL_version_3_2_CORE(): boolean;
  4557. function Load_GL_version_3_3_CORE(): boolean;
  4558. function Load_GL_version_4_0_CORE(): boolean;
  4559. function Load_GL_version_4_3_CORE(): boolean;
  4560. //**** GL_VERSION_3_0 DEPRECATED *****//
  4561. const
  4562. GL_CLAMP_VERTEX_COLOR = $891A;
  4563. GL_CLAMP_FRAGMENT_COLOR = $891B;
  4564. GL_ALPHA_INTEGER = $8D97;
  4565. //**** GL_VERSION_3_1 *****//
  4566. const
  4567. GL_SAMPLER_2D_RECT = $8B63;
  4568. GL_SAMPLER_2D_RECT_SHADOW = $8B64;
  4569. GL_SAMPLER_BUFFER = $8DC2;
  4570. GL_INT_SAMPLER_2D_RECT = $8DCD;
  4571. GL_INT_SAMPLER_BUFFER = $8DD0;
  4572. GL_UNSIGNED_INT_SAMPLER_2D_RECT = $8DD5;
  4573. GL_UNSIGNED_INT_SAMPLER_BUFFER = $8DD8;
  4574. GL_TEXTURE_BUFFER = $8C2A;
  4575. GL_MAX_TEXTURE_BUFFER_SIZE = $8C2B;
  4576. GL_TEXTURE_BINDING_BUFFER = $8C2C;
  4577. GL_TEXTURE_BUFFER_DATA_STORE_BINDING = $8C2D;
  4578. GL_TEXTURE_BUFFER_FORMAT = $8C2E;
  4579. GL_TEXTURE_RECTANGLE = $84F5;
  4580. GL_TEXTURE_BINDING_RECTANGLE = $84F6;
  4581. GL_PROXY_TEXTURE_RECTANGLE = $84F7;
  4582. GL_MAX_RECTANGLE_TEXTURE_SIZE = $84F8;
  4583. GL_RED_SNORM = $8F90;
  4584. GL_RG_SNORM = $8F91;
  4585. GL_RGB_SNORM = $8F92;
  4586. GL_RGBA_SNORM = $8F93;
  4587. GL_R8_SNORM = $8F94;
  4588. GL_RG8_SNORM = $8F95;
  4589. GL_RGB8_SNORM = $8F96;
  4590. GL_RGBA8_SNORM = $8F97;
  4591. GL_R16_SNORM = $8F98;
  4592. GL_RG16_SNORM = $8F99;
  4593. GL_RGB16_SNORM = $8F9A;
  4594. GL_RGBA16_SNORM = $8F9B;
  4595. GL_SIGNED_NORMALIZED = $8F9C;
  4596. GL_PRIMITIVE_RESTART = $8F9D;
  4597. GL_PRIMITIVE_RESTART_INDEX = $8F9E;
  4598. var
  4599. glDrawArraysInstanced: procedure(mode: GLenum; first: GLint; count: GLsizei; primcount: GLsizei); extdecl;
  4600. glDrawElementsInstanced: procedure(mode: GLenum; count: GLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei); extdecl;
  4601. glTexBuffer: procedure(target: GLenum; internalformat: GLenum; buffer: GLuint); extdecl;
  4602. glPrimitiveRestartIndex: procedure(index: GLuint); extdecl;
  4603. function Load_GL_VERSION_3_1(): Boolean;
  4604. //**** GL_VERSION_3_2 *****//
  4605. const
  4606. GL_CONTEXT_CORE_PROFILE_BIT = $00000001;
  4607. GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = $00000002;
  4608. GL_LINES_ADJACENCY = $000A;
  4609. GL_LINE_STRIP_ADJACENCY = $000B;
  4610. GL_TRIANGLES_ADJACENCY = $000C;
  4611. GL_TRIANGLE_STRIP_ADJACENCY = $000D;
  4612. GL_PROGRAM_POINT_SIZE = $8642;
  4613. GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = $8C29;
  4614. GL_FRAMEBUFFER_ATTACHMENT_LAYERED = $8DA7;
  4615. GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = $8DA8;
  4616. GL_GEOMETRY_SHADER = $8DD9;
  4617. GL_GEOMETRY_VERTICES_OUT = $8916;
  4618. GL_GEOMETRY_INPUT_TYPE = $8917;
  4619. GL_GEOMETRY_OUTPUT_TYPE = $8918;
  4620. GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = $8DDF;
  4621. GL_MAX_GEOMETRY_OUTPUT_VERTICES = $8DE0;
  4622. GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = $8DE1;
  4623. GL_MAX_VERTEX_OUTPUT_COMPONENTS = $9122;
  4624. GL_MAX_GEOMETRY_INPUT_COMPONENTS = $9123;
  4625. GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = $9124;
  4626. GL_MAX_FRAGMENT_INPUT_COMPONENTS = $9125;
  4627. GL_CONTEXT_PROFILE_MASK = $9126;
  4628. var
  4629. glGetInteger64i_v: procedure(target: GLenum; index: GLuint; data: PGLint64); extdecl;
  4630. glGetBufferParameteri64v: procedure(target: GLenum; pname: GLenum; params: PGLint64); extdecl;
  4631. glProgramParameteri: procedure(_program: GLuint; pname: GLenum; value: GLint); extdecl;
  4632. glFramebufferTexture: procedure(target: GLenum; attachment: GLenum; texture: GLuint; level: GLint); extdecl;
  4633. glVertexAttribDivisor: procedure(index: GLuint; divisor: GLuint); extdecl;
  4634. function Load_GL_VERSION_3_2(): Boolean;
  4635. //**** GL_VERSION_3_3 *****//
  4636. function Load_GL_VERSION_3_3(): Boolean;
  4637. //**** GL_VERSION_4_0 *****//
  4638. function Load_GL_VERSION_4_0(): Boolean;
  4639. //**** GL_VERSION_4_3 *****//
  4640. const
  4641. GL_DEBUG_OUTPUT = $92E0;
  4642. GL_DONT_CARE = $1100;
  4643. GL_CONTEXT_FLAG_DEBUG_BIT = $00000002;
  4644. GL_STACK_OVERFLOW = $0503;
  4645. GL_STACK_UNDERFLOW = $0504;
  4646. GL_DEBUG_OUTPUT_SYNCHRONOUS = $8242;
  4647. GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = $8243;
  4648. GL_DEBUG_CALLBACK_FUNCTION = $8244;
  4649. GL_DEBUG_CALLBACK_USER_PARAM = $8245;
  4650. GL_DEBUG_SOURCE_API = $8246;
  4651. GL_DEBUG_SOURCE_WINDOW_SYSTEM = $8247;
  4652. GL_DEBUG_SOURCE_SHADER_COMPILER = $8248;
  4653. GL_DEBUG_SOURCE_THIRD_PARTY = $8249;
  4654. GL_DEBUG_SOURCE_APPLICATION = $824A;
  4655. GL_DEBUG_SOURCE_OTHER = $824B;
  4656. GL_DEBUG_TYPE_ERROR = $824C;
  4657. GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = $824D;
  4658. GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = $824E;
  4659. GL_DEBUG_TYPE_PORTABILITY = $824F;
  4660. GL_DEBUG_TYPE_PERFORMANCE = $8250;
  4661. GL_DEBUG_TYPE_OTHER = $8251;
  4662. GL_DEBUG_TYPE_MARKER = $8268;
  4663. GL_DEBUG_TYPE_PUSH_GROUP = $8269;
  4664. GL_DEBUG_TYPE_POP_GROUP = $826A;
  4665. GL_DEBUG_SEVERITY_NOTIFICATION = $826B;
  4666. GL_MAX_DEBUG_GROUP_STACK_DEPTH = $826C;
  4667. GL_DEBUG_GROUP_STACK_DEPTH = $826D;
  4668. GL_BUFFER = $82E0;
  4669. GL_SHADER = $82E1;
  4670. GL_PROGRAM = $82E2;
  4671. GL_QUERY = $82E3;
  4672. GL_PROGRAM_PIPELINE = $82E4;
  4673. GL_SAMPLER = $82E6;
  4674. GL_DISPLAY_LIST = $82E7;
  4675. GL_MAX_LABEL_LENGTH = $82E8;
  4676. GL_MAX_DEBUG_MESSAGE_LENGTH = $9143;
  4677. GL_MAX_DEBUG_LOGGED_MESSAGES = $9144;
  4678. GL_DEBUG_LOGGED_MESSAGES = $9145;
  4679. GL_DEBUG_SEVERITY_HIGH = $9146;
  4680. GL_DEBUG_SEVERITY_MEDIUM = $9147;
  4681. GL_DEBUG_SEVERITY_LOW = $9148;
  4682. type
  4683. GLDEBUGPROC = procedure (source:GLenum; _type:GLenum; id:GLuint; severity:GLenum; length:GLsizei; message:PGLchar; userParam:PGLvoid );extdecl;
  4684. var
  4685. glDebugMessageCallback:procedure (callback:GLDEBUGPROC; userParam:PGLvoid);
  4686. glDebugMessageControl :procedure (source:GLenum; _type:GLenum; severity:GLenum; count:GLsizei; ids:PGLuint; enabled:GLboolean);
  4687. function Load_GL_Debug_output(): Boolean;
  4688. function Load_GL_VERSION_4_3(): Boolean;
  4689. implementation
  4690. {$IFNDEF Windows}
  4691. function wglGetProcAddress(proc: PChar): Pointer;
  4692. begin
  4693. Result := GetProcAddress(LibGL, proc);
  4694. end;
  4695. {$ENDIF}
  4696. function glext_ExtensionSupported(const extension: String; const searchIn: String): Boolean;
  4697. var
  4698. extensions: PChar;
  4699. start: PChar;
  4700. where, terminator: PChar;
  4701. begin
  4702. if (Pos(' ', extension) <> 0) or (extension = '') then
  4703. begin
  4704. Result := FALSE;
  4705. Exit;
  4706. end;
  4707. if searchIn = '' then extensions := PChar(glGetString(GL_EXTENSIONS))
  4708. else extensions := PChar(searchIn);
  4709. start := extensions;
  4710. while TRUE do
  4711. begin
  4712. where := StrPos(start, PChar(extension));
  4713. if where = nil then Break;
  4714. terminator := Pointer(PtrUInt(where) + Length(extension));
  4715. if (where = start) or (PChar(PtrUInt(where) - 1)^ = ' ') then
  4716. begin
  4717. if (terminator^ = ' ') or (terminator^ = #0) then
  4718. begin
  4719. Result := TRUE;
  4720. Exit;
  4721. end;
  4722. end;
  4723. start := terminator;
  4724. end;
  4725. Result := FALSE;
  4726. end;
  4727. procedure Load_GL_version_1_2x(var allOK: Boolean);
  4728. begin
  4729. glBlendColor := wglGetProcAddress('glBlendColor');
  4730. if not Assigned(glBlendColor) then allOK := False;
  4731. glBlendEquation := wglGetProcAddress('glBlendEquation');
  4732. if not Assigned(glBlendEquation) then allOK := False;
  4733. glDrawRangeElements := wglGetProcAddress('glDrawRangeElements');
  4734. if not Assigned(glDrawRangeElements) then allOK := False;
  4735. glTexImage3D := wglGetProcAddress('glTexImage3D');
  4736. if not Assigned(glTexImage3D) then allOK := False;
  4737. glTexSubImage3D := wglGetProcAddress('glTexSubImage3D');
  4738. if not Assigned(glTexSubImage3D) then allOK := False;
  4739. glCopyTexSubImage3D := wglGetProcAddress('glCopyTexSubImage3D');
  4740. if not Assigned(glCopyTexSubImage3D) then allOK := False;
  4741. end;
  4742. function Load_GL_version_1_2: boolean;
  4743. begin
  4744. result := true;
  4745. Load_GL_version_1_2x(result);
  4746. end;
  4747. function Load_GL_ARB_imaging: Boolean;
  4748. var
  4749. extstring: String;
  4750. begin
  4751. Result := FALSE;
  4752. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4753. if glext_ExtensionSupported('GL_ARB_imaging', extstring) then
  4754. begin
  4755. glColorTable := wglGetProcAddress('glColorTable');
  4756. if not Assigned(glColorTable) then Exit;
  4757. glColorTableParameterfv := wglGetProcAddress('glColorTableParameterfv');
  4758. if not Assigned(glColorTableParameterfv) then Exit;
  4759. glColorTableParameteriv := wglGetProcAddress('glColorTableParameteriv');
  4760. if not Assigned(glColorTableParameteriv) then Exit;
  4761. glCopyColorTable := wglGetProcAddress('glCopyColorTable');
  4762. if not Assigned(glCopyColorTable) then Exit;
  4763. glGetColorTable := wglGetProcAddress('glGetColorTable');
  4764. if not Assigned(glGetColorTable) then Exit;
  4765. glGetColorTableParameterfv := wglGetProcAddress('glGetColorTableParameterfv');
  4766. if not Assigned(glGetColorTableParameterfv) then Exit;
  4767. glGetColorTableParameteriv := wglGetProcAddress('glGetColorTableParameteriv');
  4768. if not Assigned(glGetColorTableParameteriv) then Exit;
  4769. glColorSubTable := wglGetProcAddress('glColorSubTable');
  4770. if not Assigned(glColorSubTable) then Exit;
  4771. glCopyColorSubTable := wglGetProcAddress('glCopyColorSubTable');
  4772. if not Assigned(glCopyColorSubTable) then Exit;
  4773. glConvolutionFilter1D := wglGetProcAddress('glConvolutionFilter1D');
  4774. if not Assigned(glConvolutionFilter1D) then Exit;
  4775. glConvolutionFilter2D := wglGetProcAddress('glConvolutionFilter2D');
  4776. if not Assigned(glConvolutionFilter2D) then Exit;
  4777. glConvolutionParameterf := wglGetProcAddress('glConvolutionParameterf');
  4778. if not Assigned(glConvolutionParameterf) then Exit;
  4779. glConvolutionParameterfv := wglGetProcAddress('glConvolutionParameterfv');
  4780. if not Assigned(glConvolutionParameterfv) then Exit;
  4781. glConvolutionParameteri := wglGetProcAddress('glConvolutionParameteri');
  4782. if not Assigned(glConvolutionParameteri) then Exit;
  4783. glConvolutionParameteriv := wglGetProcAddress('glConvolutionParameteriv');
  4784. if not Assigned(glConvolutionParameteriv) then Exit;
  4785. glCopyConvolutionFilter1D := wglGetProcAddress('glCopyConvolutionFilter1D');
  4786. if not Assigned(glCopyConvolutionFilter1D) then Exit;
  4787. glCopyConvolutionFilter2D := wglGetProcAddress('glCopyConvolutionFilter2D');
  4788. if not Assigned(glCopyConvolutionFilter2D) then Exit;
  4789. glGetConvolutionFilter := wglGetProcAddress('glGetConvolutionFilter');
  4790. if not Assigned(glGetConvolutionFilter) then Exit;
  4791. glGetConvolutionParameterfv := wglGetProcAddress('glGetConvolutionParameterfv');
  4792. if not Assigned(glGetConvolutionParameterfv) then Exit;
  4793. glGetConvolutionParameteriv := wglGetProcAddress('glGetConvolutionParameteriv');
  4794. if not Assigned(glGetConvolutionParameteriv) then Exit;
  4795. glGetSeparableFilter := wglGetProcAddress('glGetSeparableFilter');
  4796. if not Assigned(glGetSeparableFilter) then Exit;
  4797. glSeparableFilter2D := wglGetProcAddress('glSeparableFilter2D');
  4798. if not Assigned(glSeparableFilter2D) then Exit;
  4799. glGetHistogram := wglGetProcAddress('glGetHistogram');
  4800. if not Assigned(glGetHistogram) then Exit;
  4801. glGetHistogramParameterfv := wglGetProcAddress('glGetHistogramParameterfv');
  4802. if not Assigned(glGetHistogramParameterfv) then Exit;
  4803. glGetHistogramParameteriv := wglGetProcAddress('glGetHistogramParameteriv');
  4804. if not Assigned(glGetHistogramParameteriv) then Exit;
  4805. glGetMinmax := wglGetProcAddress('glGetMinmax');
  4806. if not Assigned(glGetMinmax) then Exit;
  4807. glGetMinmaxParameterfv := wglGetProcAddress('glGetMinmaxParameterfv');
  4808. if not Assigned(glGetMinmaxParameterfv) then Exit;
  4809. glGetMinmaxParameteriv := wglGetProcAddress('glGetMinmaxParameteriv');
  4810. if not Assigned(glGetMinmaxParameteriv) then Exit;
  4811. glHistogram := wglGetProcAddress('glHistogram');
  4812. if not Assigned(glHistogram) then Exit;
  4813. glMinmax := wglGetProcAddress('glMinmax');
  4814. if not Assigned(glMinmax) then Exit;
  4815. glResetHistogram := wglGetProcAddress('glResetHistogram');
  4816. if not Assigned(glResetHistogram) then Exit;
  4817. glResetMinmax := wglGetProcAddress('glResetMinmax');
  4818. if not Assigned(glResetMinmax) then Exit;
  4819. Result := TRUE;
  4820. end;
  4821. end;
  4822. procedure Load_GL_version_1_3x(var allOK: Boolean);
  4823. begin
  4824. glActiveTexture := wglGetProcAddress('glActiveTexture');
  4825. if not Assigned(glActiveTexture) then allOK := false;
  4826. glClientActiveTexture := wglGetProcAddress('glClientActiveTexture');
  4827. if not Assigned(glClientActiveTexture) then allOK := false;
  4828. glMultiTexCoord1d := wglGetProcAddress('glMultiTexCoord1d');
  4829. if not Assigned(glMultiTexCoord1d) then allOK := false;
  4830. glMultiTexCoord1dv := wglGetProcAddress('glMultiTexCoord1dv');
  4831. if not Assigned(glMultiTexCoord1dv) then allOK := false;
  4832. glMultiTexCoord1f := wglGetProcAddress('glMultiTexCoord1f');
  4833. if not Assigned(glMultiTexCoord1f) then allOK := false;
  4834. glMultiTexCoord1fv := wglGetProcAddress('glMultiTexCoord1fv');
  4835. if not Assigned(glMultiTexCoord1fv) then allOK := false;
  4836. glMultiTexCoord1i := wglGetProcAddress('glMultiTexCoord1i');
  4837. if not Assigned(glMultiTexCoord1i) then allOK := false;
  4838. glMultiTexCoord1iv := wglGetProcAddress('glMultiTexCoord1iv');
  4839. if not Assigned(glMultiTexCoord1iv) then allOK := false;
  4840. glMultiTexCoord1s := wglGetProcAddress('glMultiTexCoord1s');
  4841. if not Assigned(glMultiTexCoord1s) then allOK := false;
  4842. glMultiTexCoord1sv := wglGetProcAddress('glMultiTexCoord1sv');
  4843. if not Assigned(glMultiTexCoord1sv) then allOK := false;
  4844. glMultiTexCoord2d := wglGetProcAddress('glMultiTexCoord2d');
  4845. if not Assigned(glMultiTexCoord2d) then allOK := false;
  4846. glMultiTexCoord2dv := wglGetProcAddress('glMultiTexCoord2dv');
  4847. if not Assigned(glMultiTexCoord2dv) then allOK := false;
  4848. glMultiTexCoord2f := wglGetProcAddress('glMultiTexCoord2f');
  4849. if not Assigned(glMultiTexCoord2f) then allOK := false;
  4850. glMultiTexCoord2fv := wglGetProcAddress('glMultiTexCoord2fv');
  4851. if not Assigned(glMultiTexCoord2fv) then allOK := false;
  4852. glMultiTexCoord2i := wglGetProcAddress('glMultiTexCoord2i');
  4853. if not Assigned(glMultiTexCoord2i) then allOK := false;
  4854. glMultiTexCoord2iv := wglGetProcAddress('glMultiTexCoord2iv');
  4855. if not Assigned(glMultiTexCoord2iv) then allOK := false;
  4856. glMultiTexCoord2s := wglGetProcAddress('glMultiTexCoord2s');
  4857. if not Assigned(glMultiTexCoord2s) then allOK := false;
  4858. glMultiTexCoord2sv := wglGetProcAddress('glMultiTexCoord2sv');
  4859. if not Assigned(glMultiTexCoord2sv) then allOK := false;
  4860. glMultiTexCoord3d := wglGetProcAddress('glMultiTexCoord3d');
  4861. if not Assigned(glMultiTexCoord3d) then allOK := false;
  4862. glMultiTexCoord3dv := wglGetProcAddress('glMultiTexCoord3dv');
  4863. if not Assigned(glMultiTexCoord3dv) then allOK := false;
  4864. glMultiTexCoord3f := wglGetProcAddress('glMultiTexCoord3f');
  4865. if not Assigned(glMultiTexCoord3f) then allOK := false;
  4866. glMultiTexCoord3fv := wglGetProcAddress('glMultiTexCoord3fv');
  4867. if not Assigned(glMultiTexCoord3fv) then allOK := false;
  4868. glMultiTexCoord3i := wglGetProcAddress('glMultiTexCoord3i');
  4869. if not Assigned(glMultiTexCoord3i) then allOK := false;
  4870. glMultiTexCoord3iv := wglGetProcAddress('glMultiTexCoord3iv');
  4871. if not Assigned(glMultiTexCoord3iv) then allOK := false;
  4872. glMultiTexCoord3s := wglGetProcAddress('glMultiTexCoord3s');
  4873. if not Assigned(glMultiTexCoord3s) then allOK := false;
  4874. glMultiTexCoord3sv := wglGetProcAddress('glMultiTexCoord3sv');
  4875. if not Assigned(glMultiTexCoord3sv) then allOK := false;
  4876. glMultiTexCoord4d := wglGetProcAddress('glMultiTexCoord4d');
  4877. if not Assigned(glMultiTexCoord4d) then allOK := false;
  4878. glMultiTexCoord4dv := wglGetProcAddress('glMultiTexCoord4dv');
  4879. if not Assigned(glMultiTexCoord4dv) then allOK := false;
  4880. glMultiTexCoord4f := wglGetProcAddress('glMultiTexCoord4f');
  4881. if not Assigned(glMultiTexCoord4f) then allOK := false;
  4882. glMultiTexCoord4fv := wglGetProcAddress('glMultiTexCoord4fv');
  4883. if not Assigned(glMultiTexCoord4fv) then allOK := false;
  4884. glMultiTexCoord4i := wglGetProcAddress('glMultiTexCoord4i');
  4885. if not Assigned(glMultiTexCoord4i) then allOK := false;
  4886. glMultiTexCoord4iv := wglGetProcAddress('glMultiTexCoord4iv');
  4887. if not Assigned(glMultiTexCoord4iv) then allOK := false;
  4888. glMultiTexCoord4s := wglGetProcAddress('glMultiTexCoord4s');
  4889. if not Assigned(glMultiTexCoord4s) then allOK := false;
  4890. glMultiTexCoord4sv := wglGetProcAddress('glMultiTexCoord4sv');
  4891. if not Assigned(glMultiTexCoord4sv) then allOK := false;
  4892. glLoadTransposeMatrixf := wglGetProcAddress('glLoadTransposeMatrixf');
  4893. if not Assigned(glLoadTransposeMatrixf) then allOK := false;
  4894. glLoadTransposeMatrixd := wglGetProcAddress('glLoadTransposeMatrixd');
  4895. if not Assigned(glLoadTransposeMatrixd) then allOK := false;
  4896. glMultTransposeMatrixf := wglGetProcAddress('glMultTransposeMatrixf');
  4897. if not Assigned(glMultTransposeMatrixf) then allOK := false;
  4898. glMultTransposeMatrixd := wglGetProcAddress('glMultTransposeMatrixd');
  4899. if not Assigned(glMultTransposeMatrixd) then allOK := false;
  4900. glSampleCoverage := wglGetProcAddress('glSampleCoverage');
  4901. if not Assigned(glSampleCoverage) then allOK := false;
  4902. glCompressedTexImage3D := wglGetProcAddress('glCompressedTexImage3D');
  4903. if not Assigned(glCompressedTexImage3D) then allOK := false;
  4904. glCompressedTexImage2D := wglGetProcAddress('glCompressedTexImage2D');
  4905. if not Assigned(glCompressedTexImage2D) then allOK := false;
  4906. glCompressedTexImage1D := wglGetProcAddress('glCompressedTexImage1D');
  4907. if not Assigned(glCompressedTexImage1D) then allOK := false;
  4908. glCompressedTexSubImage3D := wglGetProcAddress('glCompressedTexSubImage3D');
  4909. if not Assigned(glCompressedTexSubImage3D) then allOK := false;
  4910. glCompressedTexSubImage2D := wglGetProcAddress('glCompressedTexSubImage2D');
  4911. if not Assigned(glCompressedTexSubImage2D) then allOK := false;
  4912. glCompressedTexSubImage1D := wglGetProcAddress('glCompressedTexSubImage1D');
  4913. if not Assigned(glCompressedTexSubImage1D) then allOK := false;
  4914. glGetCompressedTexImage := wglGetProcAddress('glGetCompressedTexImage');
  4915. if not Assigned(glGetCompressedTexImage) then allOK := false;
  4916. end;
  4917. function Load_GL_version_1_3: boolean;
  4918. begin
  4919. result := true;
  4920. Load_GL_version_1_3x(result);
  4921. end;
  4922. function Load_GL_ARB_multitexture: Boolean;
  4923. var
  4924. extstring: String;
  4925. begin
  4926. Result := FALSE;
  4927. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4928. if glext_ExtensionSupported('GL_ARB_multitexture', extstring) then
  4929. begin
  4930. glActiveTextureARB := wglGetProcAddress('glActiveTextureARB');
  4931. if not Assigned(glActiveTextureARB) then Exit;
  4932. glClientActiveTextureARB := wglGetProcAddress('glClientActiveTextureARB');
  4933. if not Assigned(glClientActiveTextureARB) then Exit;
  4934. glMultiTexCoord1dARB := wglGetProcAddress('glMultiTexCoord1dARB');
  4935. if not Assigned(glMultiTexCoord1dARB) then Exit;
  4936. glMultiTexCoord1dvARB := wglGetProcAddress('glMultiTexCoord1dvARB');
  4937. if not Assigned(glMultiTexCoord1dvARB) then Exit;
  4938. glMultiTexCoord1fARB := wglGetProcAddress('glMultiTexCoord1fARB');
  4939. if not Assigned(glMultiTexCoord1fARB) then Exit;
  4940. glMultiTexCoord1fvARB := wglGetProcAddress('glMultiTexCoord1fvARB');
  4941. if not Assigned(glMultiTexCoord1fvARB) then Exit;
  4942. glMultiTexCoord1iARB := wglGetProcAddress('glMultiTexCoord1iARB');
  4943. if not Assigned(glMultiTexCoord1iARB) then Exit;
  4944. glMultiTexCoord1ivARB := wglGetProcAddress('glMultiTexCoord1ivARB');
  4945. if not Assigned(glMultiTexCoord1ivARB) then Exit;
  4946. glMultiTexCoord1sARB := wglGetProcAddress('glMultiTexCoord1sARB');
  4947. if not Assigned(glMultiTexCoord1sARB) then Exit;
  4948. glMultiTexCoord1svARB := wglGetProcAddress('glMultiTexCoord1svARB');
  4949. if not Assigned(glMultiTexCoord1svARB) then Exit;
  4950. glMultiTexCoord2dARB := wglGetProcAddress('glMultiTexCoord2dARB');
  4951. if not Assigned(glMultiTexCoord2dARB) then Exit;
  4952. glMultiTexCoord2dvARB := wglGetProcAddress('glMultiTexCoord2dvARB');
  4953. if not Assigned(glMultiTexCoord2dvARB) then Exit;
  4954. glMultiTexCoord2fARB := wglGetProcAddress('glMultiTexCoord2fARB');
  4955. if not Assigned(glMultiTexCoord2fARB) then Exit;
  4956. glMultiTexCoord2fvARB := wglGetProcAddress('glMultiTexCoord2fvARB');
  4957. if not Assigned(glMultiTexCoord2fvARB) then Exit;
  4958. glMultiTexCoord2iARB := wglGetProcAddress('glMultiTexCoord2iARB');
  4959. if not Assigned(glMultiTexCoord2iARB) then Exit;
  4960. glMultiTexCoord2ivARB := wglGetProcAddress('glMultiTexCoord2ivARB');
  4961. if not Assigned(glMultiTexCoord2ivARB) then Exit;
  4962. glMultiTexCoord2sARB := wglGetProcAddress('glMultiTexCoord2sARB');
  4963. if not Assigned(glMultiTexCoord2sARB) then Exit;
  4964. glMultiTexCoord2svARB := wglGetProcAddress('glMultiTexCoord2svARB');
  4965. if not Assigned(glMultiTexCoord2svARB) then Exit;
  4966. glMultiTexCoord3dARB := wglGetProcAddress('glMultiTexCoord3dARB');
  4967. if not Assigned(glMultiTexCoord3dARB) then Exit;
  4968. glMultiTexCoord3dvARB := wglGetProcAddress('glMultiTexCoord3dvARB');
  4969. if not Assigned(glMultiTexCoord3dvARB) then Exit;
  4970. glMultiTexCoord3fARB := wglGetProcAddress('glMultiTexCoord3fARB');
  4971. if not Assigned(glMultiTexCoord3fARB) then Exit;
  4972. glMultiTexCoord3fvARB := wglGetProcAddress('glMultiTexCoord3fvARB');
  4973. if not Assigned(glMultiTexCoord3fvARB) then Exit;
  4974. glMultiTexCoord3iARB := wglGetProcAddress('glMultiTexCoord3iARB');
  4975. if not Assigned(glMultiTexCoord3iARB) then Exit;
  4976. glMultiTexCoord3ivARB := wglGetProcAddress('glMultiTexCoord3ivARB');
  4977. if not Assigned(glMultiTexCoord3ivARB) then Exit;
  4978. glMultiTexCoord3sARB := wglGetProcAddress('glMultiTexCoord3sARB');
  4979. if not Assigned(glMultiTexCoord3sARB) then Exit;
  4980. glMultiTexCoord3svARB := wglGetProcAddress('glMultiTexCoord3svARB');
  4981. if not Assigned(glMultiTexCoord3svARB) then Exit;
  4982. glMultiTexCoord4dARB := wglGetProcAddress('glMultiTexCoord4dARB');
  4983. if not Assigned(glMultiTexCoord4dARB) then Exit;
  4984. glMultiTexCoord4dvARB := wglGetProcAddress('glMultiTexCoord4dvARB');
  4985. if not Assigned(glMultiTexCoord4dvARB) then Exit;
  4986. glMultiTexCoord4fARB := wglGetProcAddress('glMultiTexCoord4fARB');
  4987. if not Assigned(glMultiTexCoord4fARB) then Exit;
  4988. glMultiTexCoord4fvARB := wglGetProcAddress('glMultiTexCoord4fvARB');
  4989. if not Assigned(glMultiTexCoord4fvARB) then Exit;
  4990. glMultiTexCoord4iARB := wglGetProcAddress('glMultiTexCoord4iARB');
  4991. if not Assigned(glMultiTexCoord4iARB) then Exit;
  4992. glMultiTexCoord4ivARB := wglGetProcAddress('glMultiTexCoord4ivARB');
  4993. if not Assigned(glMultiTexCoord4ivARB) then Exit;
  4994. glMultiTexCoord4sARB := wglGetProcAddress('glMultiTexCoord4sARB');
  4995. if not Assigned(glMultiTexCoord4sARB) then Exit;
  4996. glMultiTexCoord4svARB := wglGetProcAddress('glMultiTexCoord4svARB');
  4997. if not Assigned(glMultiTexCoord4svARB) then Exit;
  4998. Result := TRUE;
  4999. end;
  5000. end;
  5001. function Load_GL_ARB_transpose_matrix: Boolean;
  5002. var
  5003. extstring: String;
  5004. begin
  5005. Result := FALSE;
  5006. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5007. if glext_ExtensionSupported('GL_ARB_transpose_matrix', extstring) then
  5008. begin
  5009. glLoadTransposeMatrixfARB := wglGetProcAddress('glLoadTransposeMatrixfARB');
  5010. if not Assigned(glLoadTransposeMatrixfARB) then Exit;
  5011. glLoadTransposeMatrixdARB := wglGetProcAddress('glLoadTransposeMatrixdARB');
  5012. if not Assigned(glLoadTransposeMatrixdARB) then Exit;
  5013. glMultTransposeMatrixfARB := wglGetProcAddress('glMultTransposeMatrixfARB');
  5014. if not Assigned(glMultTransposeMatrixfARB) then Exit;
  5015. glMultTransposeMatrixdARB := wglGetProcAddress('glMultTransposeMatrixdARB');
  5016. if not Assigned(glMultTransposeMatrixdARB) then Exit;
  5017. Result := TRUE;
  5018. end;
  5019. end;
  5020. function Load_GL_ARB_multisample: Boolean;
  5021. var
  5022. extstring: String;
  5023. begin
  5024. Result := FALSE;
  5025. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5026. if glext_ExtensionSupported('GL_ARB_multisample', extstring) then
  5027. begin
  5028. glSampleCoverageARB := wglGetProcAddress('glSampleCoverageARB');
  5029. if not Assigned(glSampleCoverageARB) then Exit;
  5030. Result := TRUE;
  5031. end;
  5032. end;
  5033. function Load_GL_ARB_texture_env_add: Boolean;
  5034. var
  5035. extstring: String;
  5036. begin
  5037. Result := FALSE;
  5038. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5039. if glext_ExtensionSupported('GL_ARB_texture_env_add', extstring) then
  5040. begin
  5041. Result := TRUE;
  5042. end;
  5043. end;
  5044. {$IFDEF Windows}
  5045. function Load_WGL_ARB_extensions_string: Boolean;
  5046. var
  5047. extstring: String;
  5048. begin
  5049. Result := FALSE;
  5050. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5051. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5052. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5053. if glext_ExtensionSupported('WGL_ARB_extensions_string', extstring) then
  5054. begin
  5055. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5056. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5057. Result := TRUE;
  5058. end;
  5059. end;
  5060. function Load_WGL_ARB_buffer_region: Boolean;
  5061. var
  5062. extstring: String;
  5063. begin
  5064. Result := FALSE;
  5065. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5066. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5067. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5068. if glext_ExtensionSupported('WGL_ARB_buffer_region', extstring) then
  5069. begin
  5070. wglCreateBufferRegionARB := wglGetProcAddress('wglCreateBufferRegionARB');
  5071. if not Assigned(wglCreateBufferRegionARB) then Exit;
  5072. wglDeleteBufferRegionARB := wglGetProcAddress('wglDeleteBufferRegionARB');
  5073. if not Assigned(wglDeleteBufferRegionARB) then Exit;
  5074. wglSaveBufferRegionARB := wglGetProcAddress('wglSaveBufferRegionARB');
  5075. if not Assigned(wglSaveBufferRegionARB) then Exit;
  5076. wglRestoreBufferRegionARB := wglGetProcAddress('wglRestoreBufferRegionARB');
  5077. if not Assigned(wglRestoreBufferRegionARB) then Exit;
  5078. Result := TRUE;
  5079. end;
  5080. end;
  5081. {$ENDIF}
  5082. function Load_GL_ARB_texture_cube_map: Boolean;
  5083. var
  5084. extstring: String;
  5085. begin
  5086. Result := FALSE;
  5087. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5088. if glext_ExtensionSupported('GL_ARB_texture_cube_map', extstring) then
  5089. begin
  5090. Result := TRUE;
  5091. end;
  5092. end;
  5093. function Load_GL_ARB_depth_texture: Boolean;
  5094. var
  5095. extstring: String;
  5096. begin
  5097. Result := FALSE;
  5098. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5099. if glext_ExtensionSupported('GL_ARB_depth_texture', extstring) then
  5100. begin
  5101. Result := TRUE;
  5102. end;
  5103. end;
  5104. function Load_GL_ARB_point_parameters: Boolean;
  5105. var
  5106. extstring: String;
  5107. begin
  5108. Result := FALSE;
  5109. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5110. if glext_ExtensionSupported('GL_ARB_point_parameters', extstring) then
  5111. begin
  5112. glPointParameterfARB := wglGetProcAddress('glPointParameterfARB');
  5113. if not Assigned(glPointParameterfARB) then Exit;
  5114. glPointParameterfvARB := wglGetProcAddress('glPointParameterfvARB');
  5115. if not Assigned(glPointParameterfvARB) then Exit;
  5116. Result := TRUE;
  5117. end;
  5118. end;
  5119. function Load_GL_ARB_shadow: Boolean;
  5120. var
  5121. extstring: String;
  5122. begin
  5123. Result := FALSE;
  5124. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5125. if glext_ExtensionSupported('GL_ARB_shadow', extstring) then
  5126. begin
  5127. Result := TRUE;
  5128. end;
  5129. end;
  5130. function Load_GL_ARB_shadow_ambient: Boolean;
  5131. var
  5132. extstring: String;
  5133. begin
  5134. Result := FALSE;
  5135. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5136. if glext_ExtensionSupported('GL_ARB_shadow_ambient', extstring) then
  5137. begin
  5138. Result := TRUE;
  5139. end;
  5140. end;
  5141. function Load_GL_ARB_texture_border_clamp: Boolean;
  5142. var
  5143. extstring: String;
  5144. begin
  5145. Result := FALSE;
  5146. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5147. if glext_ExtensionSupported('GL_ARB_texture_border_clamp', extstring) then
  5148. begin
  5149. Result := TRUE;
  5150. end;
  5151. end;
  5152. function Load_GL_ARB_texture_compression: Boolean;
  5153. var
  5154. extstring: String;
  5155. begin
  5156. Result := FALSE;
  5157. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5158. if glext_ExtensionSupported('GL_ARB_texture_compression', extstring) then
  5159. begin
  5160. glCompressedTexImage3DARB := wglGetProcAddress('glCompressedTexImage3DARB');
  5161. if not Assigned(glCompressedTexImage3DARB) then Exit;
  5162. glCompressedTexImage2DARB := wglGetProcAddress('glCompressedTexImage2DARB');
  5163. if not Assigned(glCompressedTexImage2DARB) then Exit;
  5164. glCompressedTexImage1DARB := wglGetProcAddress('glCompressedTexImage1DARB');
  5165. if not Assigned(glCompressedTexImage1DARB) then Exit;
  5166. glCompressedTexSubImage3DARB := wglGetProcAddress('glCompressedTexSubImage3DARB');
  5167. if not Assigned(glCompressedTexSubImage3DARB) then Exit;
  5168. glCompressedTexSubImage2DARB := wglGetProcAddress('glCompressedTexSubImage2DARB');
  5169. if not Assigned(glCompressedTexSubImage2DARB) then Exit;
  5170. glCompressedTexSubImage1DARB := wglGetProcAddress('glCompressedTexSubImage1DARB');
  5171. if not Assigned(glCompressedTexSubImage1DARB) then Exit;
  5172. glGetCompressedTexImageARB := wglGetProcAddress('glGetCompressedTexImageARB');
  5173. if not Assigned(glGetCompressedTexImageARB) then Exit;
  5174. Result := TRUE;
  5175. end;
  5176. end;
  5177. function Load_GL_ARB_texture_env_combine: Boolean;
  5178. var
  5179. extstring: String;
  5180. begin
  5181. Result := FALSE;
  5182. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5183. if glext_ExtensionSupported('GL_ARB_texture_env_combine', extstring) then
  5184. begin
  5185. Result := TRUE;
  5186. end;
  5187. end;
  5188. function Load_GL_ARB_texture_env_crossbar: Boolean;
  5189. var
  5190. extstring: String;
  5191. begin
  5192. Result := FALSE;
  5193. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5194. if glext_ExtensionSupported('GL_ARB_texture_env_crossbar', extstring) then
  5195. begin
  5196. Result := TRUE;
  5197. end;
  5198. end;
  5199. function Load_GL_ARB_texture_env_dot3: Boolean;
  5200. var
  5201. extstring: String;
  5202. begin
  5203. Result := FALSE;
  5204. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5205. if glext_ExtensionSupported('GL_ARB_texture_env_dot3', extstring) then
  5206. begin
  5207. Result := TRUE;
  5208. end;
  5209. end;
  5210. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  5211. var
  5212. extstring: String;
  5213. begin
  5214. Result := FALSE;
  5215. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5216. if glext_ExtensionSupported('GL_ARB_texture_mirrored_repeat', extstring) then
  5217. begin
  5218. Result := TRUE;
  5219. end;
  5220. end;
  5221. function Load_GL_ARB_vertex_blend: Boolean;
  5222. var
  5223. extstring: String;
  5224. begin
  5225. Result := FALSE;
  5226. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5227. if glext_ExtensionSupported('GL_ARB_vertex_blend', extstring) then
  5228. begin
  5229. glWeightbvARB := wglGetProcAddress('glWeightbvARB');
  5230. if not Assigned(glWeightbvARB) then Exit;
  5231. glWeightsvARB := wglGetProcAddress('glWeightsvARB');
  5232. if not Assigned(glWeightsvARB) then Exit;
  5233. glWeightivARB := wglGetProcAddress('glWeightivARB');
  5234. if not Assigned(glWeightivARB) then Exit;
  5235. glWeightfvARB := wglGetProcAddress('glWeightfvARB');
  5236. if not Assigned(glWeightfvARB) then Exit;
  5237. glWeightdvARB := wglGetProcAddress('glWeightdvARB');
  5238. if not Assigned(glWeightdvARB) then Exit;
  5239. glWeightvARB := wglGetProcAddress('glWeightvARB');
  5240. if not Assigned(glWeightvARB) then Exit;
  5241. glWeightubvARB := wglGetProcAddress('glWeightubvARB');
  5242. if not Assigned(glWeightubvARB) then Exit;
  5243. glWeightusvARB := wglGetProcAddress('glWeightusvARB');
  5244. if not Assigned(glWeightusvARB) then Exit;
  5245. glWeightuivARB := wglGetProcAddress('glWeightuivARB');
  5246. if not Assigned(glWeightuivARB) then Exit;
  5247. glWeightPointerARB := wglGetProcAddress('glWeightPointerARB');
  5248. if not Assigned(glWeightPointerARB) then Exit;
  5249. glVertexBlendARB := wglGetProcAddress('glVertexBlendARB');
  5250. if not Assigned(glVertexBlendARB) then Exit;
  5251. Result := TRUE;
  5252. end;
  5253. end;
  5254. function Load_GL_ARB_vertex_program: Boolean;
  5255. var
  5256. extstring: String;
  5257. begin
  5258. Result := FALSE;
  5259. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5260. if glext_ExtensionSupported('GL_ARB_vertex_program', extstring) then
  5261. begin
  5262. glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  5263. if not Assigned(glVertexAttrib1sARB) then Exit;
  5264. glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  5265. if not Assigned(glVertexAttrib1fARB) then Exit;
  5266. glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  5267. if not Assigned(glVertexAttrib1dARB) then Exit;
  5268. glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  5269. if not Assigned(glVertexAttrib2sARB) then Exit;
  5270. glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  5271. if not Assigned(glVertexAttrib2fARB) then Exit;
  5272. glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  5273. if not Assigned(glVertexAttrib2dARB) then Exit;
  5274. glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  5275. if not Assigned(glVertexAttrib3sARB) then Exit;
  5276. glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  5277. if not Assigned(glVertexAttrib3fARB) then Exit;
  5278. glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  5279. if not Assigned(glVertexAttrib3dARB) then Exit;
  5280. glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  5281. if not Assigned(glVertexAttrib4sARB) then Exit;
  5282. glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  5283. if not Assigned(glVertexAttrib4fARB) then Exit;
  5284. glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  5285. if not Assigned(glVertexAttrib4dARB) then Exit;
  5286. glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  5287. if not Assigned(glVertexAttrib4NubARB) then Exit;
  5288. glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  5289. if not Assigned(glVertexAttrib1svARB) then Exit;
  5290. glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  5291. if not Assigned(glVertexAttrib1fvARB) then Exit;
  5292. glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  5293. if not Assigned(glVertexAttrib1dvARB) then Exit;
  5294. glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  5295. if not Assigned(glVertexAttrib2svARB) then Exit;
  5296. glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  5297. if not Assigned(glVertexAttrib2fvARB) then Exit;
  5298. glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  5299. if not Assigned(glVertexAttrib2dvARB) then Exit;
  5300. glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  5301. if not Assigned(glVertexAttrib3svARB) then Exit;
  5302. glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  5303. if not Assigned(glVertexAttrib3fvARB) then Exit;
  5304. glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  5305. if not Assigned(glVertexAttrib3dvARB) then Exit;
  5306. glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  5307. if not Assigned(glVertexAttrib4bvARB) then Exit;
  5308. glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  5309. if not Assigned(glVertexAttrib4svARB) then Exit;
  5310. glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  5311. if not Assigned(glVertexAttrib4ivARB) then Exit;
  5312. glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  5313. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  5314. glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  5315. if not Assigned(glVertexAttrib4usvARB) then Exit;
  5316. glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  5317. if not Assigned(glVertexAttrib4uivARB) then Exit;
  5318. glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  5319. if not Assigned(glVertexAttrib4fvARB) then Exit;
  5320. glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  5321. if not Assigned(glVertexAttrib4dvARB) then Exit;
  5322. glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  5323. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  5324. glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  5325. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  5326. glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  5327. if not Assigned(glVertexAttrib4NivARB) then Exit;
  5328. glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  5329. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  5330. glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  5331. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  5332. glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  5333. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  5334. glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  5335. if not Assigned(glVertexAttribPointerARB) then Exit;
  5336. glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  5337. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  5338. glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  5339. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  5340. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  5341. if not Assigned(glProgramStringARB) then Exit;
  5342. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  5343. if not Assigned(glBindProgramARB) then Exit;
  5344. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  5345. if not Assigned(glDeleteProgramsARB) then Exit;
  5346. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  5347. if not Assigned(glGenProgramsARB) then Exit;
  5348. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  5349. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  5350. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  5351. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  5352. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  5353. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  5354. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  5355. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  5356. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  5357. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  5358. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  5359. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  5360. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  5361. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  5362. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  5363. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  5364. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  5365. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  5366. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  5367. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  5368. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  5369. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  5370. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  5371. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  5372. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  5373. if not Assigned(glGetProgramivARB) then Exit;
  5374. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  5375. if not Assigned(glGetProgramStringARB) then Exit;
  5376. glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  5377. if not Assigned(glGetVertexAttribdvARB) then Exit;
  5378. glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  5379. if not Assigned(glGetVertexAttribfvARB) then Exit;
  5380. glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  5381. if not Assigned(glGetVertexAttribivARB) then Exit;
  5382. glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  5383. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  5384. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  5385. if not Assigned(glIsProgramARB) then Exit;
  5386. Result := TRUE;
  5387. end;
  5388. end;
  5389. function Load_GL_ARB_window_pos: Boolean;
  5390. var
  5391. extstring: String;
  5392. begin
  5393. Result := FALSE;
  5394. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5395. if glext_ExtensionSupported('GL_ARB_window_pos', extstring) then
  5396. begin
  5397. glWindowPos2dARB := wglGetProcAddress('glWindowPos2dARB');
  5398. if not Assigned(glWindowPos2dARB) then Exit;
  5399. glWindowPos2fARB := wglGetProcAddress('glWindowPos2fARB');
  5400. if not Assigned(glWindowPos2fARB) then Exit;
  5401. glWindowPos2iARB := wglGetProcAddress('glWindowPos2iARB');
  5402. if not Assigned(glWindowPos2iARB) then Exit;
  5403. glWindowPos2sARB := wglGetProcAddress('glWindowPos2sARB');
  5404. if not Assigned(glWindowPos2sARB) then Exit;
  5405. glWindowPos2dvARB := wglGetProcAddress('glWindowPos2dvARB');
  5406. if not Assigned(glWindowPos2dvARB) then Exit;
  5407. glWindowPos2fvARB := wglGetProcAddress('glWindowPos2fvARB');
  5408. if not Assigned(glWindowPos2fvARB) then Exit;
  5409. glWindowPos2ivARB := wglGetProcAddress('glWindowPos2ivARB');
  5410. if not Assigned(glWindowPos2ivARB) then Exit;
  5411. glWindowPos2svARB := wglGetProcAddress('glWindowPos2svARB');
  5412. if not Assigned(glWindowPos2svARB) then Exit;
  5413. glWindowPos3dARB := wglGetProcAddress('glWindowPos3dARB');
  5414. if not Assigned(glWindowPos3dARB) then Exit;
  5415. glWindowPos3fARB := wglGetProcAddress('glWindowPos3fARB');
  5416. if not Assigned(glWindowPos3fARB) then Exit;
  5417. glWindowPos3iARB := wglGetProcAddress('glWindowPos3iARB');
  5418. if not Assigned(glWindowPos3iARB) then Exit;
  5419. glWindowPos3sARB := wglGetProcAddress('glWindowPos3sARB');
  5420. if not Assigned(glWindowPos3sARB) then Exit;
  5421. glWindowPos3dvARB := wglGetProcAddress('glWindowPos3dvARB');
  5422. if not Assigned(glWindowPos3dvARB) then Exit;
  5423. glWindowPos3fvARB := wglGetProcAddress('glWindowPos3fvARB');
  5424. if not Assigned(glWindowPos3fvARB) then Exit;
  5425. glWindowPos3ivARB := wglGetProcAddress('glWindowPos3ivARB');
  5426. if not Assigned(glWindowPos3ivARB) then Exit;
  5427. glWindowPos3svARB := wglGetProcAddress('glWindowPos3svARB');
  5428. if not Assigned(glWindowPos3svARB) then Exit;
  5429. Result := TRUE;
  5430. end;
  5431. end;
  5432. function Load_GL_EXT_422_pixels: Boolean;
  5433. var
  5434. extstring: String;
  5435. begin
  5436. Result := FALSE;
  5437. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5438. if glext_ExtensionSupported('GL_EXT_422_pixels', extstring) then
  5439. begin
  5440. Result := TRUE;
  5441. end;
  5442. end;
  5443. function Load_GL_EXT_abgr: Boolean;
  5444. var
  5445. extstring: String;
  5446. begin
  5447. Result := FALSE;
  5448. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5449. if glext_ExtensionSupported('GL_EXT_abgr', extstring) then
  5450. begin
  5451. Result := TRUE;
  5452. end;
  5453. end;
  5454. function Load_GL_EXT_bgra: Boolean;
  5455. var
  5456. extstring: String;
  5457. begin
  5458. Result := FALSE;
  5459. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5460. if glext_ExtensionSupported('GL_EXT_bgra', extstring) then
  5461. begin
  5462. Result := TRUE;
  5463. end;
  5464. end;
  5465. function Load_GL_EXT_blend_color: Boolean;
  5466. var
  5467. extstring: String;
  5468. begin
  5469. Result := FALSE;
  5470. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5471. if glext_ExtensionSupported('GL_EXT_blend_color', extstring) then
  5472. begin
  5473. glBlendColorEXT := wglGetProcAddress('glBlendColorEXT');
  5474. if not Assigned(glBlendColorEXT) then Exit;
  5475. Result := TRUE;
  5476. end;
  5477. end;
  5478. function Load_GL_EXT_blend_func_separate: Boolean;
  5479. var
  5480. extstring: String;
  5481. begin
  5482. Result := FALSE;
  5483. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5484. if glext_ExtensionSupported('GL_EXT_blend_func_separate', extstring) then
  5485. begin
  5486. glBlendFuncSeparateEXT := wglGetProcAddress('glBlendFuncSeparateEXT');
  5487. if not Assigned(glBlendFuncSeparateEXT) then Exit;
  5488. Result := TRUE;
  5489. end;
  5490. end;
  5491. function Load_GL_EXT_blend_logic_op: Boolean;
  5492. var
  5493. extstring: String;
  5494. begin
  5495. Result := FALSE;
  5496. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5497. if glext_ExtensionSupported('GL_EXT_blend_logic_op', extstring) then
  5498. begin
  5499. Result := TRUE;
  5500. end;
  5501. end;
  5502. function Load_GL_EXT_blend_minmax: Boolean;
  5503. var
  5504. extstring: String;
  5505. begin
  5506. Result := FALSE;
  5507. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5508. if glext_ExtensionSupported('GL_EXT_blend_minmax', extstring) then
  5509. begin
  5510. glBlendEquationEXT := wglGetProcAddress('glBlendEquationEXT');
  5511. if not Assigned(glBlendEquationEXT) then Exit;
  5512. Result := TRUE;
  5513. end;
  5514. end;
  5515. function Load_GL_EXT_blend_subtract: Boolean;
  5516. var
  5517. extstring: String;
  5518. begin
  5519. Result := FALSE;
  5520. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5521. if glext_ExtensionSupported('GL_EXT_blend_subtract', extstring) then
  5522. begin
  5523. Result := TRUE;
  5524. end;
  5525. end;
  5526. function Load_GL_EXT_clip_volume_hint: Boolean;
  5527. var
  5528. extstring: String;
  5529. begin
  5530. Result := FALSE;
  5531. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5532. if glext_ExtensionSupported('GL_EXT_clip_volume_hint', extstring) then
  5533. begin
  5534. Result := TRUE;
  5535. end;
  5536. end;
  5537. function Load_GL_EXT_color_subtable: Boolean;
  5538. var
  5539. extstring: String;
  5540. begin
  5541. Result := FALSE;
  5542. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5543. if glext_ExtensionSupported('GL_EXT_color_subtable', extstring) then
  5544. begin
  5545. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  5546. if not Assigned(glColorSubTableEXT) then Exit;
  5547. glCopyColorSubTableEXT := wglGetProcAddress('glCopyColorSubTableEXT');
  5548. if not Assigned(glCopyColorSubTableEXT) then Exit;
  5549. Result := TRUE;
  5550. end;
  5551. end;
  5552. function Load_GL_EXT_compiled_vertex_array: Boolean;
  5553. var
  5554. extstring: String;
  5555. begin
  5556. Result := FALSE;
  5557. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5558. if glext_ExtensionSupported('GL_EXT_compiled_vertex_array', extstring) then
  5559. begin
  5560. glLockArraysEXT := wglGetProcAddress('glLockArraysEXT');
  5561. if not Assigned(glLockArraysEXT) then Exit;
  5562. glUnlockArraysEXT := wglGetProcAddress('glUnlockArraysEXT');
  5563. if not Assigned(glUnlockArraysEXT) then Exit;
  5564. Result := TRUE;
  5565. end;
  5566. end;
  5567. function Load_GL_EXT_convolution: Boolean;
  5568. var
  5569. extstring: String;
  5570. begin
  5571. Result := FALSE;
  5572. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5573. if glext_ExtensionSupported('GL_EXT_convolution', extstring) then
  5574. begin
  5575. glConvolutionFilter1DEXT := wglGetProcAddress('glConvolutionFilter1DEXT');
  5576. if not Assigned(glConvolutionFilter1DEXT) then Exit;
  5577. glConvolutionFilter2DEXT := wglGetProcAddress('glConvolutionFilter2DEXT');
  5578. if not Assigned(glConvolutionFilter2DEXT) then Exit;
  5579. glCopyConvolutionFilter1DEXT := wglGetProcAddress('glCopyConvolutionFilter1DEXT');
  5580. if not Assigned(glCopyConvolutionFilter1DEXT) then Exit;
  5581. glCopyConvolutionFilter2DEXT := wglGetProcAddress('glCopyConvolutionFilter2DEXT');
  5582. if not Assigned(glCopyConvolutionFilter2DEXT) then Exit;
  5583. glGetConvolutionFilterEXT := wglGetProcAddress('glGetConvolutionFilterEXT');
  5584. if not Assigned(glGetConvolutionFilterEXT) then Exit;
  5585. glSeparableFilter2DEXT := wglGetProcAddress('glSeparableFilter2DEXT');
  5586. if not Assigned(glSeparableFilter2DEXT) then Exit;
  5587. glGetSeparableFilterEXT := wglGetProcAddress('glGetSeparableFilterEXT');
  5588. if not Assigned(glGetSeparableFilterEXT) then Exit;
  5589. glConvolutionParameteriEXT := wglGetProcAddress('glConvolutionParameteriEXT');
  5590. if not Assigned(glConvolutionParameteriEXT) then Exit;
  5591. glConvolutionParameterivEXT := wglGetProcAddress('glConvolutionParameterivEXT');
  5592. if not Assigned(glConvolutionParameterivEXT) then Exit;
  5593. glConvolutionParameterfEXT := wglGetProcAddress('glConvolutionParameterfEXT');
  5594. if not Assigned(glConvolutionParameterfEXT) then Exit;
  5595. glConvolutionParameterfvEXT := wglGetProcAddress('glConvolutionParameterfvEXT');
  5596. if not Assigned(glConvolutionParameterfvEXT) then Exit;
  5597. glGetConvolutionParameterivEXT := wglGetProcAddress('glGetConvolutionParameterivEXT');
  5598. if not Assigned(glGetConvolutionParameterivEXT) then Exit;
  5599. glGetConvolutionParameterfvEXT := wglGetProcAddress('glGetConvolutionParameterfvEXT');
  5600. if not Assigned(glGetConvolutionParameterfvEXT) then Exit;
  5601. Result := TRUE;
  5602. end;
  5603. end;
  5604. function Load_GL_EXT_fog_coord: Boolean;
  5605. var
  5606. extstring: String;
  5607. begin
  5608. Result := FALSE;
  5609. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5610. if glext_ExtensionSupported('GL_EXT_fog_coord', extstring) then
  5611. begin
  5612. glFogCoordfEXT := wglGetProcAddress('glFogCoordfEXT');
  5613. if not Assigned(glFogCoordfEXT) then Exit;
  5614. glFogCoorddEXT := wglGetProcAddress('glFogCoorddEXT');
  5615. if not Assigned(glFogCoorddEXT) then Exit;
  5616. glFogCoordfvEXT := wglGetProcAddress('glFogCoordfvEXT');
  5617. if not Assigned(glFogCoordfvEXT) then Exit;
  5618. glFogCoorddvEXT := wglGetProcAddress('glFogCoorddvEXT');
  5619. if not Assigned(glFogCoorddvEXT) then Exit;
  5620. glFogCoordPointerEXT := wglGetProcAddress('glFogCoordPointerEXT');
  5621. if not Assigned(glFogCoordPointerEXT) then Exit;
  5622. Result := TRUE;
  5623. end;
  5624. end;
  5625. function Load_GL_EXT_histogram: Boolean;
  5626. var
  5627. extstring: String;
  5628. begin
  5629. Result := FALSE;
  5630. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5631. if glext_ExtensionSupported('GL_EXT_histogram', extstring) then
  5632. begin
  5633. glHistogramEXT := wglGetProcAddress('glHistogramEXT');
  5634. if not Assigned(glHistogramEXT) then Exit;
  5635. glResetHistogramEXT := wglGetProcAddress('glResetHistogramEXT');
  5636. if not Assigned(glResetHistogramEXT) then Exit;
  5637. glGetHistogramEXT := wglGetProcAddress('glGetHistogramEXT');
  5638. if not Assigned(glGetHistogramEXT) then Exit;
  5639. glGetHistogramParameterivEXT := wglGetProcAddress('glGetHistogramParameterivEXT');
  5640. if not Assigned(glGetHistogramParameterivEXT) then Exit;
  5641. glGetHistogramParameterfvEXT := wglGetProcAddress('glGetHistogramParameterfvEXT');
  5642. if not Assigned(glGetHistogramParameterfvEXT) then Exit;
  5643. glMinmaxEXT := wglGetProcAddress('glMinmaxEXT');
  5644. if not Assigned(glMinmaxEXT) then Exit;
  5645. glResetMinmaxEXT := wglGetProcAddress('glResetMinmaxEXT');
  5646. if not Assigned(glResetMinmaxEXT) then Exit;
  5647. glGetMinmaxEXT := wglGetProcAddress('glGetMinmaxEXT');
  5648. if not Assigned(glGetMinmaxEXT) then Exit;
  5649. glGetMinmaxParameterivEXT := wglGetProcAddress('glGetMinmaxParameterivEXT');
  5650. if not Assigned(glGetMinmaxParameterivEXT) then Exit;
  5651. glGetMinmaxParameterfvEXT := wglGetProcAddress('glGetMinmaxParameterfvEXT');
  5652. if not Assigned(glGetMinmaxParameterfvEXT) then Exit;
  5653. Result := TRUE;
  5654. end;
  5655. end;
  5656. function Load_GL_EXT_multi_draw_arrays: Boolean;
  5657. var
  5658. extstring: String;
  5659. begin
  5660. Result := FALSE;
  5661. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5662. if glext_ExtensionSupported('GL_EXT_multi_draw_arrays', extstring) then
  5663. begin
  5664. glMultiDrawArraysEXT := wglGetProcAddress('glMultiDrawArraysEXT');
  5665. if not Assigned(glMultiDrawArraysEXT) then Exit;
  5666. glMultiDrawElementsEXT := wglGetProcAddress('glMultiDrawElementsEXT');
  5667. if not Assigned(glMultiDrawElementsEXT) then Exit;
  5668. Result := TRUE;
  5669. end;
  5670. end;
  5671. function Load_GL_EXT_packed_depth_stencil: Boolean;
  5672. var
  5673. extstring: String;
  5674. begin
  5675. Result := FALSE;
  5676. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5677. if glext_ExtensionSupported('GL_EXT_packed_depth_stencil', extstring) then
  5678. begin
  5679. Result := TRUE;
  5680. end;
  5681. end;
  5682. function Load_GL_EXT_packed_pixels: Boolean;
  5683. var
  5684. extstring: String;
  5685. begin
  5686. Result := FALSE;
  5687. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5688. if glext_ExtensionSupported('GL_EXT_packed_pixels', extstring) then
  5689. begin
  5690. Result := TRUE;
  5691. end;
  5692. end;
  5693. function Load_GL_EXT_paletted_texture: Boolean;
  5694. var
  5695. extstring: String;
  5696. begin
  5697. Result := FALSE;
  5698. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5699. if glext_ExtensionSupported('GL_EXT_paletted_texture', extstring) then
  5700. begin
  5701. glColorTableEXT := wglGetProcAddress('glColorTableEXT');
  5702. if not Assigned(glColorTableEXT) then Exit;
  5703. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  5704. if not Assigned(glColorSubTableEXT) then Exit;
  5705. glGetColorTableEXT := wglGetProcAddress('glGetColorTableEXT');
  5706. if not Assigned(glGetColorTableEXT) then Exit;
  5707. glGetColorTableParameterivEXT := wglGetProcAddress('glGetColorTableParameterivEXT');
  5708. if not Assigned(glGetColorTableParameterivEXT) then Exit;
  5709. glGetColorTableParameterfvEXT := wglGetProcAddress('glGetColorTableParameterfvEXT');
  5710. if not Assigned(glGetColorTableParameterfvEXT) then Exit;
  5711. Result := TRUE;
  5712. end;
  5713. end;
  5714. function Load_GL_EXT_point_parameters: Boolean;
  5715. var
  5716. extstring: String;
  5717. begin
  5718. Result := FALSE;
  5719. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5720. if glext_ExtensionSupported('GL_EXT_point_parameters', extstring) then
  5721. begin
  5722. glPointParameterfEXT := wglGetProcAddress('glPointParameterfEXT');
  5723. if not Assigned(glPointParameterfEXT) then Exit;
  5724. glPointParameterfvEXT := wglGetProcAddress('glPointParameterfvEXT');
  5725. if not Assigned(glPointParameterfvEXT) then Exit;
  5726. Result := TRUE;
  5727. end;
  5728. end;
  5729. function Load_GL_EXT_polygon_offset: Boolean;
  5730. var
  5731. extstring: String;
  5732. begin
  5733. Result := FALSE;
  5734. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5735. if glext_ExtensionSupported('GL_EXT_polygon_offset', extstring) then
  5736. begin
  5737. glPolygonOffsetEXT := wglGetProcAddress('glPolygonOffsetEXT');
  5738. if not Assigned(glPolygonOffsetEXT) then Exit;
  5739. Result := TRUE;
  5740. end;
  5741. end;
  5742. function Load_GL_EXT_secondary_color: Boolean;
  5743. var
  5744. extstring: String;
  5745. begin
  5746. Result := FALSE;
  5747. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5748. if glext_ExtensionSupported('GL_EXT_secondary_color', extstring) then
  5749. begin
  5750. glSecondaryColor3bEXT := wglGetProcAddress('glSecondaryColor3bEXT');
  5751. if not Assigned(glSecondaryColor3bEXT) then Exit;
  5752. glSecondaryColor3sEXT := wglGetProcAddress('glSecondaryColor3sEXT');
  5753. if not Assigned(glSecondaryColor3sEXT) then Exit;
  5754. glSecondaryColor3iEXT := wglGetProcAddress('glSecondaryColor3iEXT');
  5755. if not Assigned(glSecondaryColor3iEXT) then Exit;
  5756. glSecondaryColor3fEXT := wglGetProcAddress('glSecondaryColor3fEXT');
  5757. if not Assigned(glSecondaryColor3fEXT) then Exit;
  5758. glSecondaryColor3dEXT := wglGetProcAddress('glSecondaryColor3dEXT');
  5759. if not Assigned(glSecondaryColor3dEXT) then Exit;
  5760. glSecondaryColor3ubEXT := wglGetProcAddress('glSecondaryColor3ubEXT');
  5761. if not Assigned(glSecondaryColor3ubEXT) then Exit;
  5762. glSecondaryColor3usEXT := wglGetProcAddress('glSecondaryColor3usEXT');
  5763. if not Assigned(glSecondaryColor3usEXT) then Exit;
  5764. glSecondaryColor3uiEXT := wglGetProcAddress('glSecondaryColor3uiEXT');
  5765. if not Assigned(glSecondaryColor3uiEXT) then Exit;
  5766. glSecondaryColor3bvEXT := wglGetProcAddress('glSecondaryColor3bvEXT');
  5767. if not Assigned(glSecondaryColor3bvEXT) then Exit;
  5768. glSecondaryColor3svEXT := wglGetProcAddress('glSecondaryColor3svEXT');
  5769. if not Assigned(glSecondaryColor3svEXT) then Exit;
  5770. glSecondaryColor3ivEXT := wglGetProcAddress('glSecondaryColor3ivEXT');
  5771. if not Assigned(glSecondaryColor3ivEXT) then Exit;
  5772. glSecondaryColor3fvEXT := wglGetProcAddress('glSecondaryColor3fvEXT');
  5773. if not Assigned(glSecondaryColor3fvEXT) then Exit;
  5774. glSecondaryColor3dvEXT := wglGetProcAddress('glSecondaryColor3dvEXT');
  5775. if not Assigned(glSecondaryColor3dvEXT) then Exit;
  5776. glSecondaryColor3ubvEXT := wglGetProcAddress('glSecondaryColor3ubvEXT');
  5777. if not Assigned(glSecondaryColor3ubvEXT) then Exit;
  5778. glSecondaryColor3usvEXT := wglGetProcAddress('glSecondaryColor3usvEXT');
  5779. if not Assigned(glSecondaryColor3usvEXT) then Exit;
  5780. glSecondaryColor3uivEXT := wglGetProcAddress('glSecondaryColor3uivEXT');
  5781. if not Assigned(glSecondaryColor3uivEXT) then Exit;
  5782. glSecondaryColorPointerEXT := wglGetProcAddress('glSecondaryColorPointerEXT');
  5783. if not Assigned(glSecondaryColorPointerEXT) then Exit;
  5784. Result := TRUE;
  5785. end;
  5786. end;
  5787. function Load_GL_EXT_separate_specular_color: Boolean;
  5788. var
  5789. extstring: String;
  5790. begin
  5791. Result := FALSE;
  5792. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5793. if glext_ExtensionSupported('GL_EXT_separate_specular_color', extstring) then
  5794. begin
  5795. Result := TRUE;
  5796. end;
  5797. end;
  5798. function Load_GL_EXT_shadow_funcs: Boolean;
  5799. var
  5800. extstring: String;
  5801. begin
  5802. Result := FALSE;
  5803. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5804. if glext_ExtensionSupported('GL_EXT_shadow_funcs', extstring) then
  5805. begin
  5806. Result := TRUE;
  5807. end;
  5808. end;
  5809. function Load_GL_EXT_shared_texture_palette: Boolean;
  5810. var
  5811. extstring: String;
  5812. begin
  5813. Result := FALSE;
  5814. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5815. if glext_ExtensionSupported('GL_EXT_shared_texture_palette', extstring) then
  5816. begin
  5817. Result := TRUE;
  5818. end;
  5819. end;
  5820. function Load_GL_EXT_stencil_two_side: Boolean;
  5821. var
  5822. extstring: String;
  5823. begin
  5824. Result := FALSE;
  5825. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5826. if glext_ExtensionSupported('GL_EXT_stencil_two_side', extstring) then
  5827. begin
  5828. glActiveStencilFaceEXT := wglGetProcAddress('glActiveStencilFaceEXT');
  5829. if not Assigned(glActiveStencilFaceEXT) then Exit;
  5830. Result := TRUE;
  5831. end;
  5832. end;
  5833. function Load_GL_EXT_stencil_wrap: Boolean;
  5834. var
  5835. extstring: String;
  5836. begin
  5837. Result := FALSE;
  5838. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5839. if glext_ExtensionSupported('GL_EXT_stencil_wrap', extstring) then
  5840. begin
  5841. Result := TRUE;
  5842. end;
  5843. end;
  5844. function Load_GL_EXT_subtexture: Boolean;
  5845. var
  5846. extstring: String;
  5847. begin
  5848. Result := FALSE;
  5849. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5850. if glext_ExtensionSupported('GL_EXT_subtexture', extstring) then
  5851. begin
  5852. glTexSubImage1DEXT := wglGetProcAddress('glTexSubImage1DEXT');
  5853. if not Assigned(glTexSubImage1DEXT) then Exit;
  5854. glTexSubImage2DEXT := wglGetProcAddress('glTexSubImage2DEXT');
  5855. if not Assigned(glTexSubImage2DEXT) then Exit;
  5856. glTexSubImage3DEXT := wglGetProcAddress('glTexSubImage3DEXT');
  5857. if not Assigned(glTexSubImage3DEXT) then Exit;
  5858. Result := TRUE;
  5859. end;
  5860. end;
  5861. function Load_GL_EXT_texture3D: Boolean;
  5862. var
  5863. extstring: String;
  5864. begin
  5865. Result := FALSE;
  5866. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5867. if glext_ExtensionSupported('GL_EXT_texture3D', extstring) then
  5868. begin
  5869. glTexImage3DEXT := wglGetProcAddress('glTexImage3DEXT');
  5870. if not Assigned(glTexImage3DEXT) then Exit;
  5871. Result := TRUE;
  5872. end;
  5873. end;
  5874. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  5875. var
  5876. extstring: String;
  5877. begin
  5878. Result := FALSE;
  5879. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5880. if glext_ExtensionSupported('GL_EXT_texture_compression_s3tc', extstring) then
  5881. begin
  5882. Result := TRUE;
  5883. end;
  5884. end;
  5885. function Load_GL_EXT_texture_env_add: Boolean;
  5886. var
  5887. extstring: String;
  5888. begin
  5889. Result := FALSE;
  5890. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5891. if glext_ExtensionSupported('GL_EXT_texture_env_add', extstring) then
  5892. begin
  5893. Result := TRUE;
  5894. end;
  5895. end;
  5896. function Load_GL_EXT_texture_env_combine: Boolean;
  5897. var
  5898. extstring: String;
  5899. begin
  5900. Result := FALSE;
  5901. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5902. if glext_ExtensionSupported('GL_EXT_texture_env_combine', extstring) then
  5903. begin
  5904. Result := TRUE;
  5905. end;
  5906. end;
  5907. function Load_GL_EXT_texture_env_dot3: Boolean;
  5908. var
  5909. extstring: String;
  5910. begin
  5911. Result := FALSE;
  5912. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5913. if glext_ExtensionSupported('GL_EXT_texture_env_dot3', extstring) then
  5914. begin
  5915. Result := TRUE;
  5916. end;
  5917. end;
  5918. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  5919. var
  5920. extstring: String;
  5921. begin
  5922. Result := FALSE;
  5923. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5924. if glext_ExtensionSupported('GL_EXT_texture_filter_anisotropic', extstring) then
  5925. begin
  5926. Result := TRUE;
  5927. end;
  5928. end;
  5929. function Load_GL_EXT_texture_lod_bias: Boolean;
  5930. var
  5931. extstring: String;
  5932. begin
  5933. Result := FALSE;
  5934. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5935. if glext_ExtensionSupported('GL_EXT_texture_lod_bias', extstring) then
  5936. begin
  5937. Result := TRUE;
  5938. end;
  5939. end;
  5940. function Load_GL_EXT_texture_object: Boolean;
  5941. var
  5942. extstring: String;
  5943. begin
  5944. Result := FALSE;
  5945. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5946. if glext_ExtensionSupported('GL_EXT_texture_object', extstring) then
  5947. begin
  5948. glGenTexturesEXT := wglGetProcAddress('glGenTexturesEXT');
  5949. if not Assigned(glGenTexturesEXT) then Exit;
  5950. glDeleteTexturesEXT := wglGetProcAddress('glDeleteTexturesEXT');
  5951. if not Assigned(glDeleteTexturesEXT) then Exit;
  5952. glBindTextureEXT := wglGetProcAddress('glBindTextureEXT');
  5953. if not Assigned(glBindTextureEXT) then Exit;
  5954. glPrioritizeTexturesEXT := wglGetProcAddress('glPrioritizeTexturesEXT');
  5955. if not Assigned(glPrioritizeTexturesEXT) then Exit;
  5956. glAreTexturesResidentEXT := wglGetProcAddress('glAreTexturesResidentEXT');
  5957. if not Assigned(glAreTexturesResidentEXT) then Exit;
  5958. glIsTextureEXT := wglGetProcAddress('glIsTextureEXT');
  5959. if not Assigned(glIsTextureEXT) then Exit;
  5960. Result := TRUE;
  5961. end;
  5962. end;
  5963. function Load_GL_EXT_vertex_array: Boolean;
  5964. var
  5965. extstring: String;
  5966. begin
  5967. Result := FALSE;
  5968. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5969. if glext_ExtensionSupported('GL_EXT_vertex_array', extstring) then
  5970. begin
  5971. glArrayElementEXT := wglGetProcAddress('glArrayElementEXT');
  5972. if not Assigned(glArrayElementEXT) then Exit;
  5973. glDrawArraysEXT := wglGetProcAddress('glDrawArraysEXT');
  5974. if not Assigned(glDrawArraysEXT) then Exit;
  5975. glVertexPointerEXT := wglGetProcAddress('glVertexPointerEXT');
  5976. if not Assigned(glVertexPointerEXT) then Exit;
  5977. glNormalPointerEXT := wglGetProcAddress('glNormalPointerEXT');
  5978. if not Assigned(glNormalPointerEXT) then Exit;
  5979. glColorPointerEXT := wglGetProcAddress('glColorPointerEXT');
  5980. if not Assigned(glColorPointerEXT) then Exit;
  5981. glIndexPointerEXT := wglGetProcAddress('glIndexPointerEXT');
  5982. if not Assigned(glIndexPointerEXT) then Exit;
  5983. glTexCoordPointerEXT := wglGetProcAddress('glTexCoordPointerEXT');
  5984. if not Assigned(glTexCoordPointerEXT) then Exit;
  5985. glEdgeFlagPointerEXT := wglGetProcAddress('glEdgeFlagPointerEXT');
  5986. if not Assigned(glEdgeFlagPointerEXT) then Exit;
  5987. glGetPointervEXT := wglGetProcAddress('glGetPointervEXT');
  5988. if not Assigned(glGetPointervEXT) then Exit;
  5989. Result := TRUE;
  5990. end;
  5991. end;
  5992. function Load_GL_EXT_vertex_shader: Boolean;
  5993. var
  5994. extstring: String;
  5995. begin
  5996. Result := FALSE;
  5997. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5998. if glext_ExtensionSupported('GL_EXT_vertex_shader', extstring) then
  5999. begin
  6000. glBeginVertexShaderEXT := wglGetProcAddress('glBeginVertexShaderEXT');
  6001. if not Assigned(glBeginVertexShaderEXT) then Exit;
  6002. glEndVertexShaderEXT := wglGetProcAddress('glEndVertexShaderEXT');
  6003. if not Assigned(glEndVertexShaderEXT) then Exit;
  6004. glBindVertexShaderEXT := wglGetProcAddress('glBindVertexShaderEXT');
  6005. if not Assigned(glBindVertexShaderEXT) then Exit;
  6006. glGenVertexShadersEXT := wglGetProcAddress('glGenVertexShadersEXT');
  6007. if not Assigned(glGenVertexShadersEXT) then Exit;
  6008. glDeleteVertexShaderEXT := wglGetProcAddress('glDeleteVertexShaderEXT');
  6009. if not Assigned(glDeleteVertexShaderEXT) then Exit;
  6010. glShaderOp1EXT := wglGetProcAddress('glShaderOp1EXT');
  6011. if not Assigned(glShaderOp1EXT) then Exit;
  6012. glShaderOp2EXT := wglGetProcAddress('glShaderOp2EXT');
  6013. if not Assigned(glShaderOp2EXT) then Exit;
  6014. glShaderOp3EXT := wglGetProcAddress('glShaderOp3EXT');
  6015. if not Assigned(glShaderOp3EXT) then Exit;
  6016. glSwizzleEXT := wglGetProcAddress('glSwizzleEXT');
  6017. if not Assigned(glSwizzleEXT) then Exit;
  6018. glWriteMaskEXT := wglGetProcAddress('glWriteMaskEXT');
  6019. if not Assigned(glWriteMaskEXT) then Exit;
  6020. glInsertComponentEXT := wglGetProcAddress('glInsertComponentEXT');
  6021. if not Assigned(glInsertComponentEXT) then Exit;
  6022. glExtractComponentEXT := wglGetProcAddress('glExtractComponentEXT');
  6023. if not Assigned(glExtractComponentEXT) then Exit;
  6024. glGenSymbolsEXT := wglGetProcAddress('glGenSymbolsEXT');
  6025. if not Assigned(glGenSymbolsEXT) then Exit;
  6026. glSetInvariantEXT := wglGetProcAddress('glSetInvariantEXT');
  6027. if not Assigned(glSetInvariantEXT) then Exit;
  6028. glSetLocalConstantEXT := wglGetProcAddress('glSetLocalConstantEXT');
  6029. if not Assigned(glSetLocalConstantEXT) then Exit;
  6030. glVariantbvEXT := wglGetProcAddress('glVariantbvEXT');
  6031. if not Assigned(glVariantbvEXT) then Exit;
  6032. glVariantsvEXT := wglGetProcAddress('glVariantsvEXT');
  6033. if not Assigned(glVariantsvEXT) then Exit;
  6034. glVariantivEXT := wglGetProcAddress('glVariantivEXT');
  6035. if not Assigned(glVariantivEXT) then Exit;
  6036. glVariantfvEXT := wglGetProcAddress('glVariantfvEXT');
  6037. if not Assigned(glVariantfvEXT) then Exit;
  6038. glVariantdvEXT := wglGetProcAddress('glVariantdvEXT');
  6039. if not Assigned(glVariantdvEXT) then Exit;
  6040. glVariantubvEXT := wglGetProcAddress('glVariantubvEXT');
  6041. if not Assigned(glVariantubvEXT) then Exit;
  6042. glVariantusvEXT := wglGetProcAddress('glVariantusvEXT');
  6043. if not Assigned(glVariantusvEXT) then Exit;
  6044. glVariantuivEXT := wglGetProcAddress('glVariantuivEXT');
  6045. if not Assigned(glVariantuivEXT) then Exit;
  6046. glVariantPointerEXT := wglGetProcAddress('glVariantPointerEXT');
  6047. if not Assigned(glVariantPointerEXT) then Exit;
  6048. glEnableVariantClientStateEXT := wglGetProcAddress('glEnableVariantClientStateEXT');
  6049. if not Assigned(glEnableVariantClientStateEXT) then Exit;
  6050. glDisableVariantClientStateEXT := wglGetProcAddress('glDisableVariantClientStateEXT');
  6051. if not Assigned(glDisableVariantClientStateEXT) then Exit;
  6052. glBindLightParameterEXT := wglGetProcAddress('glBindLightParameterEXT');
  6053. if not Assigned(glBindLightParameterEXT) then Exit;
  6054. glBindMaterialParameterEXT := wglGetProcAddress('glBindMaterialParameterEXT');
  6055. if not Assigned(glBindMaterialParameterEXT) then Exit;
  6056. glBindTexGenParameterEXT := wglGetProcAddress('glBindTexGenParameterEXT');
  6057. if not Assigned(glBindTexGenParameterEXT) then Exit;
  6058. glBindTextureUnitParameterEXT := wglGetProcAddress('glBindTextureUnitParameterEXT');
  6059. if not Assigned(glBindTextureUnitParameterEXT) then Exit;
  6060. glBindParameterEXT := wglGetProcAddress('glBindParameterEXT');
  6061. if not Assigned(glBindParameterEXT) then Exit;
  6062. glIsVariantEnabledEXT := wglGetProcAddress('glIsVariantEnabledEXT');
  6063. if not Assigned(glIsVariantEnabledEXT) then Exit;
  6064. glGetVariantBooleanvEXT := wglGetProcAddress('glGetVariantBooleanvEXT');
  6065. if not Assigned(glGetVariantBooleanvEXT) then Exit;
  6066. glGetVariantIntegervEXT := wglGetProcAddress('glGetVariantIntegervEXT');
  6067. if not Assigned(glGetVariantIntegervEXT) then Exit;
  6068. glGetVariantFloatvEXT := wglGetProcAddress('glGetVariantFloatvEXT');
  6069. if not Assigned(glGetVariantFloatvEXT) then Exit;
  6070. glGetVariantPointervEXT := wglGetProcAddress('glGetVariantPointervEXT');
  6071. if not Assigned(glGetVariantPointervEXT) then Exit;
  6072. glGetInvariantBooleanvEXT := wglGetProcAddress('glGetInvariantBooleanvEXT');
  6073. if not Assigned(glGetInvariantBooleanvEXT) then Exit;
  6074. glGetInvariantIntegervEXT := wglGetProcAddress('glGetInvariantIntegervEXT');
  6075. if not Assigned(glGetInvariantIntegervEXT) then Exit;
  6076. glGetInvariantFloatvEXT := wglGetProcAddress('glGetInvariantFloatvEXT');
  6077. if not Assigned(glGetInvariantFloatvEXT) then Exit;
  6078. glGetLocalConstantBooleanvEXT := wglGetProcAddress('glGetLocalConstantBooleanvEXT');
  6079. if not Assigned(glGetLocalConstantBooleanvEXT) then Exit;
  6080. glGetLocalConstantIntegervEXT := wglGetProcAddress('glGetLocalConstantIntegervEXT');
  6081. if not Assigned(glGetLocalConstantIntegervEXT) then Exit;
  6082. glGetLocalConstantFloatvEXT := wglGetProcAddress('glGetLocalConstantFloatvEXT');
  6083. if not Assigned(glGetLocalConstantFloatvEXT) then Exit;
  6084. Result := TRUE;
  6085. end;
  6086. end;
  6087. function Load_GL_EXT_vertex_weighting: Boolean;
  6088. var
  6089. extstring: String;
  6090. begin
  6091. Result := FALSE;
  6092. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6093. if glext_ExtensionSupported('GL_EXT_vertex_weighting', extstring) then
  6094. begin
  6095. glVertexWeightfEXT := wglGetProcAddress('glVertexWeightfEXT');
  6096. if not Assigned(glVertexWeightfEXT) then Exit;
  6097. glVertexWeightfvEXT := wglGetProcAddress('glVertexWeightfvEXT');
  6098. if not Assigned(glVertexWeightfvEXT) then Exit;
  6099. glVertexWeightPointerEXT := wglGetProcAddress('glVertexWeightPointerEXT');
  6100. if not Assigned(glVertexWeightPointerEXT) then Exit;
  6101. Result := TRUE;
  6102. end;
  6103. end;
  6104. function Load_GL_HP_occlusion_test: Boolean;
  6105. var
  6106. extstring: String;
  6107. begin
  6108. Result := FALSE;
  6109. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6110. if glext_ExtensionSupported('GL_HP_occlusion_test', extstring) then
  6111. begin
  6112. Result := TRUE;
  6113. end;
  6114. end;
  6115. function Load_GL_NV_blend_square: Boolean;
  6116. var
  6117. extstring: String;
  6118. begin
  6119. Result := FALSE;
  6120. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6121. if glext_ExtensionSupported('GL_NV_blend_square', extstring) then
  6122. begin
  6123. Result := TRUE;
  6124. end;
  6125. end;
  6126. function Load_GL_NV_copy_depth_to_color: Boolean;
  6127. var
  6128. extstring: String;
  6129. begin
  6130. Result := FALSE;
  6131. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6132. if glext_ExtensionSupported('GL_NV_copy_depth_to_color', extstring) then
  6133. begin
  6134. Result := TRUE;
  6135. end;
  6136. end;
  6137. function Load_GL_NV_depth_clamp: Boolean;
  6138. var
  6139. extstring: String;
  6140. begin
  6141. Result := FALSE;
  6142. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6143. if glext_ExtensionSupported('GL_NV_depth_clamp', extstring) then
  6144. begin
  6145. Result := TRUE;
  6146. end;
  6147. end;
  6148. function Load_GL_NV_evaluators: Boolean;
  6149. var
  6150. extstring: String;
  6151. begin
  6152. Result := FALSE;
  6153. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6154. if glext_ExtensionSupported('GL_NV_evaluators', extstring) then
  6155. begin
  6156. glMapControlPointsNV := wglGetProcAddress('glMapControlPointsNV');
  6157. if not Assigned(glMapControlPointsNV) then Exit;
  6158. glMapParameterivNV := wglGetProcAddress('glMapParameterivNV');
  6159. if not Assigned(glMapParameterivNV) then Exit;
  6160. glMapParameterfvNV := wglGetProcAddress('glMapParameterfvNV');
  6161. if not Assigned(glMapParameterfvNV) then Exit;
  6162. glGetMapControlPointsNV := wglGetProcAddress('glGetMapControlPointsNV');
  6163. if not Assigned(glGetMapControlPointsNV) then Exit;
  6164. glGetMapParameterivNV := wglGetProcAddress('glGetMapParameterivNV');
  6165. if not Assigned(glGetMapParameterivNV) then Exit;
  6166. glGetMapParameterfvNV := wglGetProcAddress('glGetMapParameterfvNV');
  6167. if not Assigned(glGetMapParameterfvNV) then Exit;
  6168. glGetMapAttribParameterivNV := wglGetProcAddress('glGetMapAttribParameterivNV');
  6169. if not Assigned(glGetMapAttribParameterivNV) then Exit;
  6170. glGetMapAttribParameterfvNV := wglGetProcAddress('glGetMapAttribParameterfvNV');
  6171. if not Assigned(glGetMapAttribParameterfvNV) then Exit;
  6172. glEvalMapsNV := wglGetProcAddress('glEvalMapsNV');
  6173. if not Assigned(glEvalMapsNV) then Exit;
  6174. Result := TRUE;
  6175. end;
  6176. end;
  6177. function Load_GL_NV_fence: Boolean;
  6178. var
  6179. extstring: String;
  6180. begin
  6181. Result := FALSE;
  6182. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6183. if glext_ExtensionSupported('GL_NV_fence', extstring) then
  6184. begin
  6185. glGenFencesNV := wglGetProcAddress('glGenFencesNV');
  6186. if not Assigned(glGenFencesNV) then Exit;
  6187. glDeleteFencesNV := wglGetProcAddress('glDeleteFencesNV');
  6188. if not Assigned(glDeleteFencesNV) then Exit;
  6189. glSetFenceNV := wglGetProcAddress('glSetFenceNV');
  6190. if not Assigned(glSetFenceNV) then Exit;
  6191. glTestFenceNV := wglGetProcAddress('glTestFenceNV');
  6192. if not Assigned(glTestFenceNV) then Exit;
  6193. glFinishFenceNV := wglGetProcAddress('glFinishFenceNV');
  6194. if not Assigned(glFinishFenceNV) then Exit;
  6195. glIsFenceNV := wglGetProcAddress('glIsFenceNV');
  6196. if not Assigned(glIsFenceNV) then Exit;
  6197. glGetFenceivNV := wglGetProcAddress('glGetFenceivNV');
  6198. if not Assigned(glGetFenceivNV) then Exit;
  6199. Result := TRUE;
  6200. end;
  6201. end;
  6202. function Load_GL_NV_fog_distance: Boolean;
  6203. var
  6204. extstring: String;
  6205. begin
  6206. Result := FALSE;
  6207. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6208. if glext_ExtensionSupported('GL_NV_fog_distance', extstring) then
  6209. begin
  6210. Result := TRUE;
  6211. end;
  6212. end;
  6213. function Load_GL_NV_light_max_exponent: Boolean;
  6214. var
  6215. extstring: String;
  6216. begin
  6217. Result := FALSE;
  6218. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6219. if glext_ExtensionSupported('GL_NV_light_max_exponent', extstring) then
  6220. begin
  6221. Result := TRUE;
  6222. end;
  6223. end;
  6224. function Load_GL_NV_multisample_filter_hint: Boolean;
  6225. var
  6226. extstring: String;
  6227. begin
  6228. Result := FALSE;
  6229. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6230. if glext_ExtensionSupported('GL_NV_multisample_filter_hint', extstring) then
  6231. begin
  6232. Result := TRUE;
  6233. end;
  6234. end;
  6235. function Load_GL_NV_occlusion_query: Boolean;
  6236. var
  6237. extstring: String;
  6238. begin
  6239. Result := FALSE;
  6240. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6241. if glext_ExtensionSupported('GL_NV_occlusion_query', extstring) then
  6242. begin
  6243. glGenOcclusionQueriesNV := wglGetProcAddress('glGenOcclusionQueriesNV');
  6244. if not Assigned(glGenOcclusionQueriesNV) then Exit;
  6245. glDeleteOcclusionQueriesNV := wglGetProcAddress('glDeleteOcclusionQueriesNV');
  6246. if not Assigned(glDeleteOcclusionQueriesNV) then Exit;
  6247. glIsOcclusionQueryNV := wglGetProcAddress('glIsOcclusionQueryNV');
  6248. if not Assigned(glIsOcclusionQueryNV) then Exit;
  6249. glBeginOcclusionQueryNV := wglGetProcAddress('glBeginOcclusionQueryNV');
  6250. if not Assigned(glBeginOcclusionQueryNV) then Exit;
  6251. glEndOcclusionQueryNV := wglGetProcAddress('glEndOcclusionQueryNV');
  6252. if not Assigned(glEndOcclusionQueryNV) then Exit;
  6253. glGetOcclusionQueryivNV := wglGetProcAddress('glGetOcclusionQueryivNV');
  6254. if not Assigned(glGetOcclusionQueryivNV) then Exit;
  6255. glGetOcclusionQueryuivNV := wglGetProcAddress('glGetOcclusionQueryuivNV');
  6256. if not Assigned(glGetOcclusionQueryuivNV) then Exit;
  6257. Result := TRUE;
  6258. end;
  6259. end;
  6260. function Load_GL_NV_packed_depth_stencil: Boolean;
  6261. var
  6262. extstring: String;
  6263. begin
  6264. Result := FALSE;
  6265. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6266. if glext_ExtensionSupported('GL_NV_packed_depth_stencil', extstring) then
  6267. begin
  6268. Result := TRUE;
  6269. end;
  6270. end;
  6271. function Load_GL_NV_point_sprite: Boolean;
  6272. var
  6273. extstring: String;
  6274. begin
  6275. Result := FALSE;
  6276. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6277. if glext_ExtensionSupported('GL_NV_point_sprite', extstring) then
  6278. begin
  6279. glPointParameteriNV := wglGetProcAddress('glPointParameteriNV');
  6280. if not Assigned(glPointParameteriNV) then Exit;
  6281. glPointParameterivNV := wglGetProcAddress('glPointParameterivNV');
  6282. if not Assigned(glPointParameterivNV) then Exit;
  6283. Result := TRUE;
  6284. end;
  6285. end;
  6286. function Load_GL_NV_register_combiners: Boolean;
  6287. var
  6288. extstring: String;
  6289. begin
  6290. Result := FALSE;
  6291. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6292. if glext_ExtensionSupported('GL_NV_register_combiners', extstring) then
  6293. begin
  6294. glCombinerParameterfvNV := wglGetProcAddress('glCombinerParameterfvNV');
  6295. if not Assigned(glCombinerParameterfvNV) then Exit;
  6296. glCombinerParameterivNV := wglGetProcAddress('glCombinerParameterivNV');
  6297. if not Assigned(glCombinerParameterivNV) then Exit;
  6298. glCombinerParameterfNV := wglGetProcAddress('glCombinerParameterfNV');
  6299. if not Assigned(glCombinerParameterfNV) then Exit;
  6300. glCombinerParameteriNV := wglGetProcAddress('glCombinerParameteriNV');
  6301. if not Assigned(glCombinerParameteriNV) then Exit;
  6302. glCombinerInputNV := wglGetProcAddress('glCombinerInputNV');
  6303. if not Assigned(glCombinerInputNV) then Exit;
  6304. glCombinerOutputNV := wglGetProcAddress('glCombinerOutputNV');
  6305. if not Assigned(glCombinerOutputNV) then Exit;
  6306. glFinalCombinerInputNV := wglGetProcAddress('glFinalCombinerInputNV');
  6307. if not Assigned(glFinalCombinerInputNV) then Exit;
  6308. glGetCombinerInputParameterfvNV := wglGetProcAddress('glGetCombinerInputParameterfvNV');
  6309. if not Assigned(glGetCombinerInputParameterfvNV) then Exit;
  6310. glGetCombinerInputParameterivNV := wglGetProcAddress('glGetCombinerInputParameterivNV');
  6311. if not Assigned(glGetCombinerInputParameterivNV) then Exit;
  6312. glGetCombinerOutputParameterfvNV := wglGetProcAddress('glGetCombinerOutputParameterfvNV');
  6313. if not Assigned(glGetCombinerOutputParameterfvNV) then Exit;
  6314. glGetCombinerOutputParameterivNV := wglGetProcAddress('glGetCombinerOutputParameterivNV');
  6315. if not Assigned(glGetCombinerOutputParameterivNV) then Exit;
  6316. glGetFinalCombinerInputParameterfvNV := wglGetProcAddress('glGetFinalCombinerInputParameterfvNV');
  6317. if not Assigned(glGetFinalCombinerInputParameterfvNV) then Exit;
  6318. glGetFinalCombinerInputParameterivNV := wglGetProcAddress('glGetFinalCombinerInputParameterivNV');
  6319. if not Assigned(glGetFinalCombinerInputParameterivNV) then Exit;
  6320. Result := TRUE;
  6321. end;
  6322. end;
  6323. function Load_GL_NV_register_combiners2: Boolean;
  6324. var
  6325. extstring: String;
  6326. begin
  6327. Result := FALSE;
  6328. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6329. if glext_ExtensionSupported('GL_NV_register_combiners2', extstring) then
  6330. begin
  6331. glCombinerStageParameterfvNV := wglGetProcAddress('glCombinerStageParameterfvNV');
  6332. if not Assigned(glCombinerStageParameterfvNV) then Exit;
  6333. glGetCombinerStageParameterfvNV := wglGetProcAddress('glGetCombinerStageParameterfvNV');
  6334. if not Assigned(glGetCombinerStageParameterfvNV) then Exit;
  6335. Result := TRUE;
  6336. end;
  6337. end;
  6338. function Load_GL_NV_texgen_emboss: Boolean;
  6339. var
  6340. extstring: String;
  6341. begin
  6342. Result := FALSE;
  6343. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6344. if glext_ExtensionSupported('GL_NV_texgen_emboss', extstring) then
  6345. begin
  6346. Result := TRUE;
  6347. end;
  6348. end;
  6349. function Load_GL_NV_texgen_reflection: Boolean;
  6350. var
  6351. extstring: String;
  6352. begin
  6353. Result := FALSE;
  6354. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6355. if glext_ExtensionSupported('GL_NV_texgen_reflection', extstring) then
  6356. begin
  6357. Result := TRUE;
  6358. end;
  6359. end;
  6360. function Load_GL_NV_texture_compression_vtc: Boolean;
  6361. var
  6362. extstring: String;
  6363. begin
  6364. Result := FALSE;
  6365. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6366. if glext_ExtensionSupported('GL_NV_texture_compression_vtc', extstring) then
  6367. begin
  6368. Result := TRUE;
  6369. end;
  6370. end;
  6371. function Load_GL_NV_texture_env_combine4: Boolean;
  6372. var
  6373. extstring: String;
  6374. begin
  6375. Result := FALSE;
  6376. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6377. if glext_ExtensionSupported('GL_NV_texture_env_combine4', extstring) then
  6378. begin
  6379. Result := TRUE;
  6380. end;
  6381. end;
  6382. function Load_GL_NV_texture_rectangle: Boolean;
  6383. var
  6384. extstring: String;
  6385. begin
  6386. Result := FALSE;
  6387. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6388. if glext_ExtensionSupported('GL_NV_texture_rectangle', extstring) then
  6389. begin
  6390. Result := TRUE;
  6391. end;
  6392. end;
  6393. function Load_GL_NV_texture_shader: Boolean;
  6394. var
  6395. extstring: String;
  6396. begin
  6397. Result := FALSE;
  6398. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6399. if glext_ExtensionSupported('GL_NV_texture_shader', extstring) then
  6400. begin
  6401. Result := TRUE;
  6402. end;
  6403. end;
  6404. function Load_GL_NV_texture_shader2: Boolean;
  6405. var
  6406. extstring: String;
  6407. begin
  6408. Result := FALSE;
  6409. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6410. if glext_ExtensionSupported('GL_NV_texture_shader2', extstring) then
  6411. begin
  6412. Result := TRUE;
  6413. end;
  6414. end;
  6415. function Load_GL_NV_texture_shader3: Boolean;
  6416. var
  6417. extstring: String;
  6418. begin
  6419. Result := FALSE;
  6420. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6421. if glext_ExtensionSupported('GL_NV_texture_shader3', extstring) then
  6422. begin
  6423. Result := TRUE;
  6424. end;
  6425. end;
  6426. function Load_GL_NV_vertex_array_range: Boolean;
  6427. var
  6428. extstring: String;
  6429. begin
  6430. Result := FALSE;
  6431. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6432. if glext_ExtensionSupported('GL_NV_vertex_array_range', extstring) then
  6433. begin
  6434. glVertexArrayRangeNV := wglGetProcAddress('glVertexArrayRangeNV');
  6435. if not Assigned(glVertexArrayRangeNV) then Exit;
  6436. glFlushVertexArrayRangeNV := wglGetProcAddress('glFlushVertexArrayRangeNV');
  6437. if not Assigned(glFlushVertexArrayRangeNV) then Exit;
  6438. {$IFDEF Windows}
  6439. wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  6440. if not Assigned(wglAllocateMemoryNV) then Exit;
  6441. wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  6442. if not Assigned(wglFreeMemoryNV) then Exit;
  6443. {$ENDIF}
  6444. Result := TRUE;
  6445. end;
  6446. end;
  6447. function Load_GL_NV_vertex_array_range2: Boolean;
  6448. var
  6449. extstring: String;
  6450. begin
  6451. Result := FALSE;
  6452. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6453. if glext_ExtensionSupported('GL_NV_vertex_array_range2', extstring) then
  6454. begin
  6455. Result := TRUE;
  6456. end;
  6457. end;
  6458. function Load_GL_NV_vertex_program: Boolean;
  6459. var
  6460. extstring: String;
  6461. begin
  6462. Result := FALSE;
  6463. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6464. if glext_ExtensionSupported('GL_NV_vertex_program', extstring) then
  6465. begin
  6466. glBindProgramNV := wglGetProcAddress('glBindProgramNV');
  6467. if not Assigned(glBindProgramNV) then Exit;
  6468. glDeleteProgramsNV := wglGetProcAddress('glDeleteProgramsNV');
  6469. if not Assigned(glDeleteProgramsNV) then Exit;
  6470. glExecuteProgramNV := wglGetProcAddress('glExecuteProgramNV');
  6471. if not Assigned(glExecuteProgramNV) then Exit;
  6472. glGenProgramsNV := wglGetProcAddress('glGenProgramsNV');
  6473. if not Assigned(glGenProgramsNV) then Exit;
  6474. glAreProgramsResidentNV := wglGetProcAddress('glAreProgramsResidentNV');
  6475. if not Assigned(glAreProgramsResidentNV) then Exit;
  6476. glRequestResidentProgramsNV := wglGetProcAddress('glRequestResidentProgramsNV');
  6477. if not Assigned(glRequestResidentProgramsNV) then Exit;
  6478. glGetProgramParameterfvNV := wglGetProcAddress('glGetProgramParameterfvNV');
  6479. if not Assigned(glGetProgramParameterfvNV) then Exit;
  6480. glGetProgramParameterdvNV := wglGetProcAddress('glGetProgramParameterdvNV');
  6481. if not Assigned(glGetProgramParameterdvNV) then Exit;
  6482. glGetProgramivNV := wglGetProcAddress('glGetProgramivNV');
  6483. if not Assigned(glGetProgramivNV) then Exit;
  6484. glGetProgramStringNV := wglGetProcAddress('glGetProgramStringNV');
  6485. if not Assigned(glGetProgramStringNV) then Exit;
  6486. glGetTrackMatrixivNV := wglGetProcAddress('glGetTrackMatrixivNV');
  6487. if not Assigned(glGetTrackMatrixivNV) then Exit;
  6488. glGetVertexAttribdvNV := wglGetProcAddress('glGetVertexAttribdvNV');
  6489. if not Assigned(glGetVertexAttribdvNV) then Exit;
  6490. glGetVertexAttribfvNV := wglGetProcAddress('glGetVertexAttribfvNV');
  6491. if not Assigned(glGetVertexAttribfvNV) then Exit;
  6492. glGetVertexAttribivNV := wglGetProcAddress('glGetVertexAttribivNV');
  6493. if not Assigned(glGetVertexAttribivNV) then Exit;
  6494. glGetVertexAttribPointervNV := wglGetProcAddress('glGetVertexAttribPointervNV');
  6495. if not Assigned(glGetVertexAttribPointervNV) then Exit;
  6496. glIsProgramNV := wglGetProcAddress('glIsProgramNV');
  6497. if not Assigned(glIsProgramNV) then Exit;
  6498. glLoadProgramNV := wglGetProcAddress('glLoadProgramNV');
  6499. if not Assigned(glLoadProgramNV) then Exit;
  6500. glProgramParameter4fNV := wglGetProcAddress('glProgramParameter4fNV');
  6501. if not Assigned(glProgramParameter4fNV) then Exit;
  6502. glProgramParameter4fvNV := wglGetProcAddress('glProgramParameter4fvNV');
  6503. if not Assigned(glProgramParameter4fvNV) then Exit;
  6504. glProgramParameters4dvNV := wglGetProcAddress('glProgramParameters4dvNV');
  6505. if not Assigned(glProgramParameters4dvNV) then Exit;
  6506. glProgramParameters4fvNV := wglGetProcAddress('glProgramParameters4fvNV');
  6507. if not Assigned(glProgramParameters4fvNV) then Exit;
  6508. glTrackMatrixNV := wglGetProcAddress('glTrackMatrixNV');
  6509. if not Assigned(glTrackMatrixNV) then Exit;
  6510. glVertexAttribPointerNV := wglGetProcAddress('glVertexAttribPointerNV');
  6511. if not Assigned(glVertexAttribPointerNV) then Exit;
  6512. glVertexAttrib1sNV := wglGetProcAddress('glVertexAttrib1sNV');
  6513. if not Assigned(glVertexAttrib1sNV) then Exit;
  6514. glVertexAttrib1fNV := wglGetProcAddress('glVertexAttrib1fNV');
  6515. if not Assigned(glVertexAttrib1fNV) then Exit;
  6516. glVertexAttrib1dNV := wglGetProcAddress('glVertexAttrib1dNV');
  6517. if not Assigned(glVertexAttrib1dNV) then Exit;
  6518. glVertexAttrib2sNV := wglGetProcAddress('glVertexAttrib2sNV');
  6519. if not Assigned(glVertexAttrib2sNV) then Exit;
  6520. glVertexAttrib2fNV := wglGetProcAddress('glVertexAttrib2fNV');
  6521. if not Assigned(glVertexAttrib2fNV) then Exit;
  6522. glVertexAttrib2dNV := wglGetProcAddress('glVertexAttrib2dNV');
  6523. if not Assigned(glVertexAttrib2dNV) then Exit;
  6524. glVertexAttrib3sNV := wglGetProcAddress('glVertexAttrib3sNV');
  6525. if not Assigned(glVertexAttrib3sNV) then Exit;
  6526. glVertexAttrib3fNV := wglGetProcAddress('glVertexAttrib3fNV');
  6527. if not Assigned(glVertexAttrib3fNV) then Exit;
  6528. glVertexAttrib3dNV := wglGetProcAddress('glVertexAttrib3dNV');
  6529. if not Assigned(glVertexAttrib3dNV) then Exit;
  6530. glVertexAttrib4sNV := wglGetProcAddress('glVertexAttrib4sNV');
  6531. if not Assigned(glVertexAttrib4sNV) then Exit;
  6532. glVertexAttrib4fNV := wglGetProcAddress('glVertexAttrib4fNV');
  6533. if not Assigned(glVertexAttrib4fNV) then Exit;
  6534. glVertexAttrib4dNV := wglGetProcAddress('glVertexAttrib4dNV');
  6535. if not Assigned(glVertexAttrib4dNV) then Exit;
  6536. glVertexAttrib4ubNV := wglGetProcAddress('glVertexAttrib4ubNV');
  6537. if not Assigned(glVertexAttrib4ubNV) then Exit;
  6538. glVertexAttrib1svNV := wglGetProcAddress('glVertexAttrib1svNV');
  6539. if not Assigned(glVertexAttrib1svNV) then Exit;
  6540. glVertexAttrib1fvNV := wglGetProcAddress('glVertexAttrib1fvNV');
  6541. if not Assigned(glVertexAttrib1fvNV) then Exit;
  6542. glVertexAttrib1dvNV := wglGetProcAddress('glVertexAttrib1dvNV');
  6543. if not Assigned(glVertexAttrib1dvNV) then Exit;
  6544. glVertexAttrib2svNV := wglGetProcAddress('glVertexAttrib2svNV');
  6545. if not Assigned(glVertexAttrib2svNV) then Exit;
  6546. glVertexAttrib2fvNV := wglGetProcAddress('glVertexAttrib2fvNV');
  6547. if not Assigned(glVertexAttrib2fvNV) then Exit;
  6548. glVertexAttrib2dvNV := wglGetProcAddress('glVertexAttrib2dvNV');
  6549. if not Assigned(glVertexAttrib2dvNV) then Exit;
  6550. glVertexAttrib3svNV := wglGetProcAddress('glVertexAttrib3svNV');
  6551. if not Assigned(glVertexAttrib3svNV) then Exit;
  6552. glVertexAttrib3fvNV := wglGetProcAddress('glVertexAttrib3fvNV');
  6553. if not Assigned(glVertexAttrib3fvNV) then Exit;
  6554. glVertexAttrib3dvNV := wglGetProcAddress('glVertexAttrib3dvNV');
  6555. if not Assigned(glVertexAttrib3dvNV) then Exit;
  6556. glVertexAttrib4svNV := wglGetProcAddress('glVertexAttrib4svNV');
  6557. if not Assigned(glVertexAttrib4svNV) then Exit;
  6558. glVertexAttrib4fvNV := wglGetProcAddress('glVertexAttrib4fvNV');
  6559. if not Assigned(glVertexAttrib4fvNV) then Exit;
  6560. glVertexAttrib4dvNV := wglGetProcAddress('glVertexAttrib4dvNV');
  6561. if not Assigned(glVertexAttrib4dvNV) then Exit;
  6562. glVertexAttrib4ubvNV := wglGetProcAddress('glVertexAttrib4ubvNV');
  6563. if not Assigned(glVertexAttrib4ubvNV) then Exit;
  6564. glVertexAttribs1svNV := wglGetProcAddress('glVertexAttribs1svNV');
  6565. if not Assigned(glVertexAttribs1svNV) then Exit;
  6566. glVertexAttribs1fvNV := wglGetProcAddress('glVertexAttribs1fvNV');
  6567. if not Assigned(glVertexAttribs1fvNV) then Exit;
  6568. glVertexAttribs1dvNV := wglGetProcAddress('glVertexAttribs1dvNV');
  6569. if not Assigned(glVertexAttribs1dvNV) then Exit;
  6570. glVertexAttribs2svNV := wglGetProcAddress('glVertexAttribs2svNV');
  6571. if not Assigned(glVertexAttribs2svNV) then Exit;
  6572. glVertexAttribs2fvNV := wglGetProcAddress('glVertexAttribs2fvNV');
  6573. if not Assigned(glVertexAttribs2fvNV) then Exit;
  6574. glVertexAttribs2dvNV := wglGetProcAddress('glVertexAttribs2dvNV');
  6575. if not Assigned(glVertexAttribs2dvNV) then Exit;
  6576. glVertexAttribs3svNV := wglGetProcAddress('glVertexAttribs3svNV');
  6577. if not Assigned(glVertexAttribs3svNV) then Exit;
  6578. glVertexAttribs3fvNV := wglGetProcAddress('glVertexAttribs3fvNV');
  6579. if not Assigned(glVertexAttribs3fvNV) then Exit;
  6580. glVertexAttribs3dvNV := wglGetProcAddress('glVertexAttribs3dvNV');
  6581. if not Assigned(glVertexAttribs3dvNV) then Exit;
  6582. glVertexAttribs4svNV := wglGetProcAddress('glVertexAttribs4svNV');
  6583. if not Assigned(glVertexAttribs4svNV) then Exit;
  6584. glVertexAttribs4fvNV := wglGetProcAddress('glVertexAttribs4fvNV');
  6585. if not Assigned(glVertexAttribs4fvNV) then Exit;
  6586. glVertexAttribs4dvNV := wglGetProcAddress('glVertexAttribs4dvNV');
  6587. if not Assigned(glVertexAttribs4dvNV) then Exit;
  6588. glVertexAttribs4ubvNV := wglGetProcAddress('glVertexAttribs4ubvNV');
  6589. if not Assigned(glVertexAttribs4ubvNV) then Exit;
  6590. Result := TRUE;
  6591. end;
  6592. end;
  6593. function Load_GL_NV_vertex_program1_1: Boolean;
  6594. var
  6595. extstring: String;
  6596. begin
  6597. Result := FALSE;
  6598. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6599. if glext_ExtensionSupported('GL_NV_vertex_program1_1', extstring) then
  6600. begin
  6601. Result := TRUE;
  6602. end;
  6603. end;
  6604. function Load_GL_ATI_element_array: Boolean;
  6605. var
  6606. extstring: String;
  6607. begin
  6608. Result := FALSE;
  6609. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6610. if glext_ExtensionSupported('GL_ATI_element_array', extstring) then
  6611. begin
  6612. glElementPointerATI := wglGetProcAddress('glElementPointerATI');
  6613. if not Assigned(glElementPointerATI) then Exit;
  6614. glDrawElementArrayATI := wglGetProcAddress('glDrawElementArrayATI');
  6615. if not Assigned(glDrawElementArrayATI) then Exit;
  6616. glDrawRangeElementArrayATI := wglGetProcAddress('glDrawRangeElementArrayATI');
  6617. if not Assigned(glDrawRangeElementArrayATI) then Exit;
  6618. Result := TRUE;
  6619. end;
  6620. end;
  6621. function Load_GL_ATI_envmap_bumpmap: Boolean;
  6622. var
  6623. extstring: String;
  6624. begin
  6625. Result := FALSE;
  6626. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6627. if glext_ExtensionSupported('GL_ATI_envmap_bumpmap', extstring) then
  6628. begin
  6629. glTexBumpParameterivATI := wglGetProcAddress('glTexBumpParameterivATI');
  6630. if not Assigned(glTexBumpParameterivATI) then Exit;
  6631. glTexBumpParameterfvATI := wglGetProcAddress('glTexBumpParameterfvATI');
  6632. if not Assigned(glTexBumpParameterfvATI) then Exit;
  6633. glGetTexBumpParameterivATI := wglGetProcAddress('glGetTexBumpParameterivATI');
  6634. if not Assigned(glGetTexBumpParameterivATI) then Exit;
  6635. glGetTexBumpParameterfvATI := wglGetProcAddress('glGetTexBumpParameterfvATI');
  6636. if not Assigned(glGetTexBumpParameterfvATI) then Exit;
  6637. Result := TRUE;
  6638. end;
  6639. end;
  6640. function Load_GL_ATI_fragment_shader: Boolean;
  6641. var
  6642. extstring: String;
  6643. begin
  6644. Result := FALSE;
  6645. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6646. if glext_ExtensionSupported('GL_ATI_fragment_shader', extstring) then
  6647. begin
  6648. glGenFragmentShadersATI := wglGetProcAddress('glGenFragmentShadersATI');
  6649. if not Assigned(glGenFragmentShadersATI) then Exit;
  6650. glBindFragmentShaderATI := wglGetProcAddress('glBindFragmentShaderATI');
  6651. if not Assigned(glBindFragmentShaderATI) then Exit;
  6652. glDeleteFragmentShaderATI := wglGetProcAddress('glDeleteFragmentShaderATI');
  6653. if not Assigned(glDeleteFragmentShaderATI) then Exit;
  6654. glBeginFragmentShaderATI := wglGetProcAddress('glBeginFragmentShaderATI');
  6655. if not Assigned(glBeginFragmentShaderATI) then Exit;
  6656. glEndFragmentShaderATI := wglGetProcAddress('glEndFragmentShaderATI');
  6657. if not Assigned(glEndFragmentShaderATI) then Exit;
  6658. glPassTexCoordATI := wglGetProcAddress('glPassTexCoordATI');
  6659. if not Assigned(glPassTexCoordATI) then Exit;
  6660. glSampleMapATI := wglGetProcAddress('glSampleMapATI');
  6661. if not Assigned(glSampleMapATI) then Exit;
  6662. glColorFragmentOp1ATI := wglGetProcAddress('glColorFragmentOp1ATI');
  6663. if not Assigned(glColorFragmentOp1ATI) then Exit;
  6664. glColorFragmentOp2ATI := wglGetProcAddress('glColorFragmentOp2ATI');
  6665. if not Assigned(glColorFragmentOp2ATI) then Exit;
  6666. glColorFragmentOp3ATI := wglGetProcAddress('glColorFragmentOp3ATI');
  6667. if not Assigned(glColorFragmentOp3ATI) then Exit;
  6668. glAlphaFragmentOp1ATI := wglGetProcAddress('glAlphaFragmentOp1ATI');
  6669. if not Assigned(glAlphaFragmentOp1ATI) then Exit;
  6670. glAlphaFragmentOp2ATI := wglGetProcAddress('glAlphaFragmentOp2ATI');
  6671. if not Assigned(glAlphaFragmentOp2ATI) then Exit;
  6672. glAlphaFragmentOp3ATI := wglGetProcAddress('glAlphaFragmentOp3ATI');
  6673. if not Assigned(glAlphaFragmentOp3ATI) then Exit;
  6674. glSetFragmentShaderConstantATI := wglGetProcAddress('glSetFragmentShaderConstantATI');
  6675. if not Assigned(glSetFragmentShaderConstantATI) then Exit;
  6676. Result := TRUE;
  6677. end;
  6678. end;
  6679. function Load_GL_ATI_pn_triangles: Boolean;
  6680. var
  6681. extstring: String;
  6682. begin
  6683. Result := FALSE;
  6684. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6685. if glext_ExtensionSupported('GL_ATI_pn_triangles', extstring) then
  6686. begin
  6687. glPNTrianglesiATI := wglGetProcAddress('glPNTrianglesiATI');
  6688. if not Assigned(glPNTrianglesiATI) then Exit;
  6689. glPNTrianglesfATI := wglGetProcAddress('glPNTrianglesfATI');
  6690. if not Assigned(glPNTrianglesfATI) then Exit;
  6691. Result := TRUE;
  6692. end;
  6693. end;
  6694. function Load_GL_ATI_texture_mirror_once: Boolean;
  6695. var
  6696. extstring: String;
  6697. begin
  6698. Result := FALSE;
  6699. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6700. if glext_ExtensionSupported('GL_ATI_texture_mirror_once', extstring) then
  6701. begin
  6702. Result := TRUE;
  6703. end;
  6704. end;
  6705. function Load_GL_ATI_vertex_array_object: Boolean;
  6706. var
  6707. extstring: String;
  6708. begin
  6709. Result := FALSE;
  6710. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6711. if glext_ExtensionSupported('GL_ATI_vertex_array_object', extstring) then
  6712. begin
  6713. glNewObjectBufferATI := wglGetProcAddress('glNewObjectBufferATI');
  6714. if not Assigned(glNewObjectBufferATI) then Exit;
  6715. glIsObjectBufferATI := wglGetProcAddress('glIsObjectBufferATI');
  6716. if not Assigned(glIsObjectBufferATI) then Exit;
  6717. glUpdateObjectBufferATI := wglGetProcAddress('glUpdateObjectBufferATI');
  6718. if not Assigned(glUpdateObjectBufferATI) then Exit;
  6719. glGetObjectBufferfvATI := wglGetProcAddress('glGetObjectBufferfvATI');
  6720. if not Assigned(glGetObjectBufferfvATI) then Exit;
  6721. glGetObjectBufferivATI := wglGetProcAddress('glGetObjectBufferivATI');
  6722. if not Assigned(glGetObjectBufferivATI) then Exit;
  6723. glDeleteObjectBufferATI := wglGetProcAddress('glDeleteObjectBufferATI');
  6724. if not Assigned(glDeleteObjectBufferATI) then Exit;
  6725. glArrayObjectATI := wglGetProcAddress('glArrayObjectATI');
  6726. if not Assigned(glArrayObjectATI) then Exit;
  6727. glGetArrayObjectfvATI := wglGetProcAddress('glGetArrayObjectfvATI');
  6728. if not Assigned(glGetArrayObjectfvATI) then Exit;
  6729. glGetArrayObjectivATI := wglGetProcAddress('glGetArrayObjectivATI');
  6730. if not Assigned(glGetArrayObjectivATI) then Exit;
  6731. glVariantArrayObjectATI := wglGetProcAddress('glVariantArrayObjectATI');
  6732. if not Assigned(glVariantArrayObjectATI) then Exit;
  6733. glGetVariantArrayObjectfvATI := wglGetProcAddress('glGetVariantArrayObjectfvATI');
  6734. if not Assigned(glGetVariantArrayObjectfvATI) then Exit;
  6735. glGetVariantArrayObjectivATI := wglGetProcAddress('glGetVariantArrayObjectivATI');
  6736. if not Assigned(glGetVariantArrayObjectivATI) then Exit;
  6737. Result := TRUE;
  6738. end;
  6739. end;
  6740. function Load_GL_ATI_vertex_streams: Boolean;
  6741. var
  6742. extstring: String;
  6743. begin
  6744. Result := FALSE;
  6745. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6746. if glext_ExtensionSupported('GL_ATI_vertex_streams', extstring) then
  6747. begin
  6748. glVertexStream1s := wglGetProcAddress('glVertexStream1s');
  6749. if not Assigned(glVertexStream1s) then Exit;
  6750. glVertexStream1i := wglGetProcAddress('glVertexStream1i');
  6751. if not Assigned(glVertexStream1i) then Exit;
  6752. glVertexStream1f := wglGetProcAddress('glVertexStream1f');
  6753. if not Assigned(glVertexStream1f) then Exit;
  6754. glVertexStream1d := wglGetProcAddress('glVertexStream1d');
  6755. if not Assigned(glVertexStream1d) then Exit;
  6756. glVertexStream1sv := wglGetProcAddress('glVertexStream1sv');
  6757. if not Assigned(glVertexStream1sv) then Exit;
  6758. glVertexStream1iv := wglGetProcAddress('glVertexStream1iv');
  6759. if not Assigned(glVertexStream1iv) then Exit;
  6760. glVertexStream1fv := wglGetProcAddress('glVertexStream1fv');
  6761. if not Assigned(glVertexStream1fv) then Exit;
  6762. glVertexStream1dv := wglGetProcAddress('glVertexStream1dv');
  6763. if not Assigned(glVertexStream1dv) then Exit;
  6764. glVertexStream2s := wglGetProcAddress('glVertexStream2s');
  6765. if not Assigned(glVertexStream2s) then Exit;
  6766. glVertexStream2i := wglGetProcAddress('glVertexStream2i');
  6767. if not Assigned(glVertexStream2i) then Exit;
  6768. glVertexStream2f := wglGetProcAddress('glVertexStream2f');
  6769. if not Assigned(glVertexStream2f) then Exit;
  6770. glVertexStream2d := wglGetProcAddress('glVertexStream2d');
  6771. if not Assigned(glVertexStream2d) then Exit;
  6772. glVertexStream2sv := wglGetProcAddress('glVertexStream2sv');
  6773. if not Assigned(glVertexStream2sv) then Exit;
  6774. glVertexStream2iv := wglGetProcAddress('glVertexStream2iv');
  6775. if not Assigned(glVertexStream2iv) then Exit;
  6776. glVertexStream2fv := wglGetProcAddress('glVertexStream2fv');
  6777. if not Assigned(glVertexStream2fv) then Exit;
  6778. glVertexStream2dv := wglGetProcAddress('glVertexStream2dv');
  6779. if not Assigned(glVertexStream2dv) then Exit;
  6780. glVertexStream3s := wglGetProcAddress('glVertexStream3s');
  6781. if not Assigned(glVertexStream3s) then Exit;
  6782. glVertexStream3i := wglGetProcAddress('glVertexStream3i');
  6783. if not Assigned(glVertexStream3i) then Exit;
  6784. glVertexStream3f := wglGetProcAddress('glVertexStream3f');
  6785. if not Assigned(glVertexStream3f) then Exit;
  6786. glVertexStream3d := wglGetProcAddress('glVertexStream3d');
  6787. if not Assigned(glVertexStream3d) then Exit;
  6788. glVertexStream3sv := wglGetProcAddress('glVertexStream3sv');
  6789. if not Assigned(glVertexStream3sv) then Exit;
  6790. glVertexStream3iv := wglGetProcAddress('glVertexStream3iv');
  6791. if not Assigned(glVertexStream3iv) then Exit;
  6792. glVertexStream3fv := wglGetProcAddress('glVertexStream3fv');
  6793. if not Assigned(glVertexStream3fv) then Exit;
  6794. glVertexStream3dv := wglGetProcAddress('glVertexStream3dv');
  6795. if not Assigned(glVertexStream3dv) then Exit;
  6796. glVertexStream4s := wglGetProcAddress('glVertexStream4s');
  6797. if not Assigned(glVertexStream4s) then Exit;
  6798. glVertexStream4i := wglGetProcAddress('glVertexStream4i');
  6799. if not Assigned(glVertexStream4i) then Exit;
  6800. glVertexStream4f := wglGetProcAddress('glVertexStream4f');
  6801. if not Assigned(glVertexStream4f) then Exit;
  6802. glVertexStream4d := wglGetProcAddress('glVertexStream4d');
  6803. if not Assigned(glVertexStream4d) then Exit;
  6804. glVertexStream4sv := wglGetProcAddress('glVertexStream4sv');
  6805. if not Assigned(glVertexStream4sv) then Exit;
  6806. glVertexStream4iv := wglGetProcAddress('glVertexStream4iv');
  6807. if not Assigned(glVertexStream4iv) then Exit;
  6808. glVertexStream4fv := wglGetProcAddress('glVertexStream4fv');
  6809. if not Assigned(glVertexStream4fv) then Exit;
  6810. glVertexStream4dv := wglGetProcAddress('glVertexStream4dv');
  6811. if not Assigned(glVertexStream4dv) then Exit;
  6812. glNormalStream3b := wglGetProcAddress('glNormalStream3b');
  6813. if not Assigned(glNormalStream3b) then Exit;
  6814. glNormalStream3s := wglGetProcAddress('glNormalStream3s');
  6815. if not Assigned(glNormalStream3s) then Exit;
  6816. glNormalStream3i := wglGetProcAddress('glNormalStream3i');
  6817. if not Assigned(glNormalStream3i) then Exit;
  6818. glNormalStream3f := wglGetProcAddress('glNormalStream3f');
  6819. if not Assigned(glNormalStream3f) then Exit;
  6820. glNormalStream3d := wglGetProcAddress('glNormalStream3d');
  6821. if not Assigned(glNormalStream3d) then Exit;
  6822. glNormalStream3bv := wglGetProcAddress('glNormalStream3bv');
  6823. if not Assigned(glNormalStream3bv) then Exit;
  6824. glNormalStream3sv := wglGetProcAddress('glNormalStream3sv');
  6825. if not Assigned(glNormalStream3sv) then Exit;
  6826. glNormalStream3iv := wglGetProcAddress('glNormalStream3iv');
  6827. if not Assigned(glNormalStream3iv) then Exit;
  6828. glNormalStream3fv := wglGetProcAddress('glNormalStream3fv');
  6829. if not Assigned(glNormalStream3fv) then Exit;
  6830. glNormalStream3dv := wglGetProcAddress('glNormalStream3dv');
  6831. if not Assigned(glNormalStream3dv) then Exit;
  6832. glClientActiveVertexStream := wglGetProcAddress('glClientActiveVertexStream');
  6833. if not Assigned(glClientActiveVertexStream) then Exit;
  6834. glVertexBlendEnvi := wglGetProcAddress('glVertexBlendEnvi');
  6835. if not Assigned(glVertexBlendEnvi) then Exit;
  6836. glVertexBlendEnvf := wglGetProcAddress('glVertexBlendEnvf');
  6837. if not Assigned(glVertexBlendEnvf) then Exit;
  6838. Result := TRUE;
  6839. end;
  6840. end;
  6841. {$IFDEF Windows}
  6842. function Load_WGL_I3D_image_buffer: Boolean;
  6843. var
  6844. extstring: String;
  6845. begin
  6846. Result := FALSE;
  6847. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6848. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6849. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6850. if glext_ExtensionSupported('WGL_I3D_image_buffer', extstring) then
  6851. begin
  6852. wglCreateImageBufferI3D := wglGetProcAddress('wglCreateImageBufferI3D');
  6853. if not Assigned(wglCreateImageBufferI3D) then Exit;
  6854. wglDestroyImageBufferI3D := wglGetProcAddress('wglDestroyImageBufferI3D');
  6855. if not Assigned(wglDestroyImageBufferI3D) then Exit;
  6856. wglAssociateImageBufferEventsI3D := wglGetProcAddress('wglAssociateImageBufferEventsI3D');
  6857. if not Assigned(wglAssociateImageBufferEventsI3D) then Exit;
  6858. wglReleaseImageBufferEventsI3D := wglGetProcAddress('wglReleaseImageBufferEventsI3D');
  6859. if not Assigned(wglReleaseImageBufferEventsI3D) then Exit;
  6860. Result := TRUE;
  6861. end;
  6862. end;
  6863. function Load_WGL_I3D_swap_frame_lock: Boolean;
  6864. var
  6865. extstring: String;
  6866. begin
  6867. Result := FALSE;
  6868. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6869. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6870. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6871. if glext_ExtensionSupported('WGL_I3D_swap_frame_lock', extstring) then
  6872. begin
  6873. wglEnableFrameLockI3D := wglGetProcAddress('wglEnableFrameLockI3D');
  6874. if not Assigned(wglEnableFrameLockI3D) then Exit;
  6875. wglDisableFrameLockI3D := wglGetProcAddress('wglDisableFrameLockI3D');
  6876. if not Assigned(wglDisableFrameLockI3D) then Exit;
  6877. wglIsEnabledFrameLockI3D := wglGetProcAddress('wglIsEnabledFrameLockI3D');
  6878. if not Assigned(wglIsEnabledFrameLockI3D) then Exit;
  6879. wglQueryFrameLockMasterI3D := wglGetProcAddress('wglQueryFrameLockMasterI3D');
  6880. if not Assigned(wglQueryFrameLockMasterI3D) then Exit;
  6881. Result := TRUE;
  6882. end;
  6883. end;
  6884. function Load_WGL_I3D_swap_frame_usage: Boolean;
  6885. var
  6886. extstring: String;
  6887. begin
  6888. Result := FALSE;
  6889. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6890. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6891. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6892. if glext_ExtensionSupported('WGL_I3D_swap_frame_usage', extstring) then
  6893. begin
  6894. wglGetFrameUsageI3D := wglGetProcAddress('wglGetFrameUsageI3D');
  6895. if not Assigned(wglGetFrameUsageI3D) then Exit;
  6896. wglBeginFrameTrackingI3D := wglGetProcAddress('wglBeginFrameTrackingI3D');
  6897. if not Assigned(wglBeginFrameTrackingI3D) then Exit;
  6898. wglEndFrameTrackingI3D := wglGetProcAddress('wglEndFrameTrackingI3D');
  6899. if not Assigned(wglEndFrameTrackingI3D) then Exit;
  6900. wglQueryFrameTrackingI3D := wglGetProcAddress('wglQueryFrameTrackingI3D');
  6901. if not Assigned(wglQueryFrameTrackingI3D) then Exit;
  6902. Result := TRUE;
  6903. end;
  6904. end;
  6905. {$ENDIF}
  6906. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  6907. var
  6908. extstring: String;
  6909. begin
  6910. Result := FALSE;
  6911. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6912. if glext_ExtensionSupported('GL_3DFX_texture_compression_FXT1', extstring) then
  6913. begin
  6914. Result := TRUE;
  6915. end;
  6916. end;
  6917. function Load_GL_IBM_cull_vertex: Boolean;
  6918. var
  6919. extstring: String;
  6920. begin
  6921. Result := FALSE;
  6922. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6923. if glext_ExtensionSupported('GL_IBM_cull_vertex', extstring) then
  6924. begin
  6925. Result := TRUE;
  6926. end;
  6927. end;
  6928. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  6929. var
  6930. extstring: String;
  6931. begin
  6932. Result := FALSE;
  6933. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6934. if glext_ExtensionSupported('GL_IBM_multimode_draw_arrays', extstring) then
  6935. begin
  6936. glMultiModeDrawArraysIBM := wglGetProcAddress('glMultiModeDrawArraysIBM');
  6937. if not Assigned(glMultiModeDrawArraysIBM) then Exit;
  6938. glMultiModeDrawElementsIBM := wglGetProcAddress('glMultiModeDrawElementsIBM');
  6939. if not Assigned(glMultiModeDrawElementsIBM) then Exit;
  6940. Result := TRUE;
  6941. end;
  6942. end;
  6943. function Load_GL_IBM_raster_pos_clip: Boolean;
  6944. var
  6945. extstring: String;
  6946. begin
  6947. Result := FALSE;
  6948. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6949. if glext_ExtensionSupported('GL_IBM_raster_pos_clip', extstring) then
  6950. begin
  6951. Result := TRUE;
  6952. end;
  6953. end;
  6954. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  6955. var
  6956. extstring: String;
  6957. begin
  6958. Result := FALSE;
  6959. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6960. if glext_ExtensionSupported('GL_IBM_texture_mirrored_repeat', extstring) then
  6961. begin
  6962. Result := TRUE;
  6963. end;
  6964. end;
  6965. function Load_GL_IBM_vertex_array_lists: Boolean;
  6966. var
  6967. extstring: String;
  6968. begin
  6969. Result := FALSE;
  6970. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6971. if glext_ExtensionSupported('GL_IBM_vertex_array_lists', extstring) then
  6972. begin
  6973. glColorPointerListIBM := wglGetProcAddress('glColorPointerListIBM');
  6974. if not Assigned(glColorPointerListIBM) then Exit;
  6975. glSecondaryColorPointerListIBM := wglGetProcAddress('glSecondaryColorPointerListIBM');
  6976. if not Assigned(glSecondaryColorPointerListIBM) then Exit;
  6977. glEdgeFlagPointerListIBM := wglGetProcAddress('glEdgeFlagPointerListIBM');
  6978. if not Assigned(glEdgeFlagPointerListIBM) then Exit;
  6979. glFogCoordPointerListIBM := wglGetProcAddress('glFogCoordPointerListIBM');
  6980. if not Assigned(glFogCoordPointerListIBM) then Exit;
  6981. glNormalPointerListIBM := wglGetProcAddress('glNormalPointerListIBM');
  6982. if not Assigned(glNormalPointerListIBM) then Exit;
  6983. glTexCoordPointerListIBM := wglGetProcAddress('glTexCoordPointerListIBM');
  6984. if not Assigned(glTexCoordPointerListIBM) then Exit;
  6985. glVertexPointerListIBM := wglGetProcAddress('glVertexPointerListIBM');
  6986. if not Assigned(glVertexPointerListIBM) then Exit;
  6987. Result := TRUE;
  6988. end;
  6989. end;
  6990. function Load_GL_MESA_resize_buffers: Boolean;
  6991. var
  6992. extstring: String;
  6993. begin
  6994. Result := FALSE;
  6995. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6996. if glext_ExtensionSupported('GL_MESA_resize_buffers', extstring) then
  6997. begin
  6998. glResizeBuffersMESA := wglGetProcAddress('glResizeBuffersMESA');
  6999. if not Assigned(glResizeBuffersMESA) then Exit;
  7000. Result := TRUE;
  7001. end;
  7002. end;
  7003. function Load_GL_MESA_window_pos: Boolean;
  7004. var
  7005. extstring: String;
  7006. begin
  7007. Result := FALSE;
  7008. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7009. if glext_ExtensionSupported('GL_MESA_window_pos', extstring) then
  7010. begin
  7011. glWindowPos2dMESA := wglGetProcAddress('glWindowPos2dMESA');
  7012. if not Assigned(glWindowPos2dMESA) then Exit;
  7013. glWindowPos2fMESA := wglGetProcAddress('glWindowPos2fMESA');
  7014. if not Assigned(glWindowPos2fMESA) then Exit;
  7015. glWindowPos2iMESA := wglGetProcAddress('glWindowPos2iMESA');
  7016. if not Assigned(glWindowPos2iMESA) then Exit;
  7017. glWindowPos2sMESA := wglGetProcAddress('glWindowPos2sMESA');
  7018. if not Assigned(glWindowPos2sMESA) then Exit;
  7019. glWindowPos2ivMESA := wglGetProcAddress('glWindowPos2ivMESA');
  7020. if not Assigned(glWindowPos2ivMESA) then Exit;
  7021. glWindowPos2svMESA := wglGetProcAddress('glWindowPos2svMESA');
  7022. if not Assigned(glWindowPos2svMESA) then Exit;
  7023. glWindowPos2fvMESA := wglGetProcAddress('glWindowPos2fvMESA');
  7024. if not Assigned(glWindowPos2fvMESA) then Exit;
  7025. glWindowPos2dvMESA := wglGetProcAddress('glWindowPos2dvMESA');
  7026. if not Assigned(glWindowPos2dvMESA) then Exit;
  7027. glWindowPos3iMESA := wglGetProcAddress('glWindowPos3iMESA');
  7028. if not Assigned(glWindowPos3iMESA) then Exit;
  7029. glWindowPos3sMESA := wglGetProcAddress('glWindowPos3sMESA');
  7030. if not Assigned(glWindowPos3sMESA) then Exit;
  7031. glWindowPos3fMESA := wglGetProcAddress('glWindowPos3fMESA');
  7032. if not Assigned(glWindowPos3fMESA) then Exit;
  7033. glWindowPos3dMESA := wglGetProcAddress('glWindowPos3dMESA');
  7034. if not Assigned(glWindowPos3dMESA) then Exit;
  7035. glWindowPos3ivMESA := wglGetProcAddress('glWindowPos3ivMESA');
  7036. if not Assigned(glWindowPos3ivMESA) then Exit;
  7037. glWindowPos3svMESA := wglGetProcAddress('glWindowPos3svMESA');
  7038. if not Assigned(glWindowPos3svMESA) then Exit;
  7039. glWindowPos3fvMESA := wglGetProcAddress('glWindowPos3fvMESA');
  7040. if not Assigned(glWindowPos3fvMESA) then Exit;
  7041. glWindowPos3dvMESA := wglGetProcAddress('glWindowPos3dvMESA');
  7042. if not Assigned(glWindowPos3dvMESA) then Exit;
  7043. glWindowPos4iMESA := wglGetProcAddress('glWindowPos4iMESA');
  7044. if not Assigned(glWindowPos4iMESA) then Exit;
  7045. glWindowPos4sMESA := wglGetProcAddress('glWindowPos4sMESA');
  7046. if not Assigned(glWindowPos4sMESA) then Exit;
  7047. glWindowPos4fMESA := wglGetProcAddress('glWindowPos4fMESA');
  7048. if not Assigned(glWindowPos4fMESA) then Exit;
  7049. glWindowPos4dMESA := wglGetProcAddress('glWindowPos4dMESA');
  7050. if not Assigned(glWindowPos4dMESA) then Exit;
  7051. glWindowPos4ivMESA := wglGetProcAddress('glWindowPos4ivMESA');
  7052. if not Assigned(glWindowPos4ivMESA) then Exit;
  7053. glWindowPos4svMESA := wglGetProcAddress('glWindowPos4svMESA');
  7054. if not Assigned(glWindowPos4svMESA) then Exit;
  7055. glWindowPos4fvMESA := wglGetProcAddress('glWindowPos4fvMESA');
  7056. if not Assigned(glWindowPos4fvMESA) then Exit;
  7057. glWindowPos4dvMESA := wglGetProcAddress('glWindowPos4dvMESA');
  7058. if not Assigned(glWindowPos4dvMESA) then Exit;
  7059. Result := TRUE;
  7060. end;
  7061. end;
  7062. function Load_GL_OML_interlace: Boolean;
  7063. var
  7064. extstring: String;
  7065. begin
  7066. Result := FALSE;
  7067. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7068. if glext_ExtensionSupported('GL_OML_interlace', extstring) then
  7069. begin
  7070. Result := TRUE;
  7071. end;
  7072. end;
  7073. function Load_GL_OML_resample: Boolean;
  7074. var
  7075. extstring: String;
  7076. begin
  7077. Result := FALSE;
  7078. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7079. if glext_ExtensionSupported('GL_OML_resample', extstring) then
  7080. begin
  7081. Result := TRUE;
  7082. end;
  7083. end;
  7084. function Load_GL_OML_subsample: Boolean;
  7085. var
  7086. extstring: String;
  7087. begin
  7088. Result := FALSE;
  7089. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7090. if glext_ExtensionSupported('GL_OML_subsample', extstring) then
  7091. begin
  7092. Result := TRUE;
  7093. end;
  7094. end;
  7095. function Load_GL_SGIS_generate_mipmap: Boolean;
  7096. var
  7097. extstring: String;
  7098. begin
  7099. Result := FALSE;
  7100. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7101. if glext_ExtensionSupported('GL_SGIS_generate_mipmap', extstring) then
  7102. begin
  7103. Result := TRUE;
  7104. end;
  7105. end;
  7106. function Load_GL_SGIS_multisample: Boolean;
  7107. var
  7108. extstring: String;
  7109. begin
  7110. Result := FALSE;
  7111. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7112. if glext_ExtensionSupported('GL_SGIS_multisample', extstring) then
  7113. begin
  7114. glSampleMaskSGIS := wglGetProcAddress('glSampleMaskSGIS');
  7115. if not Assigned(glSampleMaskSGIS) then Exit;
  7116. glSamplePatternSGIS := wglGetProcAddress('glSamplePatternSGIS');
  7117. if not Assigned(glSamplePatternSGIS) then Exit;
  7118. Result := TRUE;
  7119. end;
  7120. end;
  7121. function Load_GL_SGIS_pixel_texture: Boolean;
  7122. var
  7123. extstring: String;
  7124. begin
  7125. Result := FALSE;
  7126. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7127. if glext_ExtensionSupported('GL_SGIS_pixel_texture', extstring) then
  7128. begin
  7129. glPixelTexGenParameteriSGIS := wglGetProcAddress('glPixelTexGenParameteriSGIS');
  7130. if not Assigned(glPixelTexGenParameteriSGIS) then Exit;
  7131. glPixelTexGenParameterfSGIS := wglGetProcAddress('glPixelTexGenParameterfSGIS');
  7132. if not Assigned(glPixelTexGenParameterfSGIS) then Exit;
  7133. glGetPixelTexGenParameterivSGIS := wglGetProcAddress('glGetPixelTexGenParameterivSGIS');
  7134. if not Assigned(glGetPixelTexGenParameterivSGIS) then Exit;
  7135. glGetPixelTexGenParameterfvSGIS := wglGetProcAddress('glGetPixelTexGenParameterfvSGIS');
  7136. if not Assigned(glGetPixelTexGenParameterfvSGIS) then Exit;
  7137. Result := TRUE;
  7138. end;
  7139. end;
  7140. function Load_GL_SGIS_texture_border_clamp: Boolean;
  7141. var
  7142. extstring: String;
  7143. begin
  7144. Result := FALSE;
  7145. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7146. if glext_ExtensionSupported('GL_SGIS_texture_border_clamp', extstring) then
  7147. begin
  7148. Result := TRUE;
  7149. end;
  7150. end;
  7151. function Load_GL_SGIS_texture_color_mask: Boolean;
  7152. var
  7153. extstring: String;
  7154. begin
  7155. Result := FALSE;
  7156. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7157. if glext_ExtensionSupported('GL_SGIS_texture_color_mask', extstring) then
  7158. begin
  7159. glTextureColorMaskSGIS := wglGetProcAddress('glTextureColorMaskSGIS');
  7160. if not Assigned(glTextureColorMaskSGIS) then Exit;
  7161. Result := TRUE;
  7162. end;
  7163. end;
  7164. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  7165. var
  7166. extstring: String;
  7167. begin
  7168. Result := FALSE;
  7169. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7170. if glext_ExtensionSupported('GL_SGIS_texture_edge_clamp', extstring) then
  7171. begin
  7172. Result := TRUE;
  7173. end;
  7174. end;
  7175. function Load_GL_SGIS_texture_lod: Boolean;
  7176. var
  7177. extstring: String;
  7178. begin
  7179. Result := FALSE;
  7180. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7181. if glext_ExtensionSupported('GL_SGIS_texture_lod', extstring) then
  7182. begin
  7183. Result := TRUE;
  7184. end;
  7185. end;
  7186. function Load_GL_SGIS_depth_texture: Boolean;
  7187. var
  7188. extstring: String;
  7189. begin
  7190. Result := FALSE;
  7191. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7192. if glext_ExtensionSupported('GL_SGIS_depth_texture', extstring) then
  7193. begin
  7194. Result := TRUE;
  7195. end;
  7196. end;
  7197. function Load_GL_SGIX_fog_offset: Boolean;
  7198. var
  7199. extstring: String;
  7200. begin
  7201. Result := FALSE;
  7202. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7203. if glext_ExtensionSupported('GL_SGIX_fog_offset', extstring) then
  7204. begin
  7205. Result := TRUE;
  7206. end;
  7207. end;
  7208. function Load_GL_SGIX_interlace: Boolean;
  7209. var
  7210. extstring: String;
  7211. begin
  7212. Result := FALSE;
  7213. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7214. if glext_ExtensionSupported('GL_SGIX_interlace', extstring) then
  7215. begin
  7216. Result := TRUE;
  7217. end;
  7218. end;
  7219. function Load_GL_SGIX_shadow_ambient: Boolean;
  7220. var
  7221. extstring: String;
  7222. begin
  7223. Result := FALSE;
  7224. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7225. if glext_ExtensionSupported('GL_SGIX_shadow_ambient', extstring) then
  7226. begin
  7227. Result := TRUE;
  7228. end;
  7229. end;
  7230. function Load_GL_SGI_color_matrix: Boolean;
  7231. var
  7232. extstring: String;
  7233. begin
  7234. Result := FALSE;
  7235. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7236. if glext_ExtensionSupported('GL_SGI_color_matrix', extstring) then
  7237. begin
  7238. Result := TRUE;
  7239. end;
  7240. end;
  7241. function Load_GL_SGI_color_table: Boolean;
  7242. var
  7243. extstring: String;
  7244. begin
  7245. Result := FALSE;
  7246. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7247. if glext_ExtensionSupported('GL_SGI_color_table', extstring) then
  7248. begin
  7249. glColorTableSGI := wglGetProcAddress('glColorTableSGI');
  7250. if not Assigned(glColorTableSGI) then Exit;
  7251. glCopyColorTableSGI := wglGetProcAddress('glCopyColorTableSGI');
  7252. if not Assigned(glCopyColorTableSGI) then Exit;
  7253. glColorTableParameterivSGI := wglGetProcAddress('glColorTableParameterivSGI');
  7254. if not Assigned(glColorTableParameterivSGI) then Exit;
  7255. glColorTableParameterfvSGI := wglGetProcAddress('glColorTableParameterfvSGI');
  7256. if not Assigned(glColorTableParameterfvSGI) then Exit;
  7257. glGetColorTableSGI := wglGetProcAddress('glGetColorTableSGI');
  7258. if not Assigned(glGetColorTableSGI) then Exit;
  7259. glGetColorTableParameterivSGI := wglGetProcAddress('glGetColorTableParameterivSGI');
  7260. if not Assigned(glGetColorTableParameterivSGI) then Exit;
  7261. glGetColorTableParameterfvSGI := wglGetProcAddress('glGetColorTableParameterfvSGI');
  7262. if not Assigned(glGetColorTableParameterfvSGI) then Exit;
  7263. Result := TRUE;
  7264. end;
  7265. end;
  7266. function Load_GL_SGI_texture_color_table: Boolean;
  7267. var
  7268. extstring: String;
  7269. begin
  7270. Result := FALSE;
  7271. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7272. if glext_ExtensionSupported('GL_SGI_texture_color_table', extstring) then
  7273. begin
  7274. Result := TRUE;
  7275. end;
  7276. end;
  7277. function Load_GL_SUN_vertex: Boolean;
  7278. var
  7279. extstring: String;
  7280. begin
  7281. Result := FALSE;
  7282. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7283. if glext_ExtensionSupported('GL_SUN_vertex', extstring) then
  7284. begin
  7285. glColor4ubVertex2fSUN := wglGetProcAddress('glColor4ubVertex2fSUN');
  7286. if not Assigned(glColor4ubVertex2fSUN) then Exit;
  7287. glColor4ubVertex2fvSUN := wglGetProcAddress('glColor4ubVertex2fvSUN');
  7288. if not Assigned(glColor4ubVertex2fvSUN) then Exit;
  7289. glColor4ubVertex3fSUN := wglGetProcAddress('glColor4ubVertex3fSUN');
  7290. if not Assigned(glColor4ubVertex3fSUN) then Exit;
  7291. glColor4ubVertex3fvSUN := wglGetProcAddress('glColor4ubVertex3fvSUN');
  7292. if not Assigned(glColor4ubVertex3fvSUN) then Exit;
  7293. glColor3fVertex3fSUN := wglGetProcAddress('glColor3fVertex3fSUN');
  7294. if not Assigned(glColor3fVertex3fSUN) then Exit;
  7295. glColor3fVertex3fvSUN := wglGetProcAddress('glColor3fVertex3fvSUN');
  7296. if not Assigned(glColor3fVertex3fvSUN) then Exit;
  7297. glNormal3fVertex3fSUN := wglGetProcAddress('glNormal3fVertex3fSUN');
  7298. if not Assigned(glNormal3fVertex3fSUN) then Exit;
  7299. glNormal3fVertex3fvSUN := wglGetProcAddress('glNormal3fVertex3fvSUN');
  7300. if not Assigned(glNormal3fVertex3fvSUN) then Exit;
  7301. glColor4fNormal3fVertex3fSUN := wglGetProcAddress('glColor4fNormal3fVertex3fSUN');
  7302. if not Assigned(glColor4fNormal3fVertex3fSUN) then Exit;
  7303. glColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glColor4fNormal3fVertex3fvSUN');
  7304. if not Assigned(glColor4fNormal3fVertex3fvSUN) then Exit;
  7305. glTexCoord2fVertex3fSUN := wglGetProcAddress('glTexCoord2fVertex3fSUN');
  7306. if not Assigned(glTexCoord2fVertex3fSUN) then Exit;
  7307. glTexCoord2fVertex3fvSUN := wglGetProcAddress('glTexCoord2fVertex3fvSUN');
  7308. if not Assigned(glTexCoord2fVertex3fvSUN) then Exit;
  7309. glTexCoord4fVertex4fSUN := wglGetProcAddress('glTexCoord4fVertex4fSUN');
  7310. if not Assigned(glTexCoord4fVertex4fSUN) then Exit;
  7311. glTexCoord4fVertex4fvSUN := wglGetProcAddress('glTexCoord4fVertex4fvSUN');
  7312. if not Assigned(glTexCoord4fVertex4fvSUN) then Exit;
  7313. glTexCoord2fColor4ubVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fSUN');
  7314. if not Assigned(glTexCoord2fColor4ubVertex3fSUN) then Exit;
  7315. glTexCoord2fColor4ubVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fvSUN');
  7316. if not Assigned(glTexCoord2fColor4ubVertex3fvSUN) then Exit;
  7317. glTexCoord2fColor3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fSUN');
  7318. if not Assigned(glTexCoord2fColor3fVertex3fSUN) then Exit;
  7319. glTexCoord2fColor3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fvSUN');
  7320. if not Assigned(glTexCoord2fColor3fVertex3fvSUN) then Exit;
  7321. glTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fSUN');
  7322. if not Assigned(glTexCoord2fNormal3fVertex3fSUN) then Exit;
  7323. glTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fvSUN');
  7324. if not Assigned(glTexCoord2fNormal3fVertex3fvSUN) then Exit;
  7325. glTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fSUN');
  7326. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  7327. glTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fvSUN');
  7328. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  7329. glTexCoord4fColor4fNormal3fVertex4fSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fSUN');
  7330. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fSUN) then Exit;
  7331. glTexCoord4fColor4fNormal3fVertex4fvSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fvSUN');
  7332. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fvSUN) then Exit;
  7333. glReplacementCodeuiVertex3fSUN := wglGetProcAddress('glReplacementCodeuiVertex3fSUN');
  7334. if not Assigned(glReplacementCodeuiVertex3fSUN) then Exit;
  7335. glReplacementCodeuiVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiVertex3fvSUN');
  7336. if not Assigned(glReplacementCodeuiVertex3fvSUN) then Exit;
  7337. glReplacementCodeuiColor4ubVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fSUN');
  7338. if not Assigned(glReplacementCodeuiColor4ubVertex3fSUN) then Exit;
  7339. glReplacementCodeuiColor4ubVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fvSUN');
  7340. if not Assigned(glReplacementCodeuiColor4ubVertex3fvSUN) then Exit;
  7341. glReplacementCodeuiColor3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fSUN');
  7342. if not Assigned(glReplacementCodeuiColor3fVertex3fSUN) then Exit;
  7343. glReplacementCodeuiColor3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fvSUN');
  7344. if not Assigned(glReplacementCodeuiColor3fVertex3fvSUN) then Exit;
  7345. glReplacementCodeuiNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fSUN');
  7346. if not Assigned(glReplacementCodeuiNormal3fVertex3fSUN) then Exit;
  7347. glReplacementCodeuiNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fvSUN');
  7348. if not Assigned(glReplacementCodeuiNormal3fVertex3fvSUN) then Exit;
  7349. glReplacementCodeuiColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fSUN');
  7350. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fSUN) then Exit;
  7351. glReplacementCodeuiColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fvSUN');
  7352. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fvSUN) then Exit;
  7353. glReplacementCodeuiTexCoord2fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fSUN');
  7354. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fSUN) then Exit;
  7355. glReplacementCodeuiTexCoord2fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fvSUN');
  7356. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fvSUN) then Exit;
  7357. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN');
  7358. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) then Exit;
  7359. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN');
  7360. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) then Exit;
  7361. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN');
  7362. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  7363. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN');
  7364. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  7365. Result := TRUE;
  7366. end;
  7367. end;
  7368. function Load_GL_ARB_fragment_program: Boolean;
  7369. var
  7370. extstring: String;
  7371. begin
  7372. Result := FALSE;
  7373. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7374. if glext_ExtensionSupported('GL_ARB_fragment_program', extstring) then
  7375. begin
  7376. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  7377. if not Assigned(glProgramStringARB) then Exit;
  7378. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  7379. if not Assigned(glBindProgramARB) then Exit;
  7380. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  7381. if not Assigned(glDeleteProgramsARB) then Exit;
  7382. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  7383. if not Assigned(glGenProgramsARB) then Exit;
  7384. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  7385. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  7386. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  7387. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  7388. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  7389. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  7390. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  7391. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  7392. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  7393. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  7394. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  7395. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  7396. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  7397. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  7398. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  7399. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  7400. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  7401. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  7402. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  7403. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  7404. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  7405. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  7406. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  7407. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  7408. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  7409. if not Assigned(glGetProgramivARB) then Exit;
  7410. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  7411. if not Assigned(glGetProgramStringARB) then Exit;
  7412. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  7413. if not Assigned(glIsProgramARB) then Exit;
  7414. Result := TRUE;
  7415. end;
  7416. end;
  7417. function Load_GL_ATI_text_fragment_shader: Boolean;
  7418. var
  7419. extstring: String;
  7420. begin
  7421. Result := FALSE;
  7422. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7423. if glext_ExtensionSupported('GL_ATI_text_fragment_shader', extstring) then
  7424. begin
  7425. Result := TRUE;
  7426. end;
  7427. end;
  7428. function Load_GL_APPLE_client_storage: Boolean;
  7429. var
  7430. extstring: String;
  7431. begin
  7432. Result := FALSE;
  7433. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7434. if glext_ExtensionSupported('GL_APPLE_client_storage', extstring) then
  7435. begin
  7436. Result := TRUE;
  7437. end;
  7438. end;
  7439. function Load_GL_APPLE_element_array: Boolean;
  7440. var
  7441. extstring: String;
  7442. begin
  7443. Result := FALSE;
  7444. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7445. if glext_ExtensionSupported('GL_APPLE_element_array', extstring) then
  7446. begin
  7447. glElementPointerAPPLE := wglGetProcAddress('glElementPointerAPPLE');
  7448. if not Assigned(glElementPointerAPPLE) then Exit;
  7449. glDrawElementArrayAPPLE := wglGetProcAddress('glDrawElementArrayAPPLE');
  7450. if not Assigned(glDrawElementArrayAPPLE) then Exit;
  7451. glDrawRangeElementArrayAPPLE := wglGetProcAddress('glDrawRangeElementArrayAPPLE');
  7452. if not Assigned(glDrawRangeElementArrayAPPLE) then Exit;
  7453. glMultiDrawElementArrayAPPLE := wglGetProcAddress('glMultiDrawElementArrayAPPLE');
  7454. if not Assigned(glMultiDrawElementArrayAPPLE) then Exit;
  7455. glMultiDrawRangeElementArrayAPPLE := wglGetProcAddress('glMultiDrawRangeElementArrayAPPLE');
  7456. if not Assigned(glMultiDrawRangeElementArrayAPPLE) then Exit;
  7457. Result := TRUE;
  7458. end;
  7459. end;
  7460. function Load_GL_APPLE_fence: Boolean;
  7461. var
  7462. extstring: String;
  7463. begin
  7464. Result := FALSE;
  7465. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7466. if glext_ExtensionSupported('GL_APPLE_fence', extstring) then
  7467. begin
  7468. glGenFencesAPPLE := wglGetProcAddress('glGenFencesAPPLE');
  7469. if not Assigned(glGenFencesAPPLE) then Exit;
  7470. glDeleteFencesAPPLE := wglGetProcAddress('glDeleteFencesAPPLE');
  7471. if not Assigned(glDeleteFencesAPPLE) then Exit;
  7472. glSetFenceAPPLE := wglGetProcAddress('glSetFenceAPPLE');
  7473. if not Assigned(glSetFenceAPPLE) then Exit;
  7474. glIsFenceAPPLE := wglGetProcAddress('glIsFenceAPPLE');
  7475. if not Assigned(glIsFenceAPPLE) then Exit;
  7476. glTestFenceAPPLE := wglGetProcAddress('glTestFenceAPPLE');
  7477. if not Assigned(glTestFenceAPPLE) then Exit;
  7478. glFinishFenceAPPLE := wglGetProcAddress('glFinishFenceAPPLE');
  7479. if not Assigned(glFinishFenceAPPLE) then Exit;
  7480. glTestObjectAPPLE := wglGetProcAddress('glTestObjectAPPLE');
  7481. if not Assigned(glTestObjectAPPLE) then Exit;
  7482. glFinishObjectAPPLE := wglGetProcAddress('glFinishObjectAPPLE');
  7483. if not Assigned(glFinishObjectAPPLE) then Exit;
  7484. Result := TRUE;
  7485. end;
  7486. end;
  7487. function Load_GL_APPLE_vertex_array_object: Boolean;
  7488. var
  7489. extstring: String;
  7490. begin
  7491. Result := FALSE;
  7492. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7493. if glext_ExtensionSupported('GL_APPLE_vertex_array_object', extstring) then
  7494. begin
  7495. glBindVertexArrayAPPLE := wglGetProcAddress('glBindVertexArrayAPPLE');
  7496. if not Assigned(glBindVertexArrayAPPLE) then Exit;
  7497. glDeleteVertexArraysAPPLE := wglGetProcAddress('glDeleteVertexArraysAPPLE');
  7498. if not Assigned(glDeleteVertexArraysAPPLE) then Exit;
  7499. glGenVertexArraysAPPLE := wglGetProcAddress('glGenVertexArraysAPPLE');
  7500. if not Assigned(glGenVertexArraysAPPLE) then Exit;
  7501. glIsVertexArrayAPPLE := wglGetProcAddress('glIsVertexArrayAPPLE');
  7502. if not Assigned(glIsVertexArrayAPPLE) then Exit;
  7503. Result := TRUE;
  7504. end;
  7505. end;
  7506. function Load_GL_APPLE_vertex_array_range: Boolean;
  7507. var
  7508. extstring: String;
  7509. begin
  7510. Result := FALSE;
  7511. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7512. if glext_ExtensionSupported('GL_APPLE_vertex_array_range', extstring) then
  7513. begin
  7514. glVertexArrayRangeAPPLE := wglGetProcAddress('glVertexArrayRangeAPPLE');
  7515. if not Assigned(glVertexArrayRangeAPPLE) then Exit;
  7516. glFlushVertexArrayRangeAPPLE := wglGetProcAddress('glFlushVertexArrayRangeAPPLE');
  7517. if not Assigned(glFlushVertexArrayRangeAPPLE) then Exit;
  7518. glVertexArrayParameteriAPPLE := wglGetProcAddress('glVertexArrayParameteriAPPLE');
  7519. if not Assigned(glVertexArrayParameteriAPPLE) then Exit;
  7520. Result := TRUE;
  7521. end;
  7522. end;
  7523. function load_GL_ARB_vertex_buffer_object : boolean;
  7524. var extstring:string;
  7525. begin
  7526. Result:=false;
  7527. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7528. if glext_ExtensionSupported('GL_ARB_vertex_buffer_object',extstring) then
  7529. begin
  7530. glBindBufferARB := wglGetProcAddress('glBindBufferARB');
  7531. if not Assigned(glBindBufferARB) then Exit;
  7532. glDeleteBuffersARB := wglGetProcAddress('glDeleteBuffersARB');
  7533. if not Assigned(glDeleteBuffersARB) then Exit;
  7534. glGenBuffersARB := wglGetProcAddress('glGenBuffersARB');
  7535. if not Assigned(glGenBuffersARB) then Exit;
  7536. glIsBufferARB := wglGetProcAddress('glIsBufferARB');
  7537. if not Assigned(glIsBufferARB) then Exit;
  7538. glBufferDataARB := wglGetProcAddress('glBufferDataARB');
  7539. if not Assigned(glBufferDataARB) then Exit;
  7540. glBufferSubDataARB := wglGetProcAddress('glBufferSubDataARB');
  7541. if not Assigned(glBufferSubDataARB) then Exit;
  7542. glGetBufferSubDataARB := wglGetProcAddress('glGetBufferSubDataARB');
  7543. if not Assigned(glGetBufferSubDataARB) then Exit;
  7544. glMapBufferARB := wglGetProcAddress('glMapBufferARB');
  7545. if not Assigned(glMapBufferARB) then Exit;
  7546. glUnmapBufferARB := wglGetProcAddress('glUnmapBufferARB');
  7547. if not Assigned(glMapBufferARB) then Exit;
  7548. glGetBufferParameterivARB := wglGetProcAddress('glGetBufferParameterivARB');
  7549. if not Assigned(glGetBufferParameterivARB) then Exit;
  7550. glGetBufferPointervARB := wglGetProcAddress('glGetBufferPointervARB');
  7551. if not Assigned(glGetBufferPointervARB) then Exit;
  7552. Result:=true;
  7553. end;
  7554. end;
  7555. {$IFDEF Windows}
  7556. function Load_WGL_ARB_pixel_format: Boolean;
  7557. var
  7558. extstring: String;
  7559. begin
  7560. Result := FALSE;
  7561. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7562. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7563. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7564. if glext_ExtensionSupported('WGL_ARB_pixel_format', extstring) then
  7565. begin
  7566. wglGetPixelFormatAttribivARB := wglGetProcAddress('wglGetPixelFormatAttribivARB');
  7567. if not Assigned(wglGetPixelFormatAttribivARB) then Exit;
  7568. wglGetPixelFormatAttribfvARB := wglGetProcAddress('wglGetPixelFormatAttribfvARB');
  7569. if not Assigned(wglGetPixelFormatAttribfvARB) then Exit;
  7570. wglChoosePixelFormatARB := wglGetProcAddress('wglChoosePixelFormatARB');
  7571. if not Assigned(wglChoosePixelFormatARB) then Exit;
  7572. Result := TRUE;
  7573. end;
  7574. end;
  7575. function Load_WGL_ARB_make_current_read: Boolean;
  7576. var
  7577. extstring: String;
  7578. begin
  7579. Result := FALSE;
  7580. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7581. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7582. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7583. if glext_ExtensionSupported('WGL_ARB_make_current_read', extstring) then
  7584. begin
  7585. wglMakeContextCurrentARB := wglGetProcAddress('wglMakeContextCurrentARB');
  7586. if not Assigned(wglMakeContextCurrentARB) then Exit;
  7587. wglGetCurrentReadDCARB := wglGetProcAddress('wglGetCurrentReadDCARB');
  7588. if not Assigned(wglGetCurrentReadDCARB) then Exit;
  7589. Result := TRUE;
  7590. end;
  7591. end;
  7592. function Load_WGL_ARB_pbuffer: Boolean;
  7593. var
  7594. extstring: String;
  7595. begin
  7596. Result := FALSE;
  7597. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7598. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7599. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7600. if glext_ExtensionSupported('WGL_ARB_pbuffer', extstring) then
  7601. begin
  7602. wglCreatePbufferARB := wglGetProcAddress('wglCreatePbufferARB');
  7603. if not Assigned(wglCreatePbufferARB) then Exit;
  7604. wglGetPbufferDCARB := wglGetProcAddress('wglGetPbufferDCARB');
  7605. if not Assigned(wglGetPbufferDCARB) then Exit;
  7606. wglReleasePbufferDCARB := wglGetProcAddress('wglReleasePbufferDCARB');
  7607. if not Assigned(wglReleasePbufferDCARB) then Exit;
  7608. wglDestroyPbufferARB := wglGetProcAddress('wglDestroyPbufferARB');
  7609. if not Assigned(wglDestroyPbufferARB) then Exit;
  7610. wglQueryPbufferARB := wglGetProcAddress('wglQueryPbufferARB');
  7611. if not Assigned(wglQueryPbufferARB) then Exit;
  7612. Result := TRUE;
  7613. end;
  7614. end;
  7615. function Load_WGL_EXT_swap_control: Boolean;
  7616. var
  7617. extstring: String;
  7618. begin
  7619. Result := FALSE;
  7620. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7621. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7622. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7623. if glext_ExtensionSupported('WGL_EXT_swap_control', extstring) then
  7624. begin
  7625. wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
  7626. if not Assigned(wglSwapIntervalEXT) then Exit;
  7627. wglGetSwapIntervalEXT := wglGetProcAddress('wglGetSwapIntervalEXT');
  7628. if not Assigned(wglGetSwapIntervalEXT) then Exit;
  7629. Result := TRUE;
  7630. end;
  7631. end;
  7632. function Load_WGL_ARB_render_texture: Boolean;
  7633. var
  7634. extstring: String;
  7635. begin
  7636. Result := FALSE;
  7637. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7638. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7639. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7640. if glext_ExtensionSupported('WGL_ARB_render_texture', extstring) then
  7641. begin
  7642. wglBindTexImageARB := wglGetProcAddress('wglBindTexImageARB');
  7643. if not Assigned(wglBindTexImageARB) then Exit;
  7644. wglReleaseTexImageARB := wglGetProcAddress('wglReleaseTexImageARB');
  7645. if not Assigned(wglReleaseTexImageARB) then Exit;
  7646. wglSetPbufferAttribARB := wglGetProcAddress('wglSetPbufferAttribARB');
  7647. if not Assigned(wglSetPbufferAttribARB) then Exit;
  7648. Result := TRUE;
  7649. end;
  7650. end;
  7651. function Load_WGL_EXT_extensions_string: Boolean;
  7652. var
  7653. extstring: String;
  7654. begin
  7655. Result := FALSE;
  7656. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7657. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7658. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7659. if glext_ExtensionSupported('WGL_EXT_extensions_string', extstring) then
  7660. begin
  7661. wglGetExtensionsStringEXT := wglGetProcAddress('wglGetExtensionsStringEXT');
  7662. if not Assigned(wglGetExtensionsStringEXT) then Exit;
  7663. Result := TRUE;
  7664. end;
  7665. end;
  7666. function Load_WGL_EXT_make_current_read: Boolean;
  7667. var
  7668. extstring: String;
  7669. begin
  7670. Result := FALSE;
  7671. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7672. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7673. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7674. if glext_ExtensionSupported('WGL_EXT_make_current_read', extstring) then
  7675. begin
  7676. wglMakeContextCurrentEXT := wglGetProcAddress('wglMakeContextCurrentEXT');
  7677. if not Assigned(wglMakeContextCurrentEXT) then Exit;
  7678. wglGetCurrentReadDCEXT := wglGetProcAddress('wglGetCurrentReadDCEXT');
  7679. if not Assigned(wglGetCurrentReadDCEXT) then Exit;
  7680. Result := TRUE;
  7681. end;
  7682. end;
  7683. function Load_WGL_EXT_pbuffer: Boolean;
  7684. var
  7685. extstring: String;
  7686. begin
  7687. Result := FALSE;
  7688. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7689. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7690. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7691. if glext_ExtensionSupported('WGL_EXT_pbuffer', extstring) then
  7692. begin
  7693. wglCreatePbufferEXT := wglGetProcAddress('wglCreatePbufferEXT');
  7694. if not Assigned(wglCreatePbufferEXT) then Exit;
  7695. wglGetPbufferDCEXT := wglGetProcAddress('wglGetPbufferDCEXT');
  7696. if not Assigned(wglGetPbufferDCEXT) then Exit;
  7697. wglReleasePbufferDCEXT := wglGetProcAddress('wglReleasePbufferDCEXT');
  7698. if not Assigned(wglReleasePbufferDCEXT) then Exit;
  7699. wglDestroyPbufferEXT := wglGetProcAddress('wglDestroyPbufferEXT');
  7700. if not Assigned(wglDestroyPbufferEXT) then Exit;
  7701. wglQueryPbufferEXT := wglGetProcAddress('wglQueryPbufferEXT');
  7702. if not Assigned(wglQueryPbufferEXT) then Exit;
  7703. Result := TRUE;
  7704. end;
  7705. end;
  7706. function Load_WGL_EXT_pixel_format: Boolean;
  7707. var
  7708. extstring: String;
  7709. begin
  7710. Result := FALSE;
  7711. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7712. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7713. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7714. if glext_ExtensionSupported('WGL_EXT_pixel_format', extstring) then
  7715. begin
  7716. wglGetPixelFormatAttribivEXT := wglGetProcAddress('wglGetPixelFormatAttribivEXT');
  7717. if not Assigned(wglGetPixelFormatAttribivEXT) then Exit;
  7718. wglGetPixelFormatAttribfvEXT := wglGetProcAddress('wglGetPixelFormatAttribfvEXT');
  7719. if not Assigned(wglGetPixelFormatAttribfvEXT) then Exit;
  7720. wglChoosePixelFormatEXT := wglGetProcAddress('wglChoosePixelFormatEXT');
  7721. if not Assigned(wglChoosePixelFormatEXT) then Exit;
  7722. Result := TRUE;
  7723. end;
  7724. end;
  7725. function Load_WGL_I3D_digital_video_control: Boolean;
  7726. var
  7727. extstring: String;
  7728. begin
  7729. Result := FALSE;
  7730. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7731. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7732. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7733. if glext_ExtensionSupported('WGL_I3D_digital_video_control', extstring) then
  7734. begin
  7735. wglGetDigitalVideoParametersI3D := wglGetProcAddress('wglGetDigitalVideoParametersI3D');
  7736. if not Assigned(wglGetDigitalVideoParametersI3D) then Exit;
  7737. wglSetDigitalVideoParametersI3D := wglGetProcAddress('wglSetDigitalVideoParametersI3D');
  7738. if not Assigned(wglSetDigitalVideoParametersI3D) then Exit;
  7739. Result := TRUE;
  7740. end;
  7741. end;
  7742. function Load_WGL_I3D_gamma: Boolean;
  7743. var
  7744. extstring: String;
  7745. begin
  7746. Result := FALSE;
  7747. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7748. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7749. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7750. if glext_ExtensionSupported('WGL_I3D_gamma', extstring) then
  7751. begin
  7752. wglGetGammaTableParametersI3D := wglGetProcAddress('wglGetGammaTableParametersI3D');
  7753. if not Assigned(wglGetGammaTableParametersI3D) then Exit;
  7754. wglSetGammaTableParametersI3D := wglGetProcAddress('wglSetGammaTableParametersI3D');
  7755. if not Assigned(wglSetGammaTableParametersI3D) then Exit;
  7756. wglGetGammaTableI3D := wglGetProcAddress('wglGetGammaTableI3D');
  7757. if not Assigned(wglGetGammaTableI3D) then Exit;
  7758. wglSetGammaTableI3D := wglGetProcAddress('wglSetGammaTableI3D');
  7759. if not Assigned(wglSetGammaTableI3D) then Exit;
  7760. Result := TRUE;
  7761. end;
  7762. end;
  7763. function Load_WGL_I3D_genlock: Boolean;
  7764. var
  7765. extstring: String;
  7766. begin
  7767. Result := FALSE;
  7768. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7769. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7770. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  7771. if glext_ExtensionSupported('WGL_I3D_genlock', extstring) then
  7772. begin
  7773. wglEnableGenlockI3D := wglGetProcAddress('wglEnableGenlockI3D');
  7774. if not Assigned(wglEnableGenlockI3D) then Exit;
  7775. wglDisableGenlockI3D := wglGetProcAddress('wglDisableGenlockI3D');
  7776. if not Assigned(wglDisableGenlockI3D) then Exit;
  7777. wglIsEnabledGenlockI3D := wglGetProcAddress('wglIsEnabledGenlockI3D');
  7778. if not Assigned(wglIsEnabledGenlockI3D) then Exit;
  7779. wglGenlockSourceI3D := wglGetProcAddress('wglGenlockSourceI3D');
  7780. if not Assigned(wglGenlockSourceI3D) then Exit;
  7781. wglGetGenlockSourceI3D := wglGetProcAddress('wglGetGenlockSourceI3D');
  7782. if not Assigned(wglGetGenlockSourceI3D) then Exit;
  7783. wglGenlockSourceEdgeI3D := wglGetProcAddress('wglGenlockSourceEdgeI3D');
  7784. if not Assigned(wglGenlockSourceEdgeI3D) then Exit;
  7785. wglGetGenlockSourceEdgeI3D := wglGetProcAddress('wglGetGenlockSourceEdgeI3D');
  7786. if not Assigned(wglGetGenlockSourceEdgeI3D) then Exit;
  7787. wglGenlockSampleRateI3D := wglGetProcAddress('wglGenlockSampleRateI3D');
  7788. if not Assigned(wglGenlockSampleRateI3D) then Exit;
  7789. wglGetGenlockSampleRateI3D := wglGetProcAddress('wglGetGenlockSampleRateI3D');
  7790. if not Assigned(wglGetGenlockSampleRateI3D) then Exit;
  7791. wglGenlockSourceDelayI3D := wglGetProcAddress('wglGenlockSourceDelayI3D');
  7792. if not Assigned(wglGenlockSourceDelayI3D) then Exit;
  7793. wglGetGenlockSourceDelayI3D := wglGetProcAddress('wglGetGenlockSourceDelayI3D');
  7794. if not Assigned(wglGetGenlockSourceDelayI3D) then Exit;
  7795. wglQueryGenlockMaxSourceDelayI3D := wglGetProcAddress('wglQueryGenlockMaxSourceDelayI3D');
  7796. if not Assigned(wglQueryGenlockMaxSourceDelayI3D) then Exit;
  7797. Result := TRUE;
  7798. end;
  7799. end;
  7800. {$ENDIF}
  7801. function Load_GL_ARB_matrix_palette: Boolean;
  7802. var
  7803. extstring: String;
  7804. begin
  7805. Result := FALSE;
  7806. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7807. if glext_ExtensionSupported('GL_ARB_matrix_palette', extstring) then
  7808. begin
  7809. glCurrentPaletteMatrixARB := wglGetProcAddress('glCurrentPaletteMatrixARB');
  7810. if not Assigned(glCurrentPaletteMatrixARB) then Exit;
  7811. glMatrixIndexubvARB := wglGetProcAddress('glMatrixIndexubvARB');
  7812. if not Assigned(glMatrixIndexubvARB) then Exit;
  7813. glMatrixIndexusvARB := wglGetProcAddress('glMatrixIndexusvARB');
  7814. if not Assigned(glMatrixIndexusvARB) then Exit;
  7815. glMatrixIndexuivARB := wglGetProcAddress('glMatrixIndexuivARB');
  7816. if not Assigned(glMatrixIndexuivARB) then Exit;
  7817. glMatrixIndexPointerARB := wglGetProcAddress('glMatrixIndexPointerARB');
  7818. if not Assigned(glMatrixIndexPointerARB) then Exit;
  7819. Result := TRUE;
  7820. end;
  7821. end;
  7822. function Load_GL_NV_element_array: Boolean;
  7823. var
  7824. extstring: String;
  7825. begin
  7826. Result := FALSE;
  7827. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7828. if glext_ExtensionSupported('GL_NV_element_array', extstring) then
  7829. begin
  7830. glElementPointerNV := wglGetProcAddress('glElementPointerNV');
  7831. if not Assigned(glElementPointerNV) then Exit;
  7832. glDrawElementArrayNV := wglGetProcAddress('glDrawElementArrayNV');
  7833. if not Assigned(glDrawElementArrayNV) then Exit;
  7834. glDrawRangeElementArrayNV := wglGetProcAddress('glDrawRangeElementArrayNV');
  7835. if not Assigned(glDrawRangeElementArrayNV) then Exit;
  7836. glMultiDrawElementArrayNV := wglGetProcAddress('glMultiDrawElementArrayNV');
  7837. if not Assigned(glMultiDrawElementArrayNV) then Exit;
  7838. glMultiDrawRangeElementArrayNV := wglGetProcAddress('glMultiDrawRangeElementArrayNV');
  7839. if not Assigned(glMultiDrawRangeElementArrayNV) then Exit;
  7840. Result := TRUE;
  7841. end;
  7842. end;
  7843. function Load_GL_NV_float_buffer: Boolean;
  7844. var
  7845. extstring: String;
  7846. begin
  7847. Result := FALSE;
  7848. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7849. if glext_ExtensionSupported('GL_NV_float_buffer', extstring) then
  7850. begin
  7851. Result := TRUE;
  7852. end;
  7853. end;
  7854. function Load_GL_NV_fragment_program: Boolean;
  7855. var
  7856. extstring: String;
  7857. begin
  7858. Result := FALSE;
  7859. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7860. if glext_ExtensionSupported('GL_NV_fragment_program', extstring) then
  7861. begin
  7862. glProgramNamedParameter4fNV := wglGetProcAddress('glProgramNamedParameter4fNV');
  7863. if not Assigned(glProgramNamedParameter4fNV) then Exit;
  7864. glProgramNamedParameter4dNV := wglGetProcAddress('glProgramNamedParameter4dNV');
  7865. if not Assigned(glProgramNamedParameter4dNV) then Exit;
  7866. glGetProgramNamedParameterfvNV := wglGetProcAddress('glGetProgramNamedParameterfvNV');
  7867. if not Assigned(glGetProgramNamedParameterfvNV) then Exit;
  7868. glGetProgramNamedParameterdvNV := wglGetProcAddress('glGetProgramNamedParameterdvNV');
  7869. if not Assigned(glGetProgramNamedParameterdvNV) then Exit;
  7870. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  7871. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  7872. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  7873. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  7874. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  7875. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  7876. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  7877. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  7878. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  7879. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  7880. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  7881. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  7882. Result := TRUE;
  7883. end;
  7884. end;
  7885. function Load_GL_NV_primitive_restart: Boolean;
  7886. var
  7887. extstring: String;
  7888. begin
  7889. Result := FALSE;
  7890. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7891. if glext_ExtensionSupported('GL_NV_primitive_restart', extstring) then
  7892. begin
  7893. glPrimitiveRestartNV := wglGetProcAddress('glPrimitiveRestartNV');
  7894. if not Assigned(glPrimitiveRestartNV) then Exit;
  7895. glPrimitiveRestartIndexNV := wglGetProcAddress('glPrimitiveRestartIndexNV');
  7896. if not Assigned(glPrimitiveRestartIndexNV) then Exit;
  7897. Result := TRUE;
  7898. end;
  7899. end;
  7900. function Load_GL_NV_vertex_program2: Boolean;
  7901. var
  7902. extstring: String;
  7903. begin
  7904. Result := FALSE;
  7905. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7906. if glext_ExtensionSupported('GL_NV_vertex_program2', extstring) then
  7907. begin
  7908. Result := TRUE;
  7909. end;
  7910. end;
  7911. {$IFDEF Windows}
  7912. function Load_WGL_NV_render_texture_rectangle: Boolean;
  7913. var
  7914. extstring: String;
  7915. begin
  7916. Result := FALSE;
  7917. @wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7918. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7919. extstring := wglGetExtensionsStringARB(wglGetCurrentDC);
  7920. if glext_ExtensionSupported('WGL_NV_render_texture_rectangle', extstring) then
  7921. begin
  7922. Result := TRUE;
  7923. end;
  7924. end;
  7925. {$ENDIF}
  7926. function Load_GL_NV_pixel_data_range: Boolean;
  7927. var
  7928. extstring: String;
  7929. begin
  7930. Result := FALSE;
  7931. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7932. if glext_ExtensionSupported('GL_NV_pixel_data_range', extstring) then
  7933. begin
  7934. @glPixelDataRangeNV := wglGetProcAddress('glPixelDataRangeNV');
  7935. if not Assigned(glPixelDataRangeNV) then Exit;
  7936. @glFlushPixelDataRangeNV := wglGetProcAddress('glFlushPixelDataRangeNV');
  7937. if not Assigned(glFlushPixelDataRangeNV) then Exit;
  7938. {$IFDEF Windows}
  7939. @wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  7940. if not Assigned(wglAllocateMemoryNV) then Exit;
  7941. @wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  7942. if not Assigned(wglFreeMemoryNV) then Exit;
  7943. {$ENDIF}
  7944. Result := TRUE;
  7945. end;
  7946. end;
  7947. function Load_GL_EXT_texture_rectangle: Boolean;
  7948. var
  7949. extstring: String;
  7950. begin
  7951. Result := FALSE;
  7952. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7953. if glext_ExtensionSupported('GL_EXT_texture_rectangle', extstring) then
  7954. begin
  7955. Result := TRUE;
  7956. end;
  7957. end;
  7958. function Load_GL_S3_s3tc: Boolean;
  7959. var
  7960. extstring: String;
  7961. begin
  7962. Result := FALSE;
  7963. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7964. if glext_ExtensionSupported('GL_S3_s3tc', extstring) then
  7965. begin
  7966. Result := TRUE;
  7967. end;
  7968. end;
  7969. function Load_GL_ATI_draw_buffers: Boolean;
  7970. var
  7971. extstring: String;
  7972. begin
  7973. Result := FALSE;
  7974. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7975. if glext_ExtensionSupported('GL_ATI_draw_buffers', extstring) then
  7976. begin
  7977. @glDrawBuffersATI := wglGetProcAddress('glDrawBuffersATI');
  7978. if not Assigned(glDrawBuffersATI) then Exit;
  7979. Result := TRUE;
  7980. end;
  7981. end;
  7982. {$IFDEF Windows}
  7983. function Load_WGL_ATI_pixel_format_float: Boolean;
  7984. var
  7985. extstring: String;
  7986. begin
  7987. Result := FALSE;
  7988. @wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7989. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7990. extstring := wglGetExtensionsStringARB(wglGetCurrentDC);
  7991. if glext_ExtensionSupported('WGL_ATI_pixel_format_float', extstring) then
  7992. begin
  7993. Result := TRUE;
  7994. end;
  7995. end;
  7996. {$ENDIF}
  7997. function Load_GL_ATI_texture_env_combine3: Boolean;
  7998. var
  7999. extstring: String;
  8000. begin
  8001. Result := FALSE;
  8002. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8003. if glext_ExtensionSupported('GL_ATI_texture_env_combine3', extstring) then
  8004. begin
  8005. Result := TRUE;
  8006. end;
  8007. end;
  8008. function Load_GL_ATI_texture_float: Boolean;
  8009. var
  8010. extstring: String;
  8011. begin
  8012. Result := FALSE;
  8013. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8014. if glext_ExtensionSupported('GL_ATI_texture_float', extstring) then
  8015. begin
  8016. Result := TRUE;
  8017. end;
  8018. end;
  8019. function Load_GL_NV_texture_expand_normal: Boolean;
  8020. var
  8021. extstring: String;
  8022. begin
  8023. Result := FALSE;
  8024. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8025. if glext_ExtensionSupported('GL_NV_texture_expand_normal', extstring) then
  8026. begin
  8027. Result := TRUE;
  8028. end;
  8029. end;
  8030. function Load_GL_NV_half_float: Boolean;
  8031. var
  8032. extstring: String;
  8033. begin
  8034. Result := FALSE;
  8035. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8036. if glext_ExtensionSupported('GL_NV_half_float', extstring) then
  8037. begin
  8038. @glVertex2hNV := wglGetProcAddress('glVertex2hNV');
  8039. if not Assigned(glVertex2hNV) then Exit;
  8040. @glVertex2hvNV := wglGetProcAddress('glVertex2hvNV');
  8041. if not Assigned(glVertex2hvNV) then Exit;
  8042. @glVertex3hNV := wglGetProcAddress('glVertex3hNV');
  8043. if not Assigned(glVertex3hNV) then Exit;
  8044. @glVertex3hvNV := wglGetProcAddress('glVertex3hvNV');
  8045. if not Assigned(glVertex3hvNV) then Exit;
  8046. @glVertex4hNV := wglGetProcAddress('glVertex4hNV');
  8047. if not Assigned(glVertex4hNV) then Exit;
  8048. @glVertex4hvNV := wglGetProcAddress('glVertex4hvNV');
  8049. if not Assigned(glVertex4hvNV) then Exit;
  8050. @glNormal3hNV := wglGetProcAddress('glNormal3hNV');
  8051. if not Assigned(glNormal3hNV) then Exit;
  8052. @glNormal3hvNV := wglGetProcAddress('glNormal3hvNV');
  8053. if not Assigned(glNormal3hvNV) then Exit;
  8054. @glColor3hNV := wglGetProcAddress('glColor3hNV');
  8055. if not Assigned(glColor3hNV) then Exit;
  8056. @glColor3hvNV := wglGetProcAddress('glColor3hvNV');
  8057. if not Assigned(glColor3hvNV) then Exit;
  8058. @glColor4hNV := wglGetProcAddress('glColor4hNV');
  8059. if not Assigned(glColor4hNV) then Exit;
  8060. @glColor4hvNV := wglGetProcAddress('glColor4hvNV');
  8061. if not Assigned(glColor4hvNV) then Exit;
  8062. @glTexCoord1hNV := wglGetProcAddress('glTexCoord1hNV');
  8063. if not Assigned(glTexCoord1hNV) then Exit;
  8064. @glTexCoord1hvNV := wglGetProcAddress('glTexCoord1hvNV');
  8065. if not Assigned(glTexCoord1hvNV) then Exit;
  8066. @glTexCoord2hNV := wglGetProcAddress('glTexCoord2hNV');
  8067. if not Assigned(glTexCoord2hNV) then Exit;
  8068. @glTexCoord2hvNV := wglGetProcAddress('glTexCoord2hvNV');
  8069. if not Assigned(glTexCoord2hvNV) then Exit;
  8070. @glTexCoord3hNV := wglGetProcAddress('glTexCoord3hNV');
  8071. if not Assigned(glTexCoord3hNV) then Exit;
  8072. @glTexCoord3hvNV := wglGetProcAddress('glTexCoord3hvNV');
  8073. if not Assigned(glTexCoord3hvNV) then Exit;
  8074. @glTexCoord4hNV := wglGetProcAddress('glTexCoord4hNV');
  8075. if not Assigned(glTexCoord4hNV) then Exit;
  8076. @glTexCoord4hvNV := wglGetProcAddress('glTexCoord4hvNV');
  8077. if not Assigned(glTexCoord4hvNV) then Exit;
  8078. @glMultiTexCoord1hNV := wglGetProcAddress('glMultiTexCoord1hNV');
  8079. if not Assigned(glMultiTexCoord1hNV) then Exit;
  8080. @glMultiTexCoord1hvNV := wglGetProcAddress('glMultiTexCoord1hvNV');
  8081. if not Assigned(glMultiTexCoord1hvNV) then Exit;
  8082. @glMultiTexCoord2hNV := wglGetProcAddress('glMultiTexCoord2hNV');
  8083. if not Assigned(glMultiTexCoord2hNV) then Exit;
  8084. @glMultiTexCoord2hvNV := wglGetProcAddress('glMultiTexCoord2hvNV');
  8085. if not Assigned(glMultiTexCoord2hvNV) then Exit;
  8086. @glMultiTexCoord3hNV := wglGetProcAddress('glMultiTexCoord3hNV');
  8087. if not Assigned(glMultiTexCoord3hNV) then Exit;
  8088. @glMultiTexCoord3hvNV := wglGetProcAddress('glMultiTexCoord3hvNV');
  8089. if not Assigned(glMultiTexCoord3hvNV) then Exit;
  8090. @glMultiTexCoord4hNV := wglGetProcAddress('glMultiTexCoord4hNV');
  8091. if not Assigned(glMultiTexCoord4hNV) then Exit;
  8092. @glMultiTexCoord4hvNV := wglGetProcAddress('glMultiTexCoord4hvNV');
  8093. if not Assigned(glMultiTexCoord4hvNV) then Exit;
  8094. @glFogCoordhNV := wglGetProcAddress('glFogCoordhNV');
  8095. if not Assigned(glFogCoordhNV) then Exit;
  8096. @glFogCoordhvNV := wglGetProcAddress('glFogCoordhvNV');
  8097. if not Assigned(glFogCoordhvNV) then Exit;
  8098. @glSecondaryColor3hNV := wglGetProcAddress('glSecondaryColor3hNV');
  8099. if not Assigned(glSecondaryColor3hNV) then Exit;
  8100. @glSecondaryColor3hvNV := wglGetProcAddress('glSecondaryColor3hvNV');
  8101. if not Assigned(glSecondaryColor3hvNV) then Exit;
  8102. @glVertexWeighthNV := wglGetProcAddress('glVertexWeighthNV');
  8103. if not Assigned(glVertexWeighthNV) then Exit;
  8104. @glVertexWeighthvNV := wglGetProcAddress('glVertexWeighthvNV');
  8105. if not Assigned(glVertexWeighthvNV) then Exit;
  8106. @glVertexAttrib1hNV := wglGetProcAddress('glVertexAttrib1hNV');
  8107. if not Assigned(glVertexAttrib1hNV) then Exit;
  8108. @glVertexAttrib1hvNV := wglGetProcAddress('glVertexAttrib1hvNV');
  8109. if not Assigned(glVertexAttrib1hvNV) then Exit;
  8110. @glVertexAttrib2hNV := wglGetProcAddress('glVertexAttrib2hNV');
  8111. if not Assigned(glVertexAttrib2hNV) then Exit;
  8112. @glVertexAttrib2hvNV := wglGetProcAddress('glVertexAttrib2hvNV');
  8113. if not Assigned(glVertexAttrib2hvNV) then Exit;
  8114. @glVertexAttrib3hNV := wglGetProcAddress('glVertexAttrib3hNV');
  8115. if not Assigned(glVertexAttrib3hNV) then Exit;
  8116. @glVertexAttrib3hvNV := wglGetProcAddress('glVertexAttrib3hvNV');
  8117. if not Assigned(glVertexAttrib3hvNV) then Exit;
  8118. @glVertexAttrib4hNV := wglGetProcAddress('glVertexAttrib4hNV');
  8119. if not Assigned(glVertexAttrib4hNV) then Exit;
  8120. @glVertexAttrib4hvNV := wglGetProcAddress('glVertexAttrib4hvNV');
  8121. if not Assigned(glVertexAttrib4hvNV) then Exit;
  8122. @glVertexAttribs1hvNV := wglGetProcAddress('glVertexAttribs1hvNV');
  8123. if not Assigned(glVertexAttribs1hvNV) then Exit;
  8124. @glVertexAttribs2hvNV := wglGetProcAddress('glVertexAttribs2hvNV');
  8125. if not Assigned(glVertexAttribs2hvNV) then Exit;
  8126. @glVertexAttribs3hvNV := wglGetProcAddress('glVertexAttribs3hvNV');
  8127. if not Assigned(glVertexAttribs3hvNV) then Exit;
  8128. @glVertexAttribs4hvNV := wglGetProcAddress('glVertexAttribs4hvNV');
  8129. if not Assigned(glVertexAttribs4hvNV) then Exit;
  8130. Result := TRUE;
  8131. end;
  8132. end;
  8133. function Load_GL_ATI_map_object_buffer: Boolean;
  8134. var
  8135. extstring: String;
  8136. begin
  8137. Result := FALSE;
  8138. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8139. if glext_ExtensionSupported('GL_ATI_map_object_buffer', extstring) then
  8140. begin
  8141. @glMapObjectBufferATI := wglGetProcAddress('glMapObjectBufferATI');
  8142. if not Assigned(glMapObjectBufferATI) then Exit;
  8143. @glUnmapObjectBufferATI := wglGetProcAddress('glUnmapObjectBufferATI');
  8144. if not Assigned(glUnmapObjectBufferATI) then Exit;
  8145. Result := TRUE;
  8146. end;
  8147. end;
  8148. function Load_GL_ATI_separate_stencil: Boolean;
  8149. var
  8150. extstring: String;
  8151. begin
  8152. Result := FALSE;
  8153. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8154. if glext_ExtensionSupported('GL_ATI_separate_stencil', extstring) then
  8155. begin
  8156. @glStencilOpSeparateATI := wglGetProcAddress('glStencilOpSeparateATI');
  8157. if not Assigned(glStencilOpSeparateATI) then Exit;
  8158. @glStencilFuncSeparateATI := wglGetProcAddress('glStencilFuncSeparateATI');
  8159. if not Assigned(glStencilFuncSeparateATI) then Exit;
  8160. Result := TRUE;
  8161. end;
  8162. end;
  8163. function Load_GL_ATI_vertex_attrib_array_object: Boolean;
  8164. var
  8165. extstring: String;
  8166. begin
  8167. Result := FALSE;
  8168. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8169. if glext_ExtensionSupported('GL_ATI_vertex_attrib_array_object', extstring) then
  8170. begin
  8171. @glVertexAttribArrayObjectATI := wglGetProcAddress('glVertexAttribArrayObjectATI');
  8172. if not Assigned(glVertexAttribArrayObjectATI) then Exit;
  8173. @glGetVertexAttribArrayObjectfvATI := wglGetProcAddress('glGetVertexAttribArrayObjectfvATI');
  8174. if not Assigned(glGetVertexAttribArrayObjectfvATI) then Exit;
  8175. @glGetVertexAttribArrayObjectivATI := wglGetProcAddress('glGetVertexAttribArrayObjectivATI');
  8176. if not Assigned(glGetVertexAttribArrayObjectivATI) then Exit;
  8177. Result := TRUE;
  8178. end;
  8179. end;
  8180. function Load_GL_ARB_occlusion_query: Boolean;
  8181. var
  8182. extstring: String;
  8183. begin
  8184. Result := FALSE;
  8185. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8186. if glext_ExtensionSupported('GL_ARB_occlusion_query', extstring) then
  8187. begin
  8188. @glGenQueriesARB := wglGetProcAddress('glGenQueriesARB');
  8189. if not Assigned(glGenQueriesARB) then Exit;
  8190. @glDeleteQueriesARB := wglGetProcAddress('glDeleteQueriesARB');
  8191. if not Assigned(glDeleteQueriesARB) then Exit;
  8192. @glIsQueryARB := wglGetProcAddress('glIsQueryARB');
  8193. if not Assigned(glIsQueryARB) then Exit;
  8194. @glBeginQueryARB := wglGetProcAddress('glBeginQueryARB');
  8195. if not Assigned(glBeginQueryARB) then Exit;
  8196. @glEndQueryARB := wglGetProcAddress('glEndQueryARB');
  8197. if not Assigned(glEndQueryARB) then Exit;
  8198. @glGetQueryivARB := wglGetProcAddress('glGetQueryivARB');
  8199. if not Assigned(glGetQueryivARB) then Exit;
  8200. @glGetQueryObjectivARB := wglGetProcAddress('glGetQueryObjectivARB');
  8201. if not Assigned(glGetQueryObjectivARB) then Exit;
  8202. @glGetQueryObjectuivARB := wglGetProcAddress('glGetQueryObjectuivARB');
  8203. if not Assigned(glGetQueryObjectuivARB) then Exit;
  8204. Result := TRUE;
  8205. end;
  8206. end;
  8207. function Load_GL_ARB_shader_objects: Boolean;
  8208. var
  8209. extstring: String;
  8210. begin
  8211. Result := FALSE;
  8212. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8213. if glext_ExtensionSupported('GL_ARB_shader_objects', extstring) then
  8214. begin
  8215. @glDeleteObjectARB := wglGetProcAddress('glDeleteObjectARB');
  8216. if not Assigned(glDeleteObjectARB) then Exit;
  8217. @glGetHandleARB := wglGetProcAddress('glGetHandleARB');
  8218. if not Assigned(glGetHandleARB) then Exit;
  8219. @glDetachObjectARB := wglGetProcAddress('glDetachObjectARB');
  8220. if not Assigned(glDetachObjectARB) then Exit;
  8221. @glCreateShaderObjectARB := wglGetProcAddress('glCreateShaderObjectARB');
  8222. if not Assigned(glCreateShaderObjectARB) then Exit;
  8223. @glShaderSourceARB := wglGetProcAddress('glShaderSourceARB');
  8224. if not Assigned(glShaderSourceARB) then Exit;
  8225. @glCompileShaderARB := wglGetProcAddress('glCompileShaderARB');
  8226. if not Assigned(glCompileShaderARB) then Exit;
  8227. @glCreateProgramObjectARB := wglGetProcAddress('glCreateProgramObjectARB');
  8228. if not Assigned(glCreateProgramObjectARB) then Exit;
  8229. @glAttachObjectARB := wglGetProcAddress('glAttachObjectARB');
  8230. if not Assigned(glAttachObjectARB) then Exit;
  8231. @glLinkProgramARB := wglGetProcAddress('glLinkProgramARB');
  8232. if not Assigned(glLinkProgramARB) then Exit;
  8233. @glUseProgramObjectARB := wglGetProcAddress('glUseProgramObjectARB');
  8234. if not Assigned(glUseProgramObjectARB) then Exit;
  8235. @glValidateProgramARB := wglGetProcAddress('glValidateProgramARB');
  8236. if not Assigned(glValidateProgramARB) then Exit;
  8237. @glUniform1fARB := wglGetProcAddress('glUniform1fARB');
  8238. if not Assigned(glUniform1fARB) then Exit;
  8239. @glUniform2fARB := wglGetProcAddress('glUniform2fARB');
  8240. if not Assigned(glUniform2fARB) then Exit;
  8241. @glUniform3fARB := wglGetProcAddress('glUniform3fARB');
  8242. if not Assigned(glUniform3fARB) then Exit;
  8243. @glUniform4fARB := wglGetProcAddress('glUniform4fARB');
  8244. if not Assigned(glUniform4fARB) then Exit;
  8245. @glUniform1iARB := wglGetProcAddress('glUniform1iARB');
  8246. if not Assigned(glUniform1iARB) then Exit;
  8247. @glUniform2iARB := wglGetProcAddress('glUniform2iARB');
  8248. if not Assigned(glUniform2iARB) then Exit;
  8249. @glUniform3iARB := wglGetProcAddress('glUniform3iARB');
  8250. if not Assigned(glUniform3iARB) then Exit;
  8251. @glUniform4iARB := wglGetProcAddress('glUniform4iARB');
  8252. if not Assigned(glUniform4iARB) then Exit;
  8253. @glUniform1fvARB := wglGetProcAddress('glUniform1fvARB');
  8254. if not Assigned(glUniform1fvARB) then Exit;
  8255. @glUniform2fvARB := wglGetProcAddress('glUniform2fvARB');
  8256. if not Assigned(glUniform2fvARB) then Exit;
  8257. @glUniform3fvARB := wglGetProcAddress('glUniform3fvARB');
  8258. if not Assigned(glUniform3fvARB) then Exit;
  8259. @glUniform4fvARB := wglGetProcAddress('glUniform4fvARB');
  8260. if not Assigned(glUniform4fvARB) then Exit;
  8261. @glUniform1ivARB := wglGetProcAddress('glUniform1ivARB');
  8262. if not Assigned(glUniform1ivARB) then Exit;
  8263. @glUniform2ivARB := wglGetProcAddress('glUniform2ivARB');
  8264. if not Assigned(glUniform2ivARB) then Exit;
  8265. @glUniform3ivARB := wglGetProcAddress('glUniform3ivARB');
  8266. if not Assigned(glUniform3ivARB) then Exit;
  8267. @glUniform4ivARB := wglGetProcAddress('glUniform4ivARB');
  8268. if not Assigned(glUniform4ivARB) then Exit;
  8269. @glUniformMatrix2fvARB := wglGetProcAddress('glUniformMatrix2fvARB');
  8270. if not Assigned(glUniformMatrix2fvARB) then Exit;
  8271. @glUniformMatrix3fvARB := wglGetProcAddress('glUniformMatrix3fvARB');
  8272. if not Assigned(glUniformMatrix3fvARB) then Exit;
  8273. @glUniformMatrix4fvARB := wglGetProcAddress('glUniformMatrix4fvARB');
  8274. if not Assigned(glUniformMatrix4fvARB) then Exit;
  8275. @glGetObjectParameterfvARB := wglGetProcAddress('glGetObjectParameterfvARB');
  8276. if not Assigned(glGetObjectParameterfvARB) then Exit;
  8277. @glGetObjectParameterivARB := wglGetProcAddress('glGetObjectParameterivARB');
  8278. if not Assigned(glGetObjectParameterivARB) then Exit;
  8279. @glGetInfoLogARB := wglGetProcAddress('glGetInfoLogARB');
  8280. if not Assigned(glGetInfoLogARB) then Exit;
  8281. @glGetAttachedObjectsARB := wglGetProcAddress('glGetAttachedObjectsARB');
  8282. if not Assigned(glGetAttachedObjectsARB) then Exit;
  8283. @glGetUniformLocationARB := wglGetProcAddress('glGetUniformLocationARB');
  8284. if not Assigned(glGetUniformLocationARB) then Exit;
  8285. @glGetActiveUniformARB := wglGetProcAddress('glGetActiveUniformARB');
  8286. if not Assigned(glGetActiveUniformARB) then Exit;
  8287. @glGetUniformfvARB := wglGetProcAddress('glGetUniformfvARB');
  8288. if not Assigned(glGetUniformfvARB) then Exit;
  8289. @glGetUniformivARB := wglGetProcAddress('glGetUniformivARB');
  8290. if not Assigned(glGetUniformivARB) then Exit;
  8291. @glGetShaderSourceARB := wglGetProcAddress('glGetShaderSourceARB');
  8292. if not Assigned(glGetShaderSourceARB) then Exit;
  8293. Result := TRUE;
  8294. end;
  8295. end;
  8296. function Load_GL_ARB_vertex_shader: Boolean;
  8297. var
  8298. extstring: String;
  8299. begin
  8300. Result := FALSE;
  8301. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8302. if glext_ExtensionSupported('GL_ARB_vertex_shader', extstring) then
  8303. begin
  8304. @glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  8305. if not Assigned(glVertexAttrib1fARB) then Exit;
  8306. @glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  8307. if not Assigned(glVertexAttrib1sARB) then Exit;
  8308. @glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  8309. if not Assigned(glVertexAttrib1dARB) then Exit;
  8310. @glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  8311. if not Assigned(glVertexAttrib2fARB) then Exit;
  8312. @glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  8313. if not Assigned(glVertexAttrib2sARB) then Exit;
  8314. @glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  8315. if not Assigned(glVertexAttrib2dARB) then Exit;
  8316. @glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  8317. if not Assigned(glVertexAttrib3fARB) then Exit;
  8318. @glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  8319. if not Assigned(glVertexAttrib3sARB) then Exit;
  8320. @glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  8321. if not Assigned(glVertexAttrib3dARB) then Exit;
  8322. @glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  8323. if not Assigned(glVertexAttrib4fARB) then Exit;
  8324. @glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  8325. if not Assigned(glVertexAttrib4sARB) then Exit;
  8326. @glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  8327. if not Assigned(glVertexAttrib4dARB) then Exit;
  8328. @glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  8329. if not Assigned(glVertexAttrib4NubARB) then Exit;
  8330. @glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  8331. if not Assigned(glVertexAttrib1fvARB) then Exit;
  8332. @glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  8333. if not Assigned(glVertexAttrib1svARB) then Exit;
  8334. @glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  8335. if not Assigned(glVertexAttrib1dvARB) then Exit;
  8336. @glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  8337. if not Assigned(glVertexAttrib2fvARB) then Exit;
  8338. @glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  8339. if not Assigned(glVertexAttrib2svARB) then Exit;
  8340. @glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  8341. if not Assigned(glVertexAttrib2dvARB) then Exit;
  8342. @glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  8343. if not Assigned(glVertexAttrib3fvARB) then Exit;
  8344. @glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  8345. if not Assigned(glVertexAttrib3svARB) then Exit;
  8346. @glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  8347. if not Assigned(glVertexAttrib3dvARB) then Exit;
  8348. @glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  8349. if not Assigned(glVertexAttrib4fvARB) then Exit;
  8350. @glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  8351. if not Assigned(glVertexAttrib4svARB) then Exit;
  8352. @glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  8353. if not Assigned(glVertexAttrib4dvARB) then Exit;
  8354. @glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  8355. if not Assigned(glVertexAttrib4ivARB) then Exit;
  8356. @glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  8357. if not Assigned(glVertexAttrib4bvARB) then Exit;
  8358. @glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  8359. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  8360. @glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  8361. if not Assigned(glVertexAttrib4usvARB) then Exit;
  8362. @glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  8363. if not Assigned(glVertexAttrib4uivARB) then Exit;
  8364. @glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  8365. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  8366. @glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  8367. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  8368. @glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  8369. if not Assigned(glVertexAttrib4NivARB) then Exit;
  8370. @glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  8371. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  8372. @glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  8373. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  8374. @glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  8375. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  8376. @glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  8377. if not Assigned(glVertexAttribPointerARB) then Exit;
  8378. @glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  8379. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  8380. @glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  8381. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  8382. @glBindAttribLocationARB := wglGetProcAddress('glBindAttribLocationARB');
  8383. if not Assigned(glBindAttribLocationARB) then Exit;
  8384. @glGetActiveAttribARB := wglGetProcAddress('glGetActiveAttribARB');
  8385. if not Assigned(glGetActiveAttribARB) then Exit;
  8386. @glGetAttribLocationARB := wglGetProcAddress('glGetAttribLocationARB');
  8387. if not Assigned(glGetAttribLocationARB) then Exit;
  8388. @glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  8389. if not Assigned(glGetVertexAttribdvARB) then Exit;
  8390. @glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  8391. if not Assigned(glGetVertexAttribfvARB) then Exit;
  8392. @glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  8393. if not Assigned(glGetVertexAttribivARB) then Exit;
  8394. @glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  8395. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  8396. Result := TRUE;
  8397. end;
  8398. end;
  8399. function Load_GL_ARB_fragment_shader: Boolean;
  8400. var
  8401. extstring: String;
  8402. begin
  8403. Result := FALSE;
  8404. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8405. if glext_ExtensionSupported('GL_ARB_fragment_shader', extstring) then
  8406. begin
  8407. Result := TRUE;
  8408. end;
  8409. end;
  8410. function Load_GL_ARB_shading_language_100: Boolean;
  8411. var
  8412. extstring: String;
  8413. begin
  8414. Result := FALSE;
  8415. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8416. if glext_ExtensionSupported('GL_ARB_shading_language_100', extstring) then
  8417. begin
  8418. Result := TRUE;
  8419. end;
  8420. end;
  8421. function Load_GL_ARB_texture_non_power_of_two: Boolean;
  8422. var
  8423. extstring: String;
  8424. begin
  8425. Result := FALSE;
  8426. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8427. if glext_ExtensionSupported('GL_ARB_texture_non_power_of_two', extstring) then
  8428. begin
  8429. Result := TRUE;
  8430. end;
  8431. end;
  8432. function Load_GL_ARB_point_sprite: Boolean;
  8433. var
  8434. extstring: String;
  8435. begin
  8436. Result := FALSE;
  8437. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8438. if glext_ExtensionSupported('GL_ARB_point_sprite', extstring) then
  8439. begin
  8440. Result := TRUE;
  8441. end;
  8442. end;
  8443. function Load_GL_EXT_depth_bounds_test: Boolean;
  8444. var
  8445. extstring: String;
  8446. begin
  8447. Result := FALSE;
  8448. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8449. if glext_ExtensionSupported('GL_EXT_depth_bounds_test', extstring) then
  8450. begin
  8451. @glDepthBoundsEXT := wglGetProcAddress('glDepthBoundsEXT');
  8452. if not Assigned(glDepthBoundsEXT) then Exit;
  8453. Result := TRUE;
  8454. end;
  8455. end;
  8456. function Load_GL_EXT_texture_mirror_clamp: Boolean;
  8457. var
  8458. extstring: String;
  8459. begin
  8460. Result := FALSE;
  8461. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8462. if glext_ExtensionSupported('GL_EXT_texture_mirror_clamp', extstring) then
  8463. begin
  8464. Result := TRUE;
  8465. end;
  8466. end;
  8467. function Load_GL_EXT_blend_equation_separate: Boolean;
  8468. var
  8469. extstring: String;
  8470. begin
  8471. Result := FALSE;
  8472. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8473. if glext_ExtensionSupported('GL_EXT_blend_equation_separate', extstring) then
  8474. begin
  8475. @glBlendEquationSeparateEXT := wglGetProcAddress('glBlendEquationSeparateEXT');
  8476. if not Assigned(glBlendEquationSeparateEXT) then Exit;
  8477. Result := TRUE;
  8478. end;
  8479. end;
  8480. function Load_GL_MESA_pack_invert: Boolean;
  8481. var
  8482. extstring: String;
  8483. begin
  8484. Result := FALSE;
  8485. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8486. if glext_ExtensionSupported('GL_MESA_pack_invert', extstring) then
  8487. begin
  8488. Result := TRUE;
  8489. end;
  8490. end;
  8491. function Load_GL_MESA_ycbcr_texture: Boolean;
  8492. var
  8493. extstring: String;
  8494. begin
  8495. Result := FALSE;
  8496. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8497. if glext_ExtensionSupported('GL_MESA_ycbcr_texture', extstring) then
  8498. begin
  8499. Result := TRUE;
  8500. end;
  8501. end;
  8502. function Load_GL_ARB_fragment_program_shadow: Boolean;
  8503. var
  8504. extstring: String;
  8505. begin
  8506. Result := FALSE;
  8507. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8508. if glext_ExtensionSupported('GL_ARB_fragment_program_shadow', extstring) then
  8509. begin
  8510. Result := TRUE;
  8511. end;
  8512. end;
  8513. function Load_GL_NV_fragment_program_option: Boolean;
  8514. var
  8515. extstring: String;
  8516. begin
  8517. Result := FALSE;
  8518. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8519. if glext_ExtensionSupported('GL_NV_fragment_program_option', extstring) then
  8520. begin
  8521. Result := TRUE;
  8522. end;
  8523. end;
  8524. function Load_GL_EXT_pixel_buffer_object: Boolean;
  8525. var
  8526. extstring: String;
  8527. begin
  8528. Result := FALSE;
  8529. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8530. if glext_ExtensionSupported('GL_EXT_pixel_buffer_object', extstring) then
  8531. begin
  8532. Result := TRUE;
  8533. end;
  8534. end;
  8535. function Load_GL_NV_fragment_program2: Boolean;
  8536. var
  8537. extstring: String;
  8538. begin
  8539. Result := FALSE;
  8540. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8541. if glext_ExtensionSupported('GL_NV_fragment_program2', extstring) then
  8542. begin
  8543. Result := TRUE;
  8544. end;
  8545. end;
  8546. function Load_GL_NV_vertex_program2_option: Boolean;
  8547. var
  8548. extstring: String;
  8549. begin
  8550. Result := FALSE;
  8551. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8552. if glext_ExtensionSupported('GL_NV_vertex_program2_option', extstring) then
  8553. begin
  8554. Result := TRUE;
  8555. end;
  8556. end;
  8557. function Load_GL_NV_vertex_program3: Boolean;
  8558. var
  8559. extstring: String;
  8560. begin
  8561. Result := FALSE;
  8562. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8563. if glext_ExtensionSupported('GL_NV_vertex_program3', extstring) then
  8564. begin
  8565. Result := TRUE;
  8566. end;
  8567. end;
  8568. function Load_GL_ARB_draw_buffers: Boolean;
  8569. var
  8570. extstring: PChar;
  8571. begin
  8572. Result := FALSE;
  8573. extstring := glGetString(GL_EXTENSIONS);
  8574. if glext_ExtensionSupported('GL_ARB_draw_buffers', extstring) then
  8575. begin
  8576. glDrawBuffersARB := wglGetProcAddress('glDrawBuffersARB');
  8577. if not Assigned(glDrawBuffersARB) then Exit;
  8578. Result := TRUE;
  8579. end;
  8580. end;
  8581. function Load_GL_ARB_texture_rectangle: Boolean;
  8582. var
  8583. extstring: PChar;
  8584. begin
  8585. Result := FALSE;
  8586. extstring := glGetString(GL_EXTENSIONS);
  8587. if glext_ExtensionSupported('GL_ARB_texture_rectangle', extstring) then
  8588. begin
  8589. Result := TRUE;
  8590. end;
  8591. end;
  8592. function Load_GL_ARB_color_buffer_float: Boolean;
  8593. var
  8594. extstring: PChar;
  8595. begin
  8596. Result := FALSE;
  8597. extstring := glGetString(GL_EXTENSIONS);
  8598. if glext_ExtensionSupported('GL_ARB_color_buffer_float', extstring) then
  8599. begin
  8600. glClampColorARB := wglGetProcAddress('glClampColorARB');
  8601. if not Assigned(glClampColorARB) then Exit;
  8602. Result := TRUE;
  8603. end;
  8604. end;
  8605. function Load_GL_ARB_half_float_pixel: Boolean;
  8606. var
  8607. extstring: PChar;
  8608. begin
  8609. Result := FALSE;
  8610. extstring := glGetString(GL_EXTENSIONS);
  8611. if glext_ExtensionSupported('GL_ARB_half_float_pixel', extstring) then
  8612. begin
  8613. Result := TRUE;
  8614. end;
  8615. end;
  8616. function Load_GL_ARB_texture_float: Boolean;
  8617. var
  8618. extstring: PChar;
  8619. begin
  8620. Result := FALSE;
  8621. extstring := glGetString(GL_EXTENSIONS);
  8622. if glext_ExtensionSupported('GL_ARB_texture_float', extstring) then
  8623. begin
  8624. Result := TRUE;
  8625. end;
  8626. end;
  8627. function Load_GL_EXT_texture_compression_dxt1: Boolean;
  8628. var
  8629. extstring: PChar;
  8630. begin
  8631. Result := FALSE;
  8632. extstring := glGetString(GL_EXTENSIONS);
  8633. if glext_ExtensionSupported('GL_EXT_texture_compression_dxt1', extstring) then
  8634. begin
  8635. Result := TRUE;
  8636. end;
  8637. end;
  8638. function Load_GL_ARB_pixel_buffer_object: Boolean;
  8639. var
  8640. extstring: PChar;
  8641. begin
  8642. Result := FALSE;
  8643. extstring := glGetString(GL_EXTENSIONS);
  8644. if glext_ExtensionSupported('GL_ARB_pixel_buffer_object', extstring) then
  8645. begin
  8646. Result := TRUE;
  8647. end;
  8648. end;
  8649. function Load_GL_EXT_framebuffer_object: Boolean;
  8650. var
  8651. extstring: PChar;
  8652. begin
  8653. Result := FALSE;
  8654. extstring := glGetString(GL_EXTENSIONS);
  8655. if glext_ExtensionSupported('GL_EXT_framebuffer_object', extstring) then
  8656. begin
  8657. glIsRenderbufferEXT := wglGetProcAddress('glIsRenderbufferEXT');
  8658. if not Assigned(glIsRenderbufferEXT) then Exit;
  8659. glBindRenderbufferEXT := wglGetProcAddress('glBindRenderbufferEXT');
  8660. if not Assigned(glBindRenderbufferEXT) then Exit;
  8661. glDeleteRenderbuffersEXT := wglGetProcAddress('glDeleteRenderbuffersEXT');
  8662. if not Assigned(glDeleteRenderbuffersEXT) then Exit;
  8663. glGenRenderbuffersEXT := wglGetProcAddress('glGenRenderbuffersEXT');
  8664. if not Assigned(glGenRenderbuffersEXT) then Exit;
  8665. glRenderbufferStorageEXT := wglGetProcAddress('glRenderbufferStorageEXT');
  8666. if not Assigned(glRenderbufferStorageEXT) then Exit;
  8667. glGetRenderbufferParameterivEXT := wglGetProcAddress('glGetRenderbufferParameterivEXT');
  8668. if not Assigned(glGetRenderbufferParameterivEXT) then Exit;
  8669. glIsFramebufferEXT := wglGetProcAddress('glIsFramebufferEXT');
  8670. if not Assigned(glIsFramebufferEXT) then Exit;
  8671. glBindFramebufferEXT := wglGetProcAddress('glBindFramebufferEXT');
  8672. if not Assigned(glBindFramebufferEXT) then Exit;
  8673. glDeleteFramebuffersEXT := wglGetProcAddress('glDeleteFramebuffersEXT');
  8674. if not Assigned(glDeleteFramebuffersEXT) then Exit;
  8675. glGenFramebuffersEXT := wglGetProcAddress('glGenFramebuffersEXT');
  8676. if not Assigned(glGenFramebuffersEXT) then Exit;
  8677. glCheckFramebufferStatusEXT := wglGetProcAddress('glCheckFramebufferStatusEXT');
  8678. if not Assigned(glCheckFramebufferStatusEXT) then Exit;
  8679. glFramebufferTexture1DEXT := wglGetProcAddress('glFramebufferTexture1DEXT');
  8680. if not Assigned(glFramebufferTexture1DEXT) then Exit;
  8681. glFramebufferTexture2DEXT := wglGetProcAddress('glFramebufferTexture2DEXT');
  8682. if not Assigned(glFramebufferTexture2DEXT) then Exit;
  8683. glFramebufferTexture3DEXT := wglGetProcAddress('glFramebufferTexture3DEXT');
  8684. if not Assigned(glFramebufferTexture3DEXT) then Exit;
  8685. glFramebufferRenderbufferEXT := wglGetProcAddress('glFramebufferRenderbufferEXT');
  8686. if not Assigned(glFramebufferRenderbufferEXT) then Exit;
  8687. glGetFramebufferAttachmentParameterivEXT := wglGetProcAddress('glGetFramebufferAttachmentParameterivEXT');
  8688. if not Assigned(glGetFramebufferAttachmentParameterivEXT) then Exit;
  8689. glGenerateMipmapEXT := wglGetProcAddress('glGenerateMipmapEXT');
  8690. if not Assigned(glGenerateMipmapEXT) then Exit;
  8691. Result := TRUE;
  8692. end;
  8693. end;
  8694. function Load_GL_ARB_framebuffer_object(LoadAsCore: boolean): Boolean;
  8695. var
  8696. extstring: String;
  8697. begin
  8698. Result := False;
  8699. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8700. if LoadAsCore or glext_ExtensionSupported('GL_ARB_framebuffer_object', extstring) then
  8701. begin
  8702. glIsRenderbuffer := wglGetProcAddress('glIsRenderbuffer');
  8703. if not Assigned(glIsRenderbuffer) then Exit;
  8704. glBindRenderbuffer := wglGetProcAddress('glBindRenderbuffer');
  8705. if not Assigned(glBindRenderbuffer) then Exit;
  8706. glDeleteRenderbuffers := wglGetProcAddress('glDeleteRenderbuffers');
  8707. if not Assigned(glDeleteRenderbuffers) then Exit;
  8708. glGenRenderbuffers := wglGetProcAddress('glGenRenderbuffers');
  8709. if not Assigned(glGenRenderbuffers) then Exit;
  8710. glRenderbufferStorage := wglGetProcAddress('glRenderbufferStorage');
  8711. if not Assigned(glRenderbufferStorage) then Exit;
  8712. glGetRenderbufferParameteriv := wglGetProcAddress('glGetRenderbufferParameteriv');
  8713. if not Assigned(glGetRenderbufferParameteriv) then Exit;
  8714. glIsFramebuffer := wglGetProcAddress('glIsFramebuffer');
  8715. if not Assigned(glIsFramebuffer) then Exit;
  8716. glBindFramebuffer := wglGetProcAddress('glBindFramebuffer');
  8717. if not Assigned(glBindFramebuffer) then Exit;
  8718. glDeleteFramebuffers := wglGetProcAddress('glDeleteFramebuffers');
  8719. if not Assigned(glDeleteFramebuffers) then Exit;
  8720. glGenFramebuffers := wglGetProcAddress('glGenFramebuffers');
  8721. if not Assigned(glGenFramebuffers) then Exit;
  8722. glCheckFramebufferStatus := wglGetProcAddress('glCheckFramebufferStatus');
  8723. if not Assigned(glCheckFramebufferStatus) then Exit;
  8724. glFramebufferTexture1D := wglGetProcAddress('glFramebufferTexture1D');
  8725. if not Assigned(glFramebufferTexture1D) then Exit;
  8726. glFramebufferTexture2D := wglGetProcAddress('glFramebufferTexture2D');
  8727. if not Assigned(glFramebufferTexture2D) then Exit;
  8728. glFramebufferTexture3D := wglGetProcAddress('glFramebufferTexture3D');
  8729. if not Assigned(glFramebufferTexture3D) then Exit;
  8730. glFramebufferRenderbuffer := wglGetProcAddress('glFramebufferRenderbuffer');
  8731. if not Assigned(glFramebufferRenderbuffer) then Exit;
  8732. glGetFramebufferAttachmentParameteriv := wglGetProcAddress('glGetFramebufferAttachmentParameteriv');
  8733. if not Assigned(glGetFramebufferAttachmentParameteriv) then Exit;
  8734. glGenerateMipmap := wglGetProcAddress('glGenerateMipmap');
  8735. if not Assigned(glGenerateMipmap) then Exit;
  8736. glBlitFramebuffer := wglGetProcAddress('glBlitFramebuffer');
  8737. if not Assigned(glBlitFramebuffer) then Exit;
  8738. glRenderbufferStorageMultisample := wglGetProcAddress('glRenderbufferStorageMultisample');
  8739. if not Assigned(glRenderbufferStorageMultisample) then Exit;
  8740. glFramebufferTextureLayer := wglGetProcAddress('glFramebufferTextureLayer');
  8741. if not Assigned(glFramebufferTextureLayer) then Exit;
  8742. Result := True;
  8743. end;
  8744. end;
  8745. function Load_GL_ARB_map_buffer_range(LoadAsCore: boolean): Boolean;
  8746. var
  8747. extstring: String;
  8748. begin
  8749. Result := False;
  8750. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8751. if LoadAsCore or glext_ExtensionSupported('GL_ARB_map_buffer_range', extstring) then
  8752. begin
  8753. glMapBufferRange := wglGetProcAddress('glMapBufferRange');
  8754. if not Assigned(glMapBufferRange) then Exit;
  8755. glFlushMappedBufferRange := wglGetProcAddress('glFlushMappedBufferRange');
  8756. if not Assigned(glFlushMappedBufferRange) then Exit;
  8757. Result := True;
  8758. end;
  8759. end;
  8760. function Load_GL_ARB_vertex_array_object(LoadAsCore: boolean): Boolean;
  8761. var
  8762. extstring: String;
  8763. begin
  8764. Result := False;
  8765. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8766. if LoadAsCore or glext_ExtensionSupported('GL_ARB_vertex_array_object', extstring) then
  8767. begin
  8768. glBindVertexArray := wglGetProcAddress('glBindVertexArray');
  8769. if not Assigned(glBindVertexArray) then Exit;
  8770. glDeleteVertexArrays := wglGetProcAddress('glDeleteVertexArrays');
  8771. if not Assigned(glDeleteVertexArrays) then Exit;
  8772. glGenVertexArrays := wglGetProcAddress('glGenVertexArrays');
  8773. if not Assigned(glGenVertexArrays) then Exit;
  8774. glIsVertexArray := wglGetProcAddress('glIsVertexArray');
  8775. if not Assigned(glIsVertexArray) then Exit;
  8776. Result := True;
  8777. end;
  8778. end;
  8779. function Load_GL_ARB_copy_buffer(LoadAsCore: boolean): Boolean;
  8780. var
  8781. extstring: String;
  8782. begin
  8783. Result := False;
  8784. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8785. if LoadAsCore or glext_ExtensionSupported('GL_ARB_copy_buffer', extstring) then
  8786. begin
  8787. glCopyBufferSubData := wglGetProcAddress('glCopyBufferSubData');
  8788. if not Assigned(glCopyBufferSubData) then Exit;
  8789. Result := True;
  8790. end;
  8791. end;
  8792. function Load_GL_ARB_uniform_buffer_object(LoadAsCore: boolean): Boolean;
  8793. var
  8794. extstring: String;
  8795. begin
  8796. Result := False;
  8797. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8798. if LoadAsCore or glext_ExtensionSupported('GL_ARB_uniform_buffer_object', extstring) then
  8799. begin
  8800. glGetUniformIndices := wglGetProcAddress('glGetUniformIndices');
  8801. if not Assigned(glGetUniformIndices) then Exit;
  8802. glGetActiveUniformsiv := wglGetProcAddress('glGetActiveUniformsiv');
  8803. if not Assigned(glGetActiveUniformsiv) then Exit;
  8804. glGetActiveUniformName := wglGetProcAddress('glGetActiveUniformName');
  8805. if not Assigned(glGetActiveUniformName) then Exit;
  8806. glGetUniformBlockIndex := wglGetProcAddress('glGetUniformBlockIndex');
  8807. if not Assigned(glGetUniformBlockIndex) then Exit;
  8808. glGetActiveUniformBlockiv := wglGetProcAddress('glGetActiveUniformBlockiv');
  8809. if not Assigned(glGetActiveUniformBlockiv) then Exit;
  8810. glGetActiveUniformBlockName := wglGetProcAddress('glGetActiveUniformBlockName');
  8811. if not Assigned(glGetActiveUniformBlockName) then Exit;
  8812. glUniformBlockBinding := wglGetProcAddress('glUniformBlockBinding');
  8813. if not Assigned(glUniformBlockBinding) then Exit;
  8814. (* Shared entry points *)
  8815. glBindBufferRange := wglGetProcAddress('glBindBufferRange');
  8816. if not Assigned(glBindBufferRange) then Exit;
  8817. glBindBufferBase := wglGetProcAddress('glBindBufferBase');
  8818. if not Assigned(glBindBufferBase) then Exit;
  8819. glGetIntegeri_v := wglGetProcAddress('glGetIntegeri_v');
  8820. if not Assigned(glGetIntegeri_v) then Exit;
  8821. Result := True;
  8822. end;
  8823. end;
  8824. function Load_GL_ARB_draw_elements_base_vertex(LoadAsCore: boolean): Boolean;
  8825. var
  8826. extstring: String;
  8827. begin
  8828. Result := False;
  8829. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8830. if LoadAsCore or glext_ExtensionSupported('GL_ARB_draw_elements_base_vertex', extstring) then
  8831. begin
  8832. glDrawElementsBaseVertex := wglGetProcAddress('glDrawElementsBaseVertex');
  8833. if not Assigned(glDrawElementsBaseVertex) then Exit;
  8834. glDrawRangeElementsBaseVertex := wglGetProcAddress('glDrawRangeElementsBaseVertex');
  8835. if not Assigned(glDrawRangeElementsBaseVertex) then Exit;
  8836. glDrawElementsInstancedBaseVertex := wglGetProcAddress('glDrawElementsInstancedBaseVertex');
  8837. if not Assigned(glDrawElementsInstancedBaseVertex) then Exit;
  8838. glMultiDrawElementsBaseVertex := wglGetProcAddress('glMultiDrawElementsBaseVertex');
  8839. if not Assigned(glMultiDrawElementsBaseVertex) then Exit;
  8840. Result := True;
  8841. end;
  8842. end;
  8843. function Load_GL_ARB_provoking_vertex(LoadAsCore: boolean): Boolean;
  8844. var
  8845. extstring: String;
  8846. begin
  8847. Result := False;
  8848. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8849. if LoadAsCore or glext_ExtensionSupported('GL_ARB_provoking_vertex', extstring) then
  8850. begin
  8851. glProvokingVertex := wglGetProcAddress('glProvokingVertex');
  8852. if not Assigned(glProvokingVertex) then Exit;
  8853. Result := True;
  8854. end;
  8855. end;
  8856. function Load_GL_ARB_sync(LoadAsCore: boolean): Boolean;
  8857. var
  8858. extstring: String;
  8859. begin
  8860. Result := False;
  8861. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8862. if LoadAsCore or glext_ExtensionSupported('GL_ARB_sync', extstring) then
  8863. begin
  8864. glFenceSync := wglGetProcAddress('glFenceSync');
  8865. if not Assigned(glFenceSync) then Exit;
  8866. glIsSync := wglGetProcAddress('glIsSync');
  8867. if not Assigned(glIsSync) then Exit;
  8868. glDeleteSync := wglGetProcAddress('glDeleteSync');
  8869. if not Assigned(glDeleteSync) then Exit;
  8870. glClientWaitSync := wglGetProcAddress('glClientWaitSync');
  8871. if not Assigned(glClientWaitSync) then Exit;
  8872. glWaitSync := wglGetProcAddress('glWaitSync');
  8873. if not Assigned(glWaitSync) then Exit;
  8874. glGetInteger64v := wglGetProcAddress('glGetInteger64v');
  8875. if not Assigned(glGetInteger64v) then Exit;
  8876. glGetSynciv := wglGetProcAddress('glGetSynciv');
  8877. if not Assigned(glGetSynciv) then Exit;
  8878. Result := True;
  8879. end;
  8880. end;
  8881. function Load_GL_ARB_texture_multisample(LoadAsCore: boolean): Boolean;
  8882. var
  8883. extstring: String;
  8884. begin
  8885. Result := False;
  8886. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8887. if LoadAsCore or glext_ExtensionSupported('GL_ARB_texture_multisample', extstring) then
  8888. begin
  8889. glTexImage2DMultisample := wglGetProcAddress('glTexImage2DMultisample');
  8890. if not Assigned(glTexImage2DMultisample) then Exit;
  8891. glTexImage3DMultisample := wglGetProcAddress('glTexImage3DMultisample');
  8892. if not Assigned(glTexImage3DMultisample) then Exit;
  8893. glGetMultisamplefv := wglGetProcAddress('glGetMultisamplefv');
  8894. if not Assigned(glGetMultisamplefv) then Exit;
  8895. glSampleMaski := wglGetProcAddress('glSampleMaski');
  8896. if not Assigned(glSampleMaski) then Exit;
  8897. Result := True;
  8898. end;
  8899. end;
  8900. function Load_GL_ARB_sampler_objects(LoadAsCore: boolean): Boolean;
  8901. var
  8902. extstring: String;
  8903. begin
  8904. Result := False;
  8905. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8906. if LoadAsCore or glext_ExtensionSupported('GL_ARB_sampler_objects', extstring) then
  8907. begin
  8908. glGenSamplers := wglGetProcAddress('glGenSamplers');
  8909. if not Assigned(glGenSamplers) then Exit;
  8910. glDeleteSamplers := wglGetProcAddress('glDeleteSamplers');
  8911. if not Assigned(glDeleteSamplers) then Exit;
  8912. glIsSampler := wglGetProcAddress('glIsSampler');
  8913. if not Assigned(glIsSampler) then Exit;
  8914. glBindSampler := wglGetProcAddress('glBindSampler');
  8915. if not Assigned(glBindSampler) then Exit;
  8916. glSamplerParameteri := wglGetProcAddress('glSamplerParameteri');
  8917. if not Assigned(glSamplerParameteri) then Exit;
  8918. glSamplerParameteriv := wglGetProcAddress('glSamplerParameteriv');
  8919. if not Assigned(glSamplerParameteriv) then Exit;
  8920. glSamplerParameterf := wglGetProcAddress('glSamplerParameterf');
  8921. if not Assigned(glSamplerParameterf) then Exit;
  8922. glSamplerParameterfv := wglGetProcAddress('glSamplerParameterfv');
  8923. if not Assigned(glSamplerParameterfv) then Exit;
  8924. glSamplerParameterIiv := wglGetProcAddress('glSamplerParameterIiv');
  8925. if not Assigned(glSamplerParameterIiv) then Exit;
  8926. glSamplerParameterIuiv := wglGetProcAddress('glSamplerParameterIuiv');
  8927. if not Assigned(glSamplerParameterIuiv) then Exit;
  8928. glGetSamplerParameteriv := wglGetProcAddress('glGetSamplerParameteriv');
  8929. if not Assigned(glGetSamplerParameteriv) then Exit;
  8930. glGetSamplerParameterIiv := wglGetProcAddress('glGetSamplerParameterIiv');
  8931. if not Assigned(glGetSamplerParameterIiv) then Exit;
  8932. glGetSamplerParameterfv := wglGetProcAddress('glGetSamplerParameterfv');
  8933. if not Assigned(glGetSamplerParameterfv) then Exit;
  8934. glGetSamplerParameterIuiv := wglGetProcAddress('glGetSamplerParameterIuiv');
  8935. if not Assigned(glGetSamplerParameterIuiv) then Exit;
  8936. Result := True;
  8937. end;
  8938. end;
  8939. function Load_GL_ARB_blend_func_extended(LoadAsCore: boolean): Boolean;
  8940. var
  8941. extstring: String;
  8942. begin
  8943. Result := False;
  8944. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8945. if LoadAsCore or glext_ExtensionSupported('GL_ARB_blend_func_extended', extstring) then
  8946. begin
  8947. glBindFragDataLocationIndexed := wglGetProcAddress('glBindFragDataLocationIndexed');
  8948. if not Assigned(glBindFragDataLocationIndexed) then Exit;
  8949. glGetFragDataIndex := wglGetProcAddress('glGetFragDataIndex');
  8950. if not Assigned(glGetFragDataIndex) then Exit;
  8951. Result := True;
  8952. end;
  8953. end;
  8954. function Load_GL_ARB_timer_query(LoadAsCore: boolean): Boolean;
  8955. var
  8956. extstring: String;
  8957. begin
  8958. Result := False;
  8959. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8960. if LoadAsCore or glext_ExtensionSupported('GL_ARB_timer_query', extstring) then
  8961. begin
  8962. glQueryCounter := wglGetProcAddress('glQueryCounter');
  8963. if not Assigned(glQueryCounter) then Exit;
  8964. glGetQueryObjecti64v := wglGetProcAddress('glGetQueryObjecti64v');
  8965. if not Assigned(glGetQueryObjecti64v) then Exit;
  8966. glGetQueryObjectui64v := wglGetProcAddress('glGetQueryObjectui64v');
  8967. if not Assigned(glGetQueryObjectui64v) then Exit;
  8968. Result := True;
  8969. end;
  8970. end;
  8971. function Load_GL_ARB_vertex_type_2_10_10_10_rev(LoadAsCore: boolean): Boolean;
  8972. var
  8973. extstring: String;
  8974. begin
  8975. Result := False;
  8976. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  8977. if LoadAsCore or glext_ExtensionSupported('GL_ARB_vertex_type_2_10_10_10_rev', extstring) then
  8978. begin
  8979. glVertexP2ui := wglGetProcAddress('glVertexP2ui');
  8980. if not Assigned(glVertexP2ui) then Exit;
  8981. glVertexP2uiv := wglGetProcAddress('glVertexP2uiv');
  8982. if not Assigned(glVertexP2uiv) then Exit;
  8983. glVertexP3ui := wglGetProcAddress('glVertexP3ui');
  8984. if not Assigned(glVertexP3ui) then Exit;
  8985. glVertexP3uiv := wglGetProcAddress('glVertexP3uiv');
  8986. if not Assigned(glVertexP3uiv) then Exit;
  8987. glVertexP4ui := wglGetProcAddress('glVertexP4ui');
  8988. if not Assigned(glVertexP4ui) then Exit;
  8989. glVertexP4uiv := wglGetProcAddress('glVertexP4uiv');
  8990. if not Assigned(glVertexP4uiv) then Exit;
  8991. glTexCoordP1ui := wglGetProcAddress('glTexCoordP1ui');
  8992. if not Assigned(glTexCoordP1ui) then Exit;
  8993. glTexCoordP1uiv := wglGetProcAddress('glTexCoordP1uiv');
  8994. if not Assigned(glTexCoordP1uiv) then Exit;
  8995. glTexCoordP2ui := wglGetProcAddress('glTexCoordP2ui');
  8996. if not Assigned(glTexCoordP2ui) then Exit;
  8997. glTexCoordP2uiv := wglGetProcAddress('glTexCoordP2uiv');
  8998. if not Assigned(glTexCoordP2uiv) then Exit;
  8999. glTexCoordP3ui := wglGetProcAddress('glTexCoordP3ui');
  9000. if not Assigned(glTexCoordP3ui) then Exit;
  9001. glTexCoordP3uiv := wglGetProcAddress('glTexCoordP3uiv');
  9002. if not Assigned(glTexCoordP3uiv) then Exit;
  9003. glTexCoordP4ui := wglGetProcAddress('glTexCoordP4ui');
  9004. if not Assigned(glTexCoordP4ui) then Exit;
  9005. glTexCoordP4uiv := wglGetProcAddress('glTexCoordP4uiv');
  9006. if not Assigned(glTexCoordP4uiv) then Exit;
  9007. glMultiTexCoordP1ui := wglGetProcAddress('glMultiTexCoordP1ui');
  9008. if not Assigned(glMultiTexCoordP1ui) then Exit;
  9009. glMultiTexCoordP1uiv := wglGetProcAddress('glMultiTexCoordP1uiv');
  9010. if not Assigned(glMultiTexCoordP1uiv) then Exit;
  9011. glMultiTexCoordP2ui := wglGetProcAddress('glMultiTexCoordP2ui');
  9012. if not Assigned(glMultiTexCoordP2ui) then Exit;
  9013. glMultiTexCoordP2uiv := wglGetProcAddress('glMultiTexCoordP2uiv');
  9014. if not Assigned(glMultiTexCoordP2uiv) then Exit;
  9015. glMultiTexCoordP3ui := wglGetProcAddress('glMultiTexCoordP3ui');
  9016. if not Assigned(glMultiTexCoordP3ui) then Exit;
  9017. glMultiTexCoordP3uiv := wglGetProcAddress('glMultiTexCoordP3uiv');
  9018. if not Assigned(glMultiTexCoordP3uiv) then Exit;
  9019. glMultiTexCoordP4ui := wglGetProcAddress('glMultiTexCoordP4ui');
  9020. if not Assigned(glMultiTexCoordP4ui) then Exit;
  9021. glMultiTexCoordP4uiv := wglGetProcAddress('glMultiTexCoordP4uiv');
  9022. if not Assigned(glMultiTexCoordP4uiv) then Exit;
  9023. glNormalP3ui := wglGetProcAddress('glNormalP3ui');
  9024. if not Assigned(glNormalP3ui) then Exit;
  9025. glNormalP3uiv := wglGetProcAddress('glNormalP3uiv');
  9026. if not Assigned(glNormalP3uiv) then Exit;
  9027. glColorP3ui := wglGetProcAddress('glColorP3ui');
  9028. if not Assigned(glColorP3ui) then Exit;
  9029. glColorP3uiv := wglGetProcAddress('glColorP3uiv');
  9030. if not Assigned(glColorP3uiv) then Exit;
  9031. glColorP4ui := wglGetProcAddress('glColorP4ui');
  9032. if not Assigned(glColorP4ui) then Exit;
  9033. glColorP4uiv := wglGetProcAddress('glColorP4uiv');
  9034. if not Assigned(glColorP4uiv) then Exit;
  9035. glSecondaryColorP3ui := wglGetProcAddress('glSecondaryColorP3ui');
  9036. if not Assigned(glSecondaryColorP3ui) then Exit;
  9037. glSecondaryColorP3uiv := wglGetProcAddress('glSecondaryColorP3uiv');
  9038. if not Assigned(glSecondaryColorP3uiv) then Exit;
  9039. glVertexAttribP1ui := wglGetProcAddress('glVertexAttribP1ui');
  9040. if not Assigned(glVertexAttribP1ui) then Exit;
  9041. glVertexAttribP1uiv := wglGetProcAddress('glVertexAttribP1uiv');
  9042. if not Assigned(glVertexAttribP1uiv) then Exit;
  9043. glVertexAttribP2ui := wglGetProcAddress('glVertexAttribP2ui');
  9044. if not Assigned(glVertexAttribP2ui) then Exit;
  9045. glVertexAttribP2uiv := wglGetProcAddress('glVertexAttribP2uiv');
  9046. if not Assigned(glVertexAttribP2uiv) then Exit;
  9047. glVertexAttribP3ui := wglGetProcAddress('glVertexAttribP3ui');
  9048. if not Assigned(glVertexAttribP3ui) then Exit;
  9049. glVertexAttribP3uiv := wglGetProcAddress('glVertexAttribP3uiv');
  9050. if not Assigned(glVertexAttribP3uiv) then Exit;
  9051. glVertexAttribP4ui := wglGetProcAddress('glVertexAttribP4ui');
  9052. if not Assigned(glVertexAttribP4ui) then Exit;
  9053. glVertexAttribP4uiv := wglGetProcAddress('glVertexAttribP4uiv');
  9054. if not Assigned(glVertexAttribP4uiv) then Exit;
  9055. Result := True;
  9056. end;
  9057. end;
  9058. function Load_GL_ARB_gpu_shader_fp64(LoadAsCore: boolean): Boolean;
  9059. var
  9060. extstring: String;
  9061. begin
  9062. Result := False;
  9063. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  9064. if LoadAsCore or glext_ExtensionSupported('GL_ARB_gpu_shader_fp64', extstring) then
  9065. begin
  9066. glUniform1d := wglGetProcAddress('glUniform1d');
  9067. if not Assigned(glUniform1d) then Exit;
  9068. glUniform2d := wglGetProcAddress('glUniform2d');
  9069. if not Assigned(glUniform2d) then Exit;
  9070. glUniform3d := wglGetProcAddress('glUniform3d');
  9071. if not Assigned(glUniform3d) then Exit;
  9072. glUniform4d := wglGetProcAddress('glUniform4d');
  9073. if not Assigned(glUniform4d) then Exit;
  9074. glUniform1dv := wglGetProcAddress('glUniform1dv');
  9075. if not Assigned(glUniform1dv) then Exit;
  9076. glUniform2dv := wglGetProcAddress('glUniform2dv');
  9077. if not Assigned(glUniform2dv) then Exit;
  9078. glUniform3dv := wglGetProcAddress('glUniform3dv');
  9079. if not Assigned(glUniform3dv) then Exit;
  9080. glUniform4dv := wglGetProcAddress('glUniform4dv');
  9081. if not Assigned(glUniform4dv) then Exit;
  9082. glUniformMatrix2dv := wglGetProcAddress('glUniformMatrix2dv');
  9083. if not Assigned(glUniformMatrix2dv) then Exit;
  9084. glUniformMatrix3dv := wglGetProcAddress('glUniformMatrix3dv');
  9085. if not Assigned(glUniformMatrix3dv) then Exit;
  9086. glUniformMatrix4dv := wglGetProcAddress('glUniformMatrix4dv');
  9087. if not Assigned(glUniformMatrix4dv) then Exit;
  9088. glUniformMatrix2x3dv := wglGetProcAddress('glUniformMatrix2x3dv');
  9089. if not Assigned(glUniformMatrix2x3dv) then Exit;
  9090. glUniformMatrix2x4dv := wglGetProcAddress('glUniformMatrix2x4dv');
  9091. if not Assigned(glUniformMatrix2x4dv) then Exit;
  9092. glUniformMatrix3x2dv := wglGetProcAddress('glUniformMatrix3x2dv');
  9093. if not Assigned(glUniformMatrix3x2dv) then Exit;
  9094. glUniformMatrix3x4dv := wglGetProcAddress('glUniformMatrix3x4dv');
  9095. if not Assigned(glUniformMatrix3x4dv) then Exit;
  9096. glUniformMatrix4x2dv := wglGetProcAddress('glUniformMatrix4x2dv');
  9097. if not Assigned(glUniformMatrix4x2dv) then Exit;
  9098. glUniformMatrix4x3dv := wglGetProcAddress('glUniformMatrix4x3dv');
  9099. if not Assigned(glUniformMatrix4x3dv) then Exit;
  9100. glGetUniformdv := wglGetProcAddress('glGetUniformdv');
  9101. if not Assigned(glGetUniformdv) then Exit;
  9102. { Ignore presence/absence of functions below.
  9103. See their special definition in
  9104. http://www.opengl.org/registry/specs/ARB/gpu_shader_fp64.txt:
  9105. "All of the following ProgramUniform* functions are supported if and only
  9106. if EXT_direct_state_access is supported." }
  9107. glProgramUniform1dEXT := wglGetProcAddress('glProgramUniform1dEXT');
  9108. // if not Assigned(glProgramUniform1dEXT) then Exit;
  9109. glProgramUniform2dEXT := wglGetProcAddress('glProgramUniform2dEXT');
  9110. // if not Assigned(glProgramUniform2dEXT) then Exit;
  9111. glProgramUniform3dEXT := wglGetProcAddress('glProgramUniform3dEXT');
  9112. // if not Assigned(glProgramUniform3dEXT) then Exit;
  9113. glProgramUniform4dEXT := wglGetProcAddress('glProgramUniform4dEXT');
  9114. // if not Assigned(glProgramUniform4dEXT) then Exit;
  9115. glProgramUniform1dvEXT := wglGetProcAddress('glProgramUniform1dvEXT');
  9116. // if not Assigned(glProgramUniform1dvEXT) then Exit;
  9117. glProgramUniform2dvEXT := wglGetProcAddress('glProgramUniform2dvEXT');
  9118. // if not Assigned(glProgramUniform2dvEXT) then Exit;
  9119. glProgramUniform3dvEXT := wglGetProcAddress('glProgramUniform3dvEXT');
  9120. // if not Assigned(glProgramUniform3dvEXT) then Exit;
  9121. glProgramUniform4dvEXT := wglGetProcAddress('glProgramUniform4dvEXT');
  9122. // if not Assigned(glProgramUniform4dvEXT) then Exit;
  9123. glProgramUniformMatrix2dvEXT := wglGetProcAddress('glProgramUniformMatrix2dvEXT');
  9124. // if not Assigned(glProgramUniformMatrix2dvEXT) then Exit;
  9125. glProgramUniformMatrix3dvEXT := wglGetProcAddress('glProgramUniformMatrix3dvEXT');
  9126. // if not Assigned(glProgramUniformMatrix3dvEXT) then Exit;
  9127. glProgramUniformMatrix4dvEXT := wglGetProcAddress('glProgramUniformMatrix4dvEXT');
  9128. // if not Assigned(glProgramUniformMatrix4dvEXT) then Exit;
  9129. glProgramUniformMatrix2x3dvEXT := wglGetProcAddress('glProgramUniformMatrix2x3dvEXT');
  9130. // if not Assigned(glProgramUniformMatrix2x3dvEXT) then Exit;
  9131. glProgramUniformMatrix2x4dvEXT := wglGetProcAddress('glProgramUniformMatrix2x4dvEXT');
  9132. // if not Assigned(glProgramUniformMatrix2x4dvEXT) then Exit;
  9133. glProgramUniformMatrix3x2dvEXT := wglGetProcAddress('glProgramUniformMatrix3x2dvEXT');
  9134. // if not Assigned(glProgramUniformMatrix3x2dvEXT) then Exit;
  9135. glProgramUniformMatrix3x4dvEXT := wglGetProcAddress('glProgramUniformMatrix3x4dvEXT');
  9136. // if not Assigned(glProgramUniformMatrix3x4dvEXT) then Exit;
  9137. glProgramUniformMatrix4x2dvEXT := wglGetProcAddress('glProgramUniformMatrix4x2dvEXT');
  9138. // if not Assigned(glProgramUniformMatrix4x2dvEXT) then Exit;
  9139. glProgramUniformMatrix4x3dvEXT := wglGetProcAddress('glProgramUniformMatrix4x3dvEXT');
  9140. // if not Assigned(glProgramUniformMatrix4x3dvEXT) then Exit;
  9141. Result := True;
  9142. end;
  9143. end;
  9144. function Load_GL_ARB_shader_subroutine(LoadAsCore: boolean): Boolean;
  9145. var
  9146. extstring: String;
  9147. begin
  9148. Result := False;
  9149. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  9150. if LoadAsCore or glext_ExtensionSupported('GL_ARB_shader_subroutine', extstring) then
  9151. begin
  9152. glGetSubroutineUniformLocation := wglGetProcAddress('glGetSubroutineUniformLocation');
  9153. if not Assigned(glGetSubroutineUniformLocation) then Exit;
  9154. glGetSubroutineIndex := wglGetProcAddress('glGetSubroutineIndex');
  9155. if not Assigned(glGetSubroutineIndex) then Exit;
  9156. glGetActiveSubroutineUniformiv := wglGetProcAddress('glGetActiveSubroutineUniformiv');
  9157. if not Assigned(glGetActiveSubroutineUniformiv) then Exit;
  9158. glGetActiveSubroutineUniformName := wglGetProcAddress('glGetActiveSubroutineUniformName');
  9159. if not Assigned(glGetActiveSubroutineUniformName) then Exit;
  9160. glGetActiveSubroutineName := wglGetProcAddress('glGetActiveSubroutineName');
  9161. if not Assigned(glGetActiveSubroutineName) then Exit;
  9162. glUniformSubroutinesuiv := wglGetProcAddress('glUniformSubroutinesuiv');
  9163. if not Assigned(glUniformSubroutinesuiv) then Exit;
  9164. glGetUniformSubroutineuiv := wglGetProcAddress('glGetUniformSubroutineuiv');
  9165. if not Assigned(glGetUniformSubroutineuiv) then Exit;
  9166. glGetProgramStageiv := wglGetProcAddress('glGetProgramStageiv');
  9167. if not Assigned(glGetProgramStageiv) then Exit;
  9168. Result := True;
  9169. end;
  9170. end;
  9171. function Load_GL_ARB_tessellation_shader(LoadAsCore: boolean): Boolean;
  9172. var
  9173. extstring: String;
  9174. begin
  9175. Result := False;
  9176. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  9177. if LoadAsCore or glext_ExtensionSupported('GL_ARB_tessellation_shader', extstring) then
  9178. begin
  9179. glPatchParameteri := wglGetProcAddress('glPatchParameteri');
  9180. if not Assigned(glPatchParameteri) then Exit;
  9181. glPatchParameterfv := wglGetProcAddress('glPatchParameterfv');
  9182. if not Assigned(glPatchParameterfv) then Exit;
  9183. Result := True;
  9184. end;
  9185. end;
  9186. function Load_GL_ARB_transform_feedback2(LoadAsCore: boolean): Boolean;
  9187. var
  9188. extstring: String;
  9189. begin
  9190. Result := False;
  9191. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  9192. if LoadAsCore or glext_ExtensionSupported('GL_ARB_transform_feedback2', extstring) then
  9193. begin
  9194. glBindTransformFeedback := wglGetProcAddress('glBindTransformFeedback');
  9195. if not Assigned(glBindTransformFeedback) then Exit;
  9196. glDeleteTransformFeedbacks := wglGetProcAddress('glDeleteTransformFeedbacks');
  9197. if not Assigned(glDeleteTransformFeedbacks) then Exit;
  9198. glGenTransformFeedbacks := wglGetProcAddress('glGenTransformFeedbacks');
  9199. if not Assigned(glGenTransformFeedbacks) then Exit;
  9200. glIsTransformFeedback := wglGetProcAddress('glIsTransformFeedback');
  9201. if not Assigned(glIsTransformFeedback) then Exit;
  9202. glPauseTransformFeedback := wglGetProcAddress('glPauseTransformFeedback');
  9203. if not Assigned(glPauseTransformFeedback) then Exit;
  9204. glResumeTransformFeedback := wglGetProcAddress('glResumeTransformFeedback');
  9205. if not Assigned(glResumeTransformFeedback) then Exit;
  9206. glDrawTransformFeedback := wglGetProcAddress('glDrawTransformFeedback');
  9207. if not Assigned(glDrawTransformFeedback) then Exit;
  9208. Result := True;
  9209. end;
  9210. end;
  9211. function Load_GL_ARB_transform_feedback3(LoadAsCore: boolean): Boolean;
  9212. var
  9213. extstring: String;
  9214. begin
  9215. Result := False;
  9216. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  9217. if LoadAsCore or glext_ExtensionSupported('GL_ARB_transform_feedback3', extstring) then
  9218. begin
  9219. glDrawTransformFeedbackStream := wglGetProcAddress('glDrawTransformFeedbackStream');
  9220. if not Assigned(glDrawTransformFeedbackStream) then Exit;
  9221. glBeginQueryIndexed := wglGetProcAddress('glBeginQueryIndexed');
  9222. if not Assigned(glBeginQueryIndexed) then Exit;
  9223. glEndQueryIndexed := wglGetProcAddress('glEndQueryIndexed');
  9224. if not Assigned(glEndQueryIndexed) then Exit;
  9225. glGetQueryIndexediv := wglGetProcAddress('glGetQueryIndexediv');
  9226. if not Assigned(glGetQueryIndexediv) then Exit;
  9227. Result := True;
  9228. end;
  9229. end;
  9230. procedure Load_GL_version_1_4x (var allOK: Boolean);
  9231. begin
  9232. glBlendFuncSeparate := wglGetProcAddress('glBlendFuncSeparate');
  9233. if not Assigned(glBlendFuncSeparate) then allOK := false;
  9234. glFogCoordf := wglGetProcAddress('glFogCoordf');
  9235. if not Assigned(glFogCoordf) then allOK := false;
  9236. glFogCoordfv := wglGetProcAddress('glFogCoordfv');
  9237. if not Assigned(glFogCoordfv) then allOK := false;
  9238. glFogCoordd := wglGetProcAddress('glFogCoordd');
  9239. if not Assigned(glFogCoordd) then allOK := false;
  9240. glFogCoorddv := wglGetProcAddress('glFogCoorddv');
  9241. if not Assigned(glFogCoorddv) then allOK := false;
  9242. glFogCoordPointer := wglGetProcAddress('glFogCoordPointer');
  9243. if not Assigned(glFogCoordPointer) then allOK := false;
  9244. glMultiDrawArrays := wglGetProcAddress('glMultiDrawArrays');
  9245. if not Assigned(glMultiDrawArrays) then allOK := false;
  9246. glMultiDrawElements := wglGetProcAddress('glMultiDrawElements');
  9247. if not Assigned(glMultiDrawElements) then allOK := false;
  9248. glPointParameterf := wglGetProcAddress('glPointParameterf');
  9249. if not Assigned(glPointParameterf) then allOK := false;
  9250. glPointParameterfv := wglGetProcAddress('glPointParameterfv');
  9251. if not Assigned(glPointParameterfv) then allOK := false;
  9252. glPointParameteri := wglGetProcAddress('glPointParameteri');
  9253. if not Assigned(glPointParameteri) then allOK := false;
  9254. glPointParameteriv := wglGetProcAddress('glPointParameteriv');
  9255. if not Assigned(glPointParameteriv) then allOK := false;
  9256. glSecondaryColor3b := wglGetProcAddress('glSecondaryColor3b');
  9257. if not Assigned(glSecondaryColor3b) then allOK := false;
  9258. glSecondaryColor3bv := wglGetProcAddress('glSecondaryColor3bv');
  9259. if not Assigned(glSecondaryColor3bv) then allOK := false;
  9260. glSecondaryColor3d := wglGetProcAddress('glSecondaryColor3d');
  9261. if not Assigned(glSecondaryColor3d) then allOK := false;
  9262. glSecondaryColor3dv := wglGetProcAddress('glSecondaryColor3dv');
  9263. if not Assigned(glSecondaryColor3dv) then allOK := false;
  9264. glSecondaryColor3f := wglGetProcAddress('glSecondaryColor3f');
  9265. if not Assigned(glSecondaryColor3f) then allOK := false;
  9266. glSecondaryColor3fv := wglGetProcAddress('glSecondaryColor3fv');
  9267. if not Assigned(glSecondaryColor3fv) then allOK := false;
  9268. glSecondaryColor3i := wglGetProcAddress('glSecondaryColor3i');
  9269. if not Assigned(glSecondaryColor3i) then allOK := false;
  9270. glSecondaryColor3iv := wglGetProcAddress('glSecondaryColor3iv');
  9271. if not Assigned(glSecondaryColor3iv) then allOK := false;
  9272. glSecondaryColor3s := wglGetProcAddress('glSecondaryColor3s');
  9273. if not Assigned(glSecondaryColor3s) then allOK := false;
  9274. glSecondaryColor3sv := wglGetProcAddress('glSecondaryColor3sv');
  9275. if not Assigned(glSecondaryColor3sv) then allOK := false;
  9276. glSecondaryColor3ub := wglGetProcAddress('glSecondaryColor3ub');
  9277. if not Assigned(glSecondaryColor3ub) then allOK := false;
  9278. glSecondaryColor3ubv := wglGetProcAddress('glSecondaryColor3ubv');
  9279. if not Assigned(glSecondaryColor3ubv) then allOK := false;
  9280. glSecondaryColor3ui := wglGetProcAddress('glSecondaryColor3ui');
  9281. if not Assigned(glSecondaryColor3ui) then allOK := false;
  9282. glSecondaryColor3uiv := wglGetProcAddress('glSecondaryColor3uiv');
  9283. if not Assigned(glSecondaryColor3uiv) then allOK := false;
  9284. glSecondaryColor3us := wglGetProcAddress('glSecondaryColor3us');
  9285. if not Assigned(glSecondaryColor3us) then allOK := false;
  9286. glSecondaryColor3usv := wglGetProcAddress('glSecondaryColor3usv');
  9287. if not Assigned(glSecondaryColor3usv) then allOK := false;
  9288. glSecondaryColorPointer := wglGetProcAddress('glSecondaryColorPointer');
  9289. if not Assigned(glSecondaryColorPointer) then allOK := false;
  9290. glWindowPos2d := wglGetProcAddress('glWindowPos2d');
  9291. if not Assigned(glWindowPos2d) then allOK := false;
  9292. glWindowPos2dv := wglGetProcAddress('glWindowPos2dv');
  9293. if not Assigned(glWindowPos2dv) then allOK := false;
  9294. glWindowPos2f := wglGetProcAddress('glWindowPos2f');
  9295. if not Assigned(glWindowPos2f) then allOK := false;
  9296. glWindowPos2fv := wglGetProcAddress('glWindowPos2fv');
  9297. if not Assigned(glWindowPos2fv) then allOK := false;
  9298. glWindowPos2i := wglGetProcAddress('glWindowPos2i');
  9299. if not Assigned(glWindowPos2i) then allOK := false;
  9300. glWindowPos2iv := wglGetProcAddress('glWindowPos2iv');
  9301. if not Assigned(glWindowPos2iv) then allOK := false;
  9302. glWindowPos2s := wglGetProcAddress('glWindowPos2s');
  9303. if not Assigned(glWindowPos2s) then allOK := false;
  9304. glWindowPos2sv := wglGetProcAddress('glWindowPos2sv');
  9305. if not Assigned(glWindowPos2sv) then allOK := false;
  9306. glWindowPos3d := wglGetProcAddress('glWindowPos3d');
  9307. if not Assigned(glWindowPos3d) then allOK := false;
  9308. glWindowPos3dv := wglGetProcAddress('glWindowPos3dv');
  9309. if not Assigned(glWindowPos3dv) then allOK := false;
  9310. glWindowPos3f := wglGetProcAddress('glWindowPos3f');
  9311. if not Assigned(glWindowPos3f) then allOK := false;
  9312. glWindowPos3fv := wglGetProcAddress('glWindowPos3fv');
  9313. if not Assigned(glWindowPos3fv) then allOK := false;
  9314. glWindowPos3i := wglGetProcAddress('glWindowPos3i');
  9315. if not Assigned(glWindowPos3i) then allOK := false;
  9316. glWindowPos3iv := wglGetProcAddress('glWindowPos3iv');
  9317. if not Assigned(glWindowPos3iv) then allOK := false;
  9318. glWindowPos3s := wglGetProcAddress('glWindowPos3s');
  9319. if not Assigned(glWindowPos3s) then allOK := false;
  9320. glWindowPos3sv := wglGetProcAddress('glWindowPos3sv');
  9321. if not Assigned(glWindowPos3sv) then allOK := false;
  9322. Load_GL_version_1_3x(allOK);
  9323. end;
  9324. function Load_GL_version_1_4: boolean;
  9325. begin
  9326. result := true;
  9327. Load_GL_version_1_4x(result);
  9328. end;
  9329. procedure Load_GL_version_1_5x (var allOK: Boolean);
  9330. begin
  9331. glGenQueries := wglGetProcAddress('glGenQueries');
  9332. if not Assigned(glGenQueries) then allOK := false;
  9333. glDeleteQueries := wglGetProcAddress('glDeleteQueries');
  9334. if not Assigned(glDeleteQueries) then allOK := false;
  9335. glIsQuery := wglGetProcAddress('glIsQuery');
  9336. if not Assigned(glIsQuery) then allOK := false;
  9337. glBeginQuery := wglGetProcAddress('glBeginQuery');
  9338. if not Assigned(glBeginQuery) then allOK := false;
  9339. glEndQuery := wglGetProcAddress('glEndQuery');
  9340. if not Assigned(glEndQuery) then allOK := false;
  9341. glGetQueryiv := wglGetProcAddress('glGetQueryiv');
  9342. if not Assigned(glGetQueryiv) then allOK := false;
  9343. glGetQueryObjectiv := wglGetProcAddress('glGetQueryObjectiv');
  9344. if not Assigned(glGetQueryObjectiv) then allOK := false;
  9345. glGetQueryObjectuiv := wglGetProcAddress('glGetQueryObjectuiv');
  9346. if not Assigned(glGetQueryObjectuiv) then allOK := false;
  9347. glBindBuffer := wglGetProcAddress('glBindBuffer');
  9348. if not Assigned(glBindBuffer) then allOK := false;
  9349. glDeleteBuffers := wglGetProcAddress('glDeleteBuffers');
  9350. if not Assigned(glDeleteBuffers) then allOK := false;
  9351. glGenBuffers := wglGetProcAddress('glGenBuffers');
  9352. if not Assigned(glGenBuffers) then allOK := false;
  9353. glIsBuffer := wglGetProcAddress('glIsBuffer');
  9354. if not Assigned(glIsBuffer) then allOK := false;
  9355. glBufferData := wglGetProcAddress('glBufferData');
  9356. if not Assigned(glBufferData) then allOK := false;
  9357. glBufferSubData := wglGetProcAddress('glBufferSubData');
  9358. if not Assigned(glBufferSubData) then allOK := false;
  9359. glGetBufferSubData := wglGetProcAddress('glGetBufferSubData');
  9360. if not Assigned(glGetBufferSubData) then allOK := false;
  9361. glMapBuffer := wglGetProcAddress('glMapBuffer');
  9362. if not Assigned(glMapBuffer) then allOK := false;
  9363. glUnmapBuffer := wglGetProcAddress('glUnmapBuffer');
  9364. if not Assigned(glUnmapBuffer) then allOK := false;
  9365. glGetBufferParameteriv := wglGetProcAddress('glGetBufferParameteriv');
  9366. if not Assigned(glGetBufferParameteriv) then allOK := false;
  9367. glGetBufferPointerv := wglGetProcAddress('glGetBufferPointerv');
  9368. if not Assigned(glGetBufferPointerv) then allOK := false;
  9369. Load_GL_version_1_4x(allOK);
  9370. end;
  9371. function Load_GL_version_1_5: boolean;
  9372. begin
  9373. result := true;
  9374. Load_GL_version_1_5x(result);
  9375. end;
  9376. procedure Load_GL_version_2_0x (var allOK: Boolean);
  9377. begin
  9378. glBlendEquationSeparate := wglGetProcAddress('glBlendEquationSeparate');
  9379. if not Assigned(glBlendEquationSeparate) then allOK := false;
  9380. glDrawBuffers := wglGetProcAddress('glDrawBuffers');
  9381. if not Assigned(glDrawBuffers) then allOK := false;
  9382. glStencilOpSeparate := wglGetProcAddress('glStencilOpSeparate');
  9383. if not Assigned(glStencilOpSeparate) then allOK := false;
  9384. glStencilFuncSeparate := wglGetProcAddress('glStencilFuncSeparate');
  9385. if not Assigned(glStencilFuncSeparate) then allOK := false;
  9386. glStencilMaskSeparate := wglGetProcAddress('glStencilMaskSeparate');
  9387. if not Assigned(glStencilMaskSeparate) then allOK := false;
  9388. glAttachShader := wglGetProcAddress('glAttachShader');
  9389. if not Assigned(glAttachShader) then allOK := false;
  9390. glBindAttribLocation := wglGetProcAddress('glBindAttribLocation');
  9391. if not Assigned(glBindAttribLocation) then allOK := false;
  9392. glCompileShader := wglGetProcAddress('glCompileShader');
  9393. if not Assigned(glCompileShader) then allOK := false;
  9394. glCreateProgram := wglGetProcAddress('glCreateProgram');
  9395. if not Assigned(glCreateProgram) then allOK := false;
  9396. glCreateShader := wglGetProcAddress('glCreateShader');
  9397. if not Assigned(glCreateShader) then allOK := false;
  9398. glDeleteProgram := wglGetProcAddress('glDeleteProgram');
  9399. if not Assigned(glDeleteProgram) then allOK := false;
  9400. glDeleteShader := wglGetProcAddress('glDeleteShader');
  9401. if not Assigned(glDeleteShader) then allOK := false;
  9402. glDetachShader := wglGetProcAddress('glDetachShader');
  9403. if not Assigned(glDetachShader) then allOK := false;
  9404. glDisableVertexAttribArray := wglGetProcAddress('glDisableVertexAttribArray');
  9405. if not Assigned(glDisableVertexAttribArray) then allOK := false;
  9406. glEnableVertexAttribArray := wglGetProcAddress('glEnableVertexAttribArray');
  9407. if not Assigned(glEnableVertexAttribArray) then allOK := false;
  9408. glGetActiveAttrib := wglGetProcAddress('glGetActiveAttrib');
  9409. if not Assigned(glGetActiveAttrib) then allOK := false;
  9410. glGetActiveUniform := wglGetProcAddress('glGetActiveUniform');
  9411. if not Assigned(glGetActiveUniform) then allOK := false;
  9412. glGetAttachedShaders := wglGetProcAddress('glGetAttachedShaders');
  9413. if not Assigned(glGetAttachedShaders) then allOK := false;
  9414. glGetAttribLocation := wglGetProcAddress('glGetAttribLocation');
  9415. if not Assigned(glGetAttribLocation) then allOK := false;
  9416. glGetProgramiv := wglGetProcAddress('glGetProgramiv');
  9417. if not Assigned(glGetProgramiv) then allOK := false;
  9418. glGetProgramInfoLog := wglGetProcAddress('glGetProgramInfoLog');
  9419. if not Assigned(glGetProgramInfoLog) then allOK := false;
  9420. glGetShaderiv := wglGetProcAddress('glGetShaderiv');
  9421. if not Assigned(glGetShaderiv) then allOK := false;
  9422. glGetShaderInfoLog := wglGetProcAddress('glGetShaderInfoLog');
  9423. if not Assigned(glGetShaderInfoLog) then allOK := false;
  9424. glGetShaderSource := wglGetProcAddress('glGetShaderSource');
  9425. if not Assigned(glGetShaderSource) then allOK := false;
  9426. glGetUniformLocation := wglGetProcAddress('glGetUniformLocation');
  9427. if not Assigned(glGetUniformLocation) then allOK := false;
  9428. glGetUniformfv := wglGetProcAddress('glGetUniformfv');
  9429. if not Assigned(glGetUniformfv) then allOK := false;
  9430. glGetUniformiv := wglGetProcAddress('glGetUniformiv');
  9431. if not Assigned(glGetUniformiv) then allOK := false;
  9432. glGetVertexAttribdv := wglGetProcAddress('glGetVertexAttribdv');
  9433. if not Assigned(glGetVertexAttribdv) then allOK := false;
  9434. glGetVertexAttribfv := wglGetProcAddress('glGetVertexAttribfv');
  9435. if not Assigned(glGetVertexAttribfv) then allOK := false;
  9436. glGetVertexAttribiv := wglGetProcAddress('glGetVertexAttribiv');
  9437. if not Assigned(glGetVertexAttribiv) then allOK := false;
  9438. glGetVertexAttribPointerv := wglGetProcAddress('glGetVertexAttribPointerv');
  9439. if not Assigned(glGetVertexAttribPointerv) then allOK := false;
  9440. glIsProgram := wglGetProcAddress('glIsProgram');
  9441. if not Assigned(glIsProgram) then allOK := false;
  9442. glIsShader := wglGetProcAddress('glIsShader');
  9443. if not Assigned(glIsShader) then allOK := false;
  9444. glLinkProgram := wglGetProcAddress('glLinkProgram');
  9445. if not Assigned(glLinkProgram) then allOK := false;
  9446. glShaderSource := wglGetProcAddress('glShaderSource');
  9447. if not Assigned(glShaderSource) then allOK := false;
  9448. glUseProgram := wglGetProcAddress('glUseProgram');
  9449. if not Assigned(glUseProgram) then allOK := false;
  9450. glUniform1f := wglGetProcAddress('glUniform1f');
  9451. if not Assigned(glUniform1f) then allOK := false;
  9452. glUniform2f := wglGetProcAddress('glUniform2f');
  9453. if not Assigned(glUniform2f) then allOK := false;
  9454. glUniform3f := wglGetProcAddress('glUniform3f');
  9455. if not Assigned(glUniform3f) then allOK := false;
  9456. glUniform4f := wglGetProcAddress('glUniform4f');
  9457. if not Assigned(glUniform4f) then allOK := false;
  9458. glUniform1i := wglGetProcAddress('glUniform1i');
  9459. if not Assigned(glUniform1i) then allOK := false;
  9460. glUniform2i := wglGetProcAddress('glUniform2i');
  9461. if not Assigned(glUniform2i) then allOK := false;
  9462. glUniform3i := wglGetProcAddress('glUniform3i');
  9463. if not Assigned(glUniform3i) then allOK := false;
  9464. glUniform4i := wglGetProcAddress('glUniform4i');
  9465. if not Assigned(glUniform4i) then allOK := false;
  9466. glUniform1fv := wglGetProcAddress('glUniform1fv');
  9467. if not Assigned(glUniform1fv) then allOK := false;
  9468. glUniform2fv := wglGetProcAddress('glUniform2fv');
  9469. if not Assigned(glUniform2fv) then allOK := false;
  9470. glUniform3fv := wglGetProcAddress('glUniform3fv');
  9471. if not Assigned(glUniform3fv) then allOK := false;
  9472. glUniform4fv := wglGetProcAddress('glUniform4fv');
  9473. if not Assigned(glUniform4fv) then allOK := false;
  9474. glUniform1iv := wglGetProcAddress('glUniform1iv');
  9475. if not Assigned(glUniform1iv) then allOK := false;
  9476. glUniform2iv := wglGetProcAddress('glUniform2iv');
  9477. if not Assigned(glUniform2iv) then allOK := false;
  9478. glUniform3iv := wglGetProcAddress('glUniform3iv');
  9479. if not Assigned(glUniform3iv) then allOK := false;
  9480. glUniform4iv := wglGetProcAddress('glUniform4iv');
  9481. if not Assigned(glUniform4iv) then allOK := false;
  9482. glUniformMatrix2fv := wglGetProcAddress('glUniformMatrix2fv');
  9483. if not Assigned(glUniformMatrix2fv) then allOK := false;
  9484. glUniformMatrix3fv := wglGetProcAddress('glUniformMatrix3fv');
  9485. if not Assigned(glUniformMatrix3fv) then allOK := false;
  9486. glUniformMatrix4fv := wglGetProcAddress('glUniformMatrix4fv');
  9487. if not Assigned(glUniformMatrix4fv) then allOK := false;
  9488. glValidateProgram := wglGetProcAddress('glValidateProgram');
  9489. if not Assigned(glValidateProgram) then allOK := false;
  9490. glVertexAttrib1d := wglGetProcAddress('glVertexAttrib1d');
  9491. if not Assigned(glVertexAttrib1d) then allOK := false;
  9492. glVertexAttrib1dv := wglGetProcAddress('glVertexAttrib1dv');
  9493. if not Assigned(glVertexAttrib1dv) then allOK := false;
  9494. glVertexAttrib1f := wglGetProcAddress('glVertexAttrib1f');
  9495. if not Assigned(glVertexAttrib1f) then allOK := false;
  9496. glVertexAttrib1fv := wglGetProcAddress('glVertexAttrib1fv');
  9497. if not Assigned(glVertexAttrib1fv) then allOK := false;
  9498. glVertexAttrib1s := wglGetProcAddress('glVertexAttrib1s');
  9499. if not Assigned(glVertexAttrib1s) then allOK := false;
  9500. glVertexAttrib1sv := wglGetProcAddress('glVertexAttrib1sv');
  9501. if not Assigned(glVertexAttrib1sv) then allOK := false;
  9502. glVertexAttrib2d := wglGetProcAddress('glVertexAttrib2d');
  9503. if not Assigned(glVertexAttrib2d) then allOK := false;
  9504. glVertexAttrib2dv := wglGetProcAddress('glVertexAttrib2dv');
  9505. if not Assigned(glVertexAttrib2dv) then allOK := false;
  9506. glVertexAttrib2f := wglGetProcAddress('glVertexAttrib2f');
  9507. if not Assigned(glVertexAttrib2f) then allOK := false;
  9508. glVertexAttrib2fv := wglGetProcAddress('glVertexAttrib2fv');
  9509. if not Assigned(glVertexAttrib2fv) then allOK := false;
  9510. glVertexAttrib2s := wglGetProcAddress('glVertexAttrib2s');
  9511. if not Assigned(glVertexAttrib2s) then allOK := false;
  9512. glVertexAttrib2sv := wglGetProcAddress('glVertexAttrib2sv');
  9513. if not Assigned(glVertexAttrib2sv) then allOK := false;
  9514. glVertexAttrib3d := wglGetProcAddress('glVertexAttrib3d');
  9515. if not Assigned(glVertexAttrib3d) then allOK := false;
  9516. glVertexAttrib3dv := wglGetProcAddress('glVertexAttrib3dv');
  9517. if not Assigned(glVertexAttrib3dv) then allOK := false;
  9518. glVertexAttrib3f := wglGetProcAddress('glVertexAttrib3f');
  9519. if not Assigned(glVertexAttrib3f) then allOK := false;
  9520. glVertexAttrib3fv := wglGetProcAddress('glVertexAttrib3fv');
  9521. if not Assigned(glVertexAttrib3fv) then allOK := false;
  9522. glVertexAttrib3s := wglGetProcAddress('glVertexAttrib3s');
  9523. if not Assigned(glVertexAttrib3s) then allOK := false;
  9524. glVertexAttrib3sv := wglGetProcAddress('glVertexAttrib3sv');
  9525. if not Assigned(glVertexAttrib3sv) then allOK := false;
  9526. glVertexAttrib4Nbv := wglGetProcAddress('glVertexAttrib4Nbv');
  9527. if not Assigned(glVertexAttrib4Nbv) then allOK := false;
  9528. glVertexAttrib4Niv := wglGetProcAddress('glVertexAttrib4Niv');
  9529. if not Assigned(glVertexAttrib4Niv) then allOK := false;
  9530. glVertexAttrib4Nsv := wglGetProcAddress('glVertexAttrib4Nsv');
  9531. if not Assigned(glVertexAttrib4Nsv) then allOK := false;
  9532. glVertexAttrib4Nub := wglGetProcAddress('glVertexAttrib4Nub');
  9533. if not Assigned(glVertexAttrib4Nub) then allOK := false;
  9534. glVertexAttrib4Nubv := wglGetProcAddress('glVertexAttrib4Nubv');
  9535. if not Assigned(glVertexAttrib4Nubv) then allOK := false;
  9536. glVertexAttrib4Nuiv := wglGetProcAddress('glVertexAttrib4Nuiv');
  9537. if not Assigned(glVertexAttrib4Nuiv) then allOK := false;
  9538. glVertexAttrib4Nusv := wglGetProcAddress('glVertexAttrib4Nusv');
  9539. if not Assigned(glVertexAttrib4Nusv) then allOK := false;
  9540. glVertexAttrib4bv := wglGetProcAddress('glVertexAttrib4bv');
  9541. if not Assigned(glVertexAttrib4bv) then allOK := false;
  9542. glVertexAttrib4d := wglGetProcAddress('glVertexAttrib4d');
  9543. if not Assigned(glVertexAttrib4d) then allOK := false;
  9544. glVertexAttrib4dv := wglGetProcAddress('glVertexAttrib4dv');
  9545. if not Assigned(glVertexAttrib4dv) then allOK := false;
  9546. glVertexAttrib4f := wglGetProcAddress('glVertexAttrib4f');
  9547. if not Assigned(glVertexAttrib4f) then allOK := false;
  9548. glVertexAttrib4fv := wglGetProcAddress('glVertexAttrib4fv');
  9549. if not Assigned(glVertexAttrib4fv) then allOK := false;
  9550. glVertexAttrib4iv := wglGetProcAddress('glVertexAttrib4iv');
  9551. if not Assigned(glVertexAttrib4iv) then allOK := false;
  9552. glVertexAttrib4s := wglGetProcAddress('glVertexAttrib4s');
  9553. if not Assigned(glVertexAttrib4s) then allOK := false;
  9554. glVertexAttrib4sv := wglGetProcAddress('glVertexAttrib4sv');
  9555. if not Assigned(glVertexAttrib4sv) then allOK := false;
  9556. glVertexAttrib4ubv := wglGetProcAddress('glVertexAttrib4ubv');
  9557. if not Assigned(glVertexAttrib4ubv) then allOK := false;
  9558. glVertexAttrib4uiv := wglGetProcAddress('glVertexAttrib4uiv');
  9559. if not Assigned(glVertexAttrib4uiv) then allOK := false;
  9560. glVertexAttrib4usv := wglGetProcAddress('glVertexAttrib4usv');
  9561. if not Assigned(glVertexAttrib4usv) then allOK := false;
  9562. glVertexAttribPointer := wglGetProcAddress('glVertexAttribPointer');
  9563. if not Assigned(glVertexAttribPointer) then allOK := false;
  9564. Load_GL_version_1_5x(allOK);
  9565. end;
  9566. function Load_GL_version_2_0: boolean;
  9567. begin
  9568. result := true;
  9569. Load_GL_version_2_0x(result);
  9570. end;
  9571. function glext_LoadExtension(ext: String): Boolean;
  9572. begin
  9573. Result := FALSE;
  9574. if ext = 'GL_version_1_2' then Result := Load_GL_version_1_2
  9575. else if ext = 'GL_ARB_imaging' then Result := Load_GL_ARB_imaging
  9576. else if ext = 'GL_version_1_3' then Result := Load_GL_version_1_3
  9577. else if ext = 'GL_ARB_multitexture' then Result := Load_GL_ARB_multitexture
  9578. else if ext = 'GL_ARB_transpose_matrix' then Result := Load_GL_ARB_transpose_matrix
  9579. else if ext = 'GL_ARB_multisample' then Result := Load_GL_ARB_multisample
  9580. else if ext = 'GL_ARB_texture_env_add' then Result := Load_GL_ARB_texture_env_add
  9581. {$IFDEF Windows}
  9582. else if ext = 'WGL_ARB_extensions_string' then Result := Load_WGL_ARB_extensions_string
  9583. else if ext = 'WGL_ARB_buffer_region' then Result := Load_WGL_ARB_buffer_region
  9584. {$ENDIF}
  9585. else if ext = 'GL_ARB_texture_cube_map' then Result := Load_GL_ARB_texture_cube_map
  9586. else if ext = 'GL_ARB_depth_texture' then Result := Load_GL_ARB_depth_texture
  9587. else if ext = 'GL_ARB_point_parameters' then Result := Load_GL_ARB_point_parameters
  9588. else if ext = 'GL_ARB_shadow' then Result := Load_GL_ARB_shadow
  9589. else if ext = 'GL_ARB_shadow_ambient' then Result := Load_GL_ARB_shadow_ambient
  9590. else if ext = 'GL_ARB_texture_border_clamp' then Result := Load_GL_ARB_texture_border_clamp
  9591. else if ext = 'GL_ARB_texture_compression' then Result := Load_GL_ARB_texture_compression
  9592. else if ext = 'GL_ARB_texture_env_combine' then Result := Load_GL_ARB_texture_env_combine
  9593. else if ext = 'GL_ARB_texture_env_crossbar' then Result := Load_GL_ARB_texture_env_crossbar
  9594. else if ext = 'GL_ARB_texture_env_dot3' then Result := Load_GL_ARB_texture_env_dot3
  9595. else if ext = 'GL_ARB_texture_mirrored_repeat' then Result := Load_GL_ARB_texture_mirrored_repeat
  9596. else if ext = 'GL_ARB_vertex_blend' then Result := Load_GL_ARB_vertex_blend
  9597. else if ext = 'GL_ARB_vertex_program' then Result := Load_GL_ARB_vertex_program
  9598. else if ext = 'GL_ARB_window_pos' then Result := Load_GL_ARB_window_pos
  9599. else if ext = 'GL_EXT_422_pixels' then Result := Load_GL_EXT_422_pixels
  9600. else if ext = 'GL_EXT_abgr' then Result := Load_GL_EXT_abgr
  9601. else if ext = 'GL_EXT_bgra' then Result := Load_GL_EXT_bgra
  9602. else if ext = 'GL_EXT_blend_color' then Result := Load_GL_EXT_blend_color
  9603. else if ext = 'GL_EXT_blend_func_separate' then Result := Load_GL_EXT_blend_func_separate
  9604. else if ext = 'GL_EXT_blend_logic_op' then Result := Load_GL_EXT_blend_logic_op
  9605. else if ext = 'GL_EXT_blend_minmax' then Result := Load_GL_EXT_blend_minmax
  9606. else if ext = 'GL_EXT_blend_subtract' then Result := Load_GL_EXT_blend_subtract
  9607. else if ext = 'GL_EXT_clip_volume_hint' then Result := Load_GL_EXT_clip_volume_hint
  9608. else if ext = 'GL_EXT_color_subtable' then Result := Load_GL_EXT_color_subtable
  9609. else if ext = 'GL_EXT_compiled_vertex_array' then Result := Load_GL_EXT_compiled_vertex_array
  9610. else if ext = 'GL_EXT_convolution' then Result := Load_GL_EXT_convolution
  9611. else if ext = 'GL_EXT_fog_coord' then Result := Load_GL_EXT_fog_coord
  9612. else if ext = 'GL_EXT_histogram' then Result := Load_GL_EXT_histogram
  9613. else if ext = 'GL_EXT_multi_draw_arrays' then Result := Load_GL_EXT_multi_draw_arrays
  9614. else if ext = 'GL_EXT_packed_pixels' then Result := Load_GL_EXT_packed_pixels
  9615. else if ext = 'GL_EXT_paletted_texture' then Result := Load_GL_EXT_paletted_texture
  9616. else if ext = 'GL_EXT_point_parameters' then Result := Load_GL_EXT_point_parameters
  9617. else if ext = 'GL_EXT_polygon_offset' then Result := Load_GL_EXT_polygon_offset
  9618. else if ext = 'GL_EXT_secondary_color' then Result := Load_GL_EXT_secondary_color
  9619. else if ext = 'GL_EXT_separate_specular_color' then Result := Load_GL_EXT_separate_specular_color
  9620. else if ext = 'GL_EXT_shadow_funcs' then Result := Load_GL_EXT_shadow_funcs
  9621. else if ext = 'GL_EXT_shared_texture_palette' then Result := Load_GL_EXT_shared_texture_palette
  9622. else if ext = 'GL_EXT_stencil_two_side' then Result := Load_GL_EXT_stencil_two_side
  9623. else if ext = 'GL_EXT_stencil_wrap' then Result := Load_GL_EXT_stencil_wrap
  9624. else if ext = 'GL_EXT_subtexture' then Result := Load_GL_EXT_subtexture
  9625. else if ext = 'GL_EXT_texture3D' then Result := Load_GL_EXT_texture3D
  9626. else if ext = 'GL_EXT_texture_compression_s3tc' then Result := Load_GL_EXT_texture_compression_s3tc
  9627. else if ext = 'GL_EXT_texture_env_add' then Result := Load_GL_EXT_texture_env_add
  9628. else if ext = 'GL_EXT_texture_env_combine' then Result := Load_GL_EXT_texture_env_combine
  9629. else if ext = 'GL_EXT_texture_env_dot3' then Result := Load_GL_EXT_texture_env_dot3
  9630. else if ext = 'GL_EXT_texture_filter_anisotropic' then Result := Load_GL_EXT_texture_filter_anisotropic
  9631. else if ext = 'GL_EXT_texture_lod_bias' then Result := Load_GL_EXT_texture_lod_bias
  9632. else if ext = 'GL_EXT_texture_object' then Result := Load_GL_EXT_texture_object
  9633. else if ext = 'GL_EXT_vertex_array' then Result := Load_GL_EXT_vertex_array
  9634. else if ext = 'GL_EXT_vertex_shader' then Result := Load_GL_EXT_vertex_shader
  9635. else if ext = 'GL_EXT_vertex_weighting' then Result := Load_GL_EXT_vertex_weighting
  9636. else if ext = 'GL_HP_occlusion_test' then Result := Load_GL_HP_occlusion_test
  9637. else if ext = 'GL_NV_blend_square' then Result := Load_GL_NV_blend_square
  9638. else if ext = 'GL_NV_copy_depth_to_color' then Result := Load_GL_NV_copy_depth_to_color
  9639. else if ext = 'GL_NV_depth_clamp' then Result := Load_GL_NV_depth_clamp
  9640. else if ext = 'GL_NV_evaluators' then Result := Load_GL_NV_evaluators
  9641. else if ext = 'GL_NV_fence' then Result := Load_GL_NV_fence
  9642. else if ext = 'GL_NV_fog_distance' then Result := Load_GL_NV_fog_distance
  9643. else if ext = 'GL_NV_light_max_exponent' then Result := Load_GL_NV_light_max_exponent
  9644. else if ext = 'GL_NV_multisample_filter_hint' then Result := Load_GL_NV_multisample_filter_hint
  9645. else if ext = 'GL_NV_occlusion_query' then Result := Load_GL_NV_occlusion_query
  9646. else if ext = 'GL_NV_packed_depth_stencil' then Result := Load_GL_NV_packed_depth_stencil
  9647. else if ext = 'GL_NV_point_sprite' then Result := Load_GL_NV_point_sprite
  9648. else if ext = 'GL_NV_register_combiners' then Result := Load_GL_NV_register_combiners
  9649. else if ext = 'GL_NV_register_combiners2' then Result := Load_GL_NV_register_combiners2
  9650. else if ext = 'GL_NV_texgen_emboss' then Result := Load_GL_NV_texgen_emboss
  9651. else if ext = 'GL_NV_texgen_reflection' then Result := Load_GL_NV_texgen_reflection
  9652. else if ext = 'GL_NV_texture_compression_vtc' then Result := Load_GL_NV_texture_compression_vtc
  9653. else if ext = 'GL_NV_texture_env_combine4' then Result := Load_GL_NV_texture_env_combine4
  9654. else if ext = 'GL_NV_texture_rectangle' then Result := Load_GL_NV_texture_rectangle
  9655. else if ext = 'GL_NV_texture_shader' then Result := Load_GL_NV_texture_shader
  9656. else if ext = 'GL_NV_texture_shader2' then Result := Load_GL_NV_texture_shader2
  9657. else if ext = 'GL_NV_texture_shader3' then Result := Load_GL_NV_texture_shader3
  9658. else if ext = 'GL_NV_vertex_array_range' then Result := Load_GL_NV_vertex_array_range
  9659. else if ext = 'GL_NV_vertex_array_range2' then Result := Load_GL_NV_vertex_array_range2
  9660. else if ext = 'GL_NV_vertex_program' then Result := Load_GL_NV_vertex_program
  9661. else if ext = 'GL_NV_vertex_program1_1' then Result := Load_GL_NV_vertex_program1_1
  9662. else if ext = 'GL_ATI_element_array' then Result := Load_GL_ATI_element_array
  9663. else if ext = 'GL_ATI_envmap_bumpmap' then Result := Load_GL_ATI_envmap_bumpmap
  9664. else if ext = 'GL_ATI_fragment_shader' then Result := Load_GL_ATI_fragment_shader
  9665. else if ext = 'GL_ATI_pn_triangles' then Result := Load_GL_ATI_pn_triangles
  9666. else if ext = 'GL_ATI_texture_mirror_once' then Result := Load_GL_ATI_texture_mirror_once
  9667. else if ext = 'GL_ATI_vertex_array_object' then Result := Load_GL_ATI_vertex_array_object
  9668. else if ext = 'GL_ATI_vertex_streams' then Result := Load_GL_ATI_vertex_streams
  9669. {$IFDEF Windows}
  9670. else if ext = 'WGL_I3D_image_buffer' then Result := Load_WGL_I3D_image_buffer
  9671. else if ext = 'WGL_I3D_swap_frame_lock' then Result := Load_WGL_I3D_swap_frame_lock
  9672. else if ext = 'WGL_I3D_swap_frame_usage' then Result := Load_WGL_I3D_swap_frame_usage
  9673. {$ENDIF}
  9674. else if ext = 'GL_3DFX_texture_compression_FXT1' then Result := Load_GL_3DFX_texture_compression_FXT1
  9675. else if ext = 'GL_IBM_cull_vertex' then Result := Load_GL_IBM_cull_vertex
  9676. else if ext = 'GL_IBM_multimode_draw_arrays' then Result := Load_GL_IBM_multimode_draw_arrays
  9677. else if ext = 'GL_IBM_raster_pos_clip' then Result := Load_GL_IBM_raster_pos_clip
  9678. else if ext = 'GL_IBM_texture_mirrored_repeat' then Result := Load_GL_IBM_texture_mirrored_repeat
  9679. else if ext = 'GL_IBM_vertex_array_lists' then Result := Load_GL_IBM_vertex_array_lists
  9680. else if ext = 'GL_MESA_resize_buffers' then Result := Load_GL_MESA_resize_buffers
  9681. else if ext = 'GL_MESA_window_pos' then Result := Load_GL_MESA_window_pos
  9682. else if ext = 'GL_OML_interlace' then Result := Load_GL_OML_interlace
  9683. else if ext = 'GL_OML_resample' then Result := Load_GL_OML_resample
  9684. else if ext = 'GL_OML_subsample' then Result := Load_GL_OML_subsample
  9685. else if ext = 'GL_SGIS_generate_mipmap' then Result := Load_GL_SGIS_generate_mipmap
  9686. else if ext = 'GL_SGIS_multisample' then Result := Load_GL_SGIS_multisample
  9687. else if ext = 'GL_SGIS_pixel_texture' then Result := Load_GL_SGIS_pixel_texture
  9688. else if ext = 'GL_SGIS_texture_border_clamp' then Result := Load_GL_SGIS_texture_border_clamp
  9689. else if ext = 'GL_SGIS_texture_color_mask' then Result := Load_GL_SGIS_texture_color_mask
  9690. else if ext = 'GL_SGIS_texture_edge_clamp' then Result := Load_GL_SGIS_texture_edge_clamp
  9691. else if ext = 'GL_SGIS_texture_lod' then Result := Load_GL_SGIS_texture_lod
  9692. else if ext = 'GL_SGIS_depth_texture' then Result := Load_GL_SGIS_depth_texture
  9693. else if ext = 'GL_SGIX_fog_offset' then Result := Load_GL_SGIX_fog_offset
  9694. else if ext = 'GL_SGIX_interlace' then Result := Load_GL_SGIX_interlace
  9695. else if ext = 'GL_SGIX_shadow_ambient' then Result := Load_GL_SGIX_shadow_ambient
  9696. else if ext = 'GL_SGI_color_matrix' then Result := Load_GL_SGI_color_matrix
  9697. else if ext = 'GL_SGI_color_table' then Result := Load_GL_SGI_color_table
  9698. else if ext = 'GL_SGI_texture_color_table' then Result := Load_GL_SGI_texture_color_table
  9699. else if ext = 'GL_SUN_vertex' then Result := Load_GL_SUN_vertex
  9700. else if ext = 'GL_ARB_fragment_program' then Result := Load_GL_ARB_fragment_program
  9701. else if ext = 'GL_ATI_text_fragment_shader' then Result := Load_GL_ATI_text_fragment_shader
  9702. else if ext = 'GL_APPLE_client_storage' then Result := Load_GL_APPLE_client_storage
  9703. else if ext = 'GL_APPLE_element_array' then Result := Load_GL_APPLE_element_array
  9704. else if ext = 'GL_APPLE_fence' then Result := Load_GL_APPLE_fence
  9705. else if ext = 'GL_APPLE_vertex_array_object' then Result := Load_GL_APPLE_vertex_array_object
  9706. else if ext = 'GL_APPLE_vertex_array_range' then Result := Load_GL_APPLE_vertex_array_range
  9707. {$IFDEF Windows}
  9708. else if ext = 'WGL_ARB_pixel_format' then Result := Load_WGL_ARB_pixel_format
  9709. else if ext = 'WGL_ARB_make_current_read' then Result := Load_WGL_ARB_make_current_read
  9710. else if ext = 'WGL_ARB_pbuffer' then Result := Load_WGL_ARB_pbuffer
  9711. else if ext = 'WGL_EXT_swap_control' then Result := Load_WGL_EXT_swap_control
  9712. else if ext = 'WGL_ARB_render_texture' then Result := Load_WGL_ARB_render_texture
  9713. else if ext = 'WGL_EXT_extensions_string' then Result := Load_WGL_EXT_extensions_string
  9714. else if ext = 'WGL_EXT_make_current_read' then Result := Load_WGL_EXT_make_current_read
  9715. else if ext = 'WGL_EXT_pbuffer' then Result := Load_WGL_EXT_pbuffer
  9716. else if ext = 'WGL_EXT_pixel_format' then Result := Load_WGL_EXT_pixel_format
  9717. else if ext = 'WGL_I3D_digital_video_control' then Result := Load_WGL_I3D_digital_video_control
  9718. else if ext = 'WGL_I3D_gamma' then Result := Load_WGL_I3D_gamma
  9719. else if ext = 'WGL_I3D_genlock' then Result := Load_WGL_I3D_genlock
  9720. {$ENDIF}
  9721. else if ext = 'GL_ARB_matrix_palette' then Result := Load_GL_ARB_matrix_palette
  9722. else if ext = 'GL_NV_element_array' then Result := Load_GL_NV_element_array
  9723. else if ext = 'GL_NV_float_buffer' then Result := Load_GL_NV_float_buffer
  9724. else if ext = 'GL_NV_fragment_program' then Result := Load_GL_NV_fragment_program
  9725. else if ext = 'GL_NV_primitive_restart' then Result := Load_GL_NV_primitive_restart
  9726. else if ext = 'GL_NV_vertex_program2' then Result := Load_GL_NV_vertex_program2
  9727. {$IFDEF Windows}
  9728. else if ext = 'WGL_NV_render_texture_rectangle' then Result := Load_WGL_NV_render_texture_rectangle
  9729. {$ENDIF}
  9730. else if ext = 'GL_NV_pixel_data_range' then Result := Load_GL_NV_pixel_data_range
  9731. else if ext = 'GL_EXT_texture_rectangle' then Result := Load_GL_EXT_texture_rectangle
  9732. else if ext = 'GL_S3_s3tc' then Result := Load_GL_S3_s3tc
  9733. else if ext = 'GL_ATI_draw_buffers' then Result := Load_GL_ATI_draw_buffers
  9734. {$IFDEF Windows}
  9735. else if ext = 'WGL_ATI_pixel_format_float' then Result := Load_WGL_ATI_pixel_format_float
  9736. {$ENDIF}
  9737. else if ext = 'GL_ATI_texture_env_combine3' then Result := Load_GL_ATI_texture_env_combine3
  9738. else if ext = 'GL_ATI_texture_float' then Result := Load_GL_ATI_texture_float
  9739. else if ext = 'GL_NV_texture_expand_normal' then Result := Load_GL_NV_texture_expand_normal
  9740. else if ext = 'GL_NV_half_float' then Result := Load_GL_NV_half_float
  9741. else if ext = 'GL_ATI_map_object_buffer' then Result := Load_GL_ATI_map_object_buffer
  9742. else if ext = 'GL_ATI_separate_stencil' then Result := Load_GL_ATI_separate_stencil
  9743. else if ext = 'GL_ATI_vertex_attrib_array_object' then Result := Load_GL_ATI_vertex_attrib_array_object
  9744. else if ext = 'GL_ARB_vertex_buffer_object' then Result := Load_GL_ARB_vertex_buffer_object
  9745. else if ext = 'GL_ARB_occlusion_query' then Result := Load_GL_ARB_occlusion_query
  9746. else if ext = 'GL_ARB_shader_objects' then Result := Load_GL_ARB_shader_objects
  9747. else if ext = 'GL_ARB_vertex_shader' then Result := Load_GL_ARB_vertex_shader
  9748. else if ext = 'GL_ARB_fragment_shader' then Result := Load_GL_ARB_fragment_shader
  9749. else if ext = 'GL_ARB_shading_language_100' then Result := Load_GL_ARB_shading_language_100
  9750. else if ext = 'GL_ARB_texture_non_power_of_two' then Result := Load_GL_ARB_texture_non_power_of_two
  9751. else if ext = 'GL_ARB_point_sprite' then Result := Load_GL_ARB_point_sprite
  9752. else if ext = 'GL_EXT_depth_bounds_test' then Result := Load_GL_EXT_depth_bounds_test
  9753. else if ext = 'GL_EXT_texture_mirror_clamp' then Result := Load_GL_EXT_texture_mirror_clamp
  9754. else if ext = 'GL_EXT_blend_equation_separate' then Result := Load_GL_EXT_blend_equation_separate
  9755. else if ext = 'GL_MESA_pack_invert' then Result := Load_GL_MESA_pack_invert
  9756. else if ext = 'GL_MESA_ycbcr_texture' then Result := Load_GL_MESA_ycbcr_texture
  9757. else if ext = 'GL_ARB_fragment_program_shadow' then Result := Load_GL_ARB_fragment_program_shadow
  9758. else if ext = 'GL_NV_fragment_program_option' then Result := Load_GL_NV_fragment_program_option
  9759. else if ext = 'GL_EXT_pixel_buffer_object' then Result := Load_GL_EXT_pixel_buffer_object
  9760. else if ext = 'GL_NV_fragment_program2' then Result := Load_GL_NV_fragment_program2
  9761. else if ext = 'GL_NV_vertex_program2_option' then Result := Load_GL_NV_vertex_program2_option
  9762. else if ext = 'GL_NV_vertex_program3' then Result := Load_GL_NV_vertex_program3
  9763. else if ext = 'GL_ARB_draw_buffers' then Result := Load_GL_ARB_draw_buffers
  9764. else if ext = 'GL_ARB_texture_rectangle' then Result := Load_GL_ARB_texture_rectangle
  9765. else if ext = 'GL_ARB_color_buffer_float' then Result := Load_GL_ARB_color_buffer_float
  9766. else if ext = 'GL_ARB_half_float_pixel' then Result := Load_GL_ARB_half_float_pixel
  9767. else if ext = 'GL_ARB_texture_float' then Result := Load_GL_ARB_texture_float
  9768. else if ext = 'GL_EXT_texture_compression_dxt1' then Result := Load_GL_EXT_texture_compression_dxt1
  9769. else if ext = 'GL_ARB_pixel_buffer_object' then Result := Load_GL_ARB_pixel_buffer_object
  9770. else if ext = 'GL_EXT_framebuffer_object' then Result := Load_GL_EXT_framebuffer_object
  9771. else if ext = 'GL_version_1_4' then Result := Load_GL_version_1_4
  9772. else if ext = 'GL_version_1_5' then Result := Load_GL_version_1_5
  9773. else if ext = 'GL_version_2_0' then Result := Load_GL_version_2_0
  9774. end;
  9775. procedure Load_GL_version_2_1x (var allOK: Boolean);
  9776. begin
  9777. glUniformMatrix2x3fv := wglGetProcAddress('glUniformMatrix2x3fv');
  9778. if not Assigned(glUniformMatrix2x3fv) then allOK := false;
  9779. glUniformMatrix3x2fv := wglGetProcAddress('glUniformMatrix3x2fv');
  9780. if not Assigned(glUniformMatrix3x2fv) then allOK := false;
  9781. glUniformMatrix2x4fv := wglGetProcAddress('glUniformMatrix2x4fv');
  9782. if not Assigned(glUniformMatrix2x4fv) then allOK := false;
  9783. glUniformMatrix4x2fv := wglGetProcAddress('glUniformMatrix4x2fv');
  9784. if not Assigned(glUniformMatrix4x2fv) then allOK := false;
  9785. glUniformMatrix3x4fv := wglGetProcAddress('glUniformMatrix3x4fv');
  9786. if not Assigned(glUniformMatrix3x4fv) then allOK := false;
  9787. glUniformMatrix4x3fv := wglGetProcAddress('glUniformMatrix4x3fv');
  9788. if not Assigned(glUniformMatrix4x3fv) then allOK := false;
  9789. Load_GL_VERSION_2_0x(allOK);
  9790. end;
  9791. function Load_GL_version_2_1: boolean;
  9792. begin
  9793. result := true;
  9794. Load_GL_version_2_1x(result);
  9795. end;
  9796. procedure Load_GL_version_3_0x (var allOK: boolean; out isVersion: Boolean);
  9797. begin
  9798. glColorMaski := wglGetProcAddress('glColorMaski');
  9799. isVersion := Assigned(glColorMaski);
  9800. if not Assigned(glColorMaski) then allOK := false;
  9801. glGetBooleani_v := wglGetProcAddress('glGetBooleani_v');
  9802. if not Assigned(glGetBooleani_v) then allOK := false;
  9803. glGetIntegeri_v := wglGetProcAddress('glGetIntegeri_v');
  9804. if not Assigned(glGetIntegeri_v) then allOK := false;
  9805. glEnablei := wglGetProcAddress('glEnablei');
  9806. if not Assigned(glEnablei) then allOK := false;
  9807. glDisablei := wglGetProcAddress('glDisablei');
  9808. if not Assigned(glDisablei) then allOK := false;
  9809. glIsEnabledi := wglGetProcAddress('glIsEnabledi');
  9810. if not Assigned(glIsEnabledi) then allOK := false;
  9811. glBeginTransformFeedback := wglGetProcAddress('glBeginTransformFeedback');
  9812. if not Assigned(glBeginTransformFeedback) then allOK := false;
  9813. glEndTransformFeedback := wglGetProcAddress('glEndTransformFeedback');
  9814. if not Assigned(glEndTransformFeedback) then allOK := false;
  9815. glBindBufferRange := wglGetProcAddress('glBindBufferRange');
  9816. if not Assigned(glBindBufferRange) then allOK := false;
  9817. glBindBufferBase := wglGetProcAddress('glBindBufferBase');
  9818. if not Assigned(glBindBufferBase) then allOK := false;
  9819. glTransformFeedbackVaryings := wglGetProcAddress('glTransformFeedbackVaryings');
  9820. if not Assigned(glTransformFeedbackVaryings) then allOK := false;
  9821. glGetTransformFeedbackVarying := wglGetProcAddress('glGetTransformFeedbackVarying');
  9822. if not Assigned(glGetTransformFeedbackVarying) then allOK := false;
  9823. glClampColor := wglGetProcAddress('glClampColor');
  9824. if not Assigned(glClampColor) then allOK := false;
  9825. glBeginConditionalRender := wglGetProcAddress('glBeginConditionalRender');
  9826. if not Assigned(glBeginConditionalRender) then allOK := false;
  9827. glEndConditionalRender := wglGetProcAddress('glEndConditionalRender');
  9828. if not Assigned(glEndConditionalRender) then allOK := false;
  9829. glVertexAttribIPointer := wglGetProcAddress('glVertexAttribIPointer');
  9830. if not Assigned(glVertexAttribIPointer) then allOK := false;
  9831. glGetVertexAttribIiv := wglGetProcAddress('glGetVertexAttribIiv');
  9832. if not Assigned(glGetVertexAttribIiv) then allOK := false;
  9833. glGetVertexAttribIuiv := wglGetProcAddress('glGetVertexAttribIuiv');
  9834. if not Assigned(glGetVertexAttribIuiv) then allOK := false;
  9835. glVertexAttribI1i := wglGetProcAddress('glVertexAttribI1i');
  9836. if not Assigned(glVertexAttribI1i) then allOK := false;
  9837. glVertexAttribI2i := wglGetProcAddress('glVertexAttribI2i');
  9838. if not Assigned(glVertexAttribI2i) then allOK := false;
  9839. glVertexAttribI3i := wglGetProcAddress('glVertexAttribI3i');
  9840. if not Assigned(glVertexAttribI3i) then allOK := false;
  9841. glVertexAttribI4i := wglGetProcAddress('glVertexAttribI4i');
  9842. if not Assigned(glVertexAttribI4i) then allOK := false;
  9843. glVertexAttribI1ui := wglGetProcAddress('glVertexAttribI1ui');
  9844. if not Assigned(glVertexAttribI1ui) then allOK := false;
  9845. glVertexAttribI2ui := wglGetProcAddress('glVertexAttribI2ui');
  9846. if not Assigned(glVertexAttribI2ui) then allOK := false;
  9847. glVertexAttribI3ui := wglGetProcAddress('glVertexAttribI3ui');
  9848. if not Assigned(glVertexAttribI3ui) then allOK := false;
  9849. glVertexAttribI4ui := wglGetProcAddress('glVertexAttribI4ui');
  9850. if not Assigned(glVertexAttribI4ui) then allOK := false;
  9851. glVertexAttribI1iv := wglGetProcAddress('glVertexAttribI1iv');
  9852. if not Assigned(glVertexAttribI1iv) then allOK := false;
  9853. glVertexAttribI2iv := wglGetProcAddress('glVertexAttribI2iv');
  9854. if not Assigned(glVertexAttribI2iv) then allOK := false;
  9855. glVertexAttribI3iv := wglGetProcAddress('glVertexAttribI3iv');
  9856. if not Assigned(glVertexAttribI3iv) then allOK := false;
  9857. glVertexAttribI4iv := wglGetProcAddress('glVertexAttribI4iv');
  9858. if not Assigned(glVertexAttribI4iv) then allOK := false;
  9859. glVertexAttribI1uiv := wglGetProcAddress('glVertexAttribI1uiv');
  9860. if not Assigned(glVertexAttribI1uiv) then allOK := false;
  9861. glVertexAttribI2uiv := wglGetProcAddress('glVertexAttribI2uiv');
  9862. if not Assigned(glVertexAttribI2uiv) then allOK := false;
  9863. glVertexAttribI3uiv := wglGetProcAddress('glVertexAttribI3uiv');
  9864. if not Assigned(glVertexAttribI3uiv) then allOK := false;
  9865. glVertexAttribI4uiv := wglGetProcAddress('glVertexAttribI4uiv');
  9866. if not Assigned(glVertexAttribI4uiv) then allOK := false;
  9867. glVertexAttribI4bv := wglGetProcAddress('glVertexAttribI4bv');
  9868. if not Assigned(glVertexAttribI4bv) then allOK := false;
  9869. glVertexAttribI4sv := wglGetProcAddress('glVertexAttribI4sv');
  9870. if not Assigned(glVertexAttribI4sv) then allOK := false;
  9871. glVertexAttribI4ubv := wglGetProcAddress('glVertexAttribI4ubv');
  9872. if not Assigned(glVertexAttribI4ubv) then allOK := false;
  9873. glVertexAttribI4usv := wglGetProcAddress('glVertexAttribI4usv');
  9874. if not Assigned(glVertexAttribI4usv) then allOK := false;
  9875. glGetUniformuiv := wglGetProcAddress('glGetUniformuiv');
  9876. if not Assigned(glGetUniformuiv) then allOK := false;
  9877. glBindFragDataLocation := wglGetProcAddress('glBindFragDataLocation');
  9878. if not Assigned(glBindFragDataLocation) then allOK := false;
  9879. glGetFragDataLocation := wglGetProcAddress('glGetFragDataLocation');
  9880. if not Assigned(glGetFragDataLocation) then allOK := false;
  9881. glUniform1ui := wglGetProcAddress('glUniform1ui');
  9882. if not Assigned(glUniform1ui) then allOK := false;
  9883. glUniform2ui := wglGetProcAddress('glUniform2ui');
  9884. if not Assigned(glUniform2ui) then allOK := false;
  9885. glUniform3ui := wglGetProcAddress('glUniform3ui');
  9886. if not Assigned(glUniform3ui) then allOK := false;
  9887. glUniform4ui := wglGetProcAddress('glUniform4ui');
  9888. if not Assigned(glUniform4ui) then allOK := false;
  9889. glUniform1uiv := wglGetProcAddress('glUniform1uiv');
  9890. if not Assigned(glUniform1uiv) then allOK := false;
  9891. glUniform2uiv := wglGetProcAddress('glUniform2uiv');
  9892. if not Assigned(glUniform2uiv) then allOK := false;
  9893. glUniform3uiv := wglGetProcAddress('glUniform3uiv');
  9894. if not Assigned(glUniform3uiv) then allOK := false;
  9895. glUniform4uiv := wglGetProcAddress('glUniform4uiv');
  9896. if not Assigned(glUniform4uiv) then allOK := false;
  9897. glTexParameterIiv := wglGetProcAddress('glTexParameterIiv');
  9898. if not Assigned(glTexParameterIiv) then allOK := false;
  9899. glTexParameterIuiv := wglGetProcAddress('glTexParameterIuiv');
  9900. if not Assigned(glTexParameterIuiv) then allOK := false;
  9901. glGetTexParameterIiv := wglGetProcAddress('glGetTexParameterIiv');
  9902. if not Assigned(glGetTexParameterIiv) then allOK := false;
  9903. glGetTexParameterIuiv := wglGetProcAddress('glGetTexParameterIuiv');
  9904. if not Assigned(glGetTexParameterIuiv) then allOK := false;
  9905. glClearBufferiv := wglGetProcAddress('glClearBufferiv');
  9906. if not Assigned(glClearBufferiv) then allOK := false;
  9907. glClearBufferuiv := wglGetProcAddress('glClearBufferuiv');
  9908. if not Assigned(glClearBufferuiv) then allOK := false;
  9909. glClearBufferfv := wglGetProcAddress('glClearBufferfv');
  9910. if not Assigned(glClearBufferfv) then allOK := false;
  9911. glClearBufferfi := wglGetProcAddress('glClearBufferfi');
  9912. if not Assigned(glClearBufferfi) then allOK := false;
  9913. glGetStringi := wglGetProcAddress('glGetStringi');
  9914. if not Assigned(glGetStringi) then allOK := false;
  9915. if not Load_GL_ARB_framebuffer_object(true) then allOK := false;
  9916. if not Load_GL_ARB_map_buffer_range(true) then allOK := false;
  9917. if not Load_GL_ARB_vertex_array_object(true) then allOK := false;
  9918. Load_GL_VERSION_2_1x(allOK);
  9919. end;
  9920. function Load_GL_version_3_0: boolean;
  9921. var
  9922. dummy: boolean;
  9923. begin
  9924. result := true;
  9925. Load_GL_version_3_0x(result, dummy);
  9926. end;
  9927. function Load_GL_version_3_0_CORE: boolean;
  9928. var
  9929. dummy: boolean;
  9930. begin
  9931. Load_GL_version_3_0x(dummy, result);
  9932. glGetError(); //clear errors for invalid enums
  9933. end;
  9934. function Load_GL_Debug_output: Boolean;
  9935. var
  9936. extstring: String;
  9937. begin
  9938. Result := False;
  9939. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  9940. if glext_ExtensionSupported('GL_KHR_debug', extstring) then
  9941. begin
  9942. glDebugMessageCallback := wglGetProcAddress('glDebugMessageCallback');
  9943. if not Assigned(glDebugMessageCallback) then Exit;
  9944. glDebugMessageControl := wglGetProcAddress('glDebugMessageControl');
  9945. if not Assigned(glDebugMessageControl) then Exit;
  9946. Result := True;
  9947. end;
  9948. if not Result and glext_ExtensionSupported('GL_ARB_debug_output', extstring) then
  9949. begin
  9950. glDebugMessageCallback := wglGetProcAddress('glDebugMessageCallbackARB');
  9951. if not Assigned(glDebugMessageCallback) then Exit;
  9952. glDebugMessageControl := wglGetProcAddress('glDebugMessageControlARB');
  9953. if not Assigned(glDebugMessageControl) then Exit;
  9954. Result := True;
  9955. end;
  9956. end;
  9957. procedure Load_GL_VERSION_3_1x(var allOK: boolean; out isVersion: Boolean);
  9958. var
  9959. dummy: boolean;
  9960. begin
  9961. glDrawArraysInstanced := wglGetProcAddress('glDrawArraysInstanced');
  9962. isVersion := Assigned(glDrawArraysInstanced);
  9963. if not Assigned(glDrawArraysInstanced) then allOK := false;
  9964. glDrawElementsInstanced := wglGetProcAddress('glDrawElementsInstanced');
  9965. if not Assigned(glDrawElementsInstanced) then allOK := false;
  9966. glTexBuffer := wglGetProcAddress('glTexBuffer');
  9967. if not Assigned(glTexBuffer) then allOK := false;
  9968. glPrimitiveRestartIndex := wglGetProcAddress('glPrimitiveRestartIndex');
  9969. if not Assigned(glPrimitiveRestartIndex) then allOK := false;
  9970. if not Load_GL_ARB_copy_buffer(true) then allOK := false;
  9971. if not Load_GL_ARB_uniform_buffer_object(true) then allOK := false;
  9972. Load_GL_VERSION_3_0x(allOK, dummy);
  9973. end;
  9974. function Load_GL_version_3_1: boolean;
  9975. var
  9976. dummy: boolean;
  9977. begin
  9978. result := true;
  9979. Load_GL_version_3_1x(result, dummy);
  9980. end;
  9981. function Load_GL_version_3_1_CORE: boolean;
  9982. var
  9983. dummy: boolean;
  9984. begin
  9985. Load_GL_version_3_1x(dummy, result);
  9986. glGetError(); //clear errors for invalid enums
  9987. end;
  9988. procedure Load_GL_VERSION_3_2x(var allOK: boolean; out isVersion: Boolean);
  9989. var
  9990. dummy: boolean;
  9991. begin
  9992. glGetInteger64i_v := wglGetProcAddress('glGetInteger64i_v');
  9993. isVersion := Assigned(glGetInteger64i_v);
  9994. if not Assigned(glGetInteger64i_v) then allOK := false;
  9995. glGetBufferParameteri64v := wglGetProcAddress('glGetBufferParameteri64v');
  9996. if not Assigned(glGetBufferParameteri64v) then allOK := false;
  9997. glProgramParameteri := wglGetProcAddress('glProgramParameteri');
  9998. if not Assigned(glProgramParameteri) then allOK := false;
  9999. glFramebufferTexture := wglGetProcAddress('glFramebufferTexture');
  10000. if not Assigned(glFramebufferTexture) then allOK := false;
  10001. glVertexAttribDivisor := wglGetProcAddress('glVertexAttribDivisor');
  10002. if not Assigned(glVertexAttribDivisor) then allOK := false;
  10003. if not Load_GL_ARB_draw_elements_base_vertex(true) then allOK := false;
  10004. if not Load_GL_ARB_provoking_vertex(true) then allOK := false;
  10005. if not Load_GL_ARB_sync(true) then allOK := false;
  10006. if not Load_GL_ARB_texture_multisample(true) then allOK := false;
  10007. Load_GL_VERSION_3_1x(allOK, dummy);
  10008. end;
  10009. function Load_GL_version_3_2: boolean;
  10010. var
  10011. dummy: boolean;
  10012. begin
  10013. result := true;
  10014. Load_GL_version_3_2x(result, dummy);
  10015. end;
  10016. function Load_GL_version_3_2_CORE: boolean;
  10017. var
  10018. dummy: boolean;
  10019. begin
  10020. result := true;
  10021. Load_GL_version_3_2x(dummy, dummy);
  10022. glGetError(); //clear errors for invalid enums
  10023. end;
  10024. procedure Load_GL_VERSION_3_3x(var allOK: boolean; out isVersion: Boolean);
  10025. var
  10026. dummy: boolean;
  10027. begin
  10028. isVersion := Load_GL_ARB_blend_func_extended(true);
  10029. if not isVersion then allOK := false;
  10030. if not Load_GL_ARB_sampler_objects(true) then allOK := false;
  10031. if not Load_GL_ARB_timer_query(true) then allOK := false;
  10032. if not Load_GL_ARB_vertex_type_2_10_10_10_rev(true) then allOK := false;
  10033. Load_GL_VERSION_3_2x(allOK, dummy);
  10034. end;
  10035. function Load_GL_version_3_3: boolean;
  10036. var
  10037. dummy: boolean;
  10038. begin
  10039. result := true;
  10040. Load_GL_version_3_3x(result, dummy);
  10041. end;
  10042. function Load_GL_version_3_3_CORE: boolean;
  10043. var
  10044. dummy: boolean;
  10045. begin
  10046. result := true;
  10047. Load_GL_version_3_3x(dummy, result);
  10048. glGetError(); //clear errors for invalid enums
  10049. end;
  10050. procedure Load_GL_VERSION_4_0x(var allOK: boolean; out isVersion: Boolean);
  10051. var
  10052. dummy: boolean;
  10053. begin
  10054. isVersion := Load_GL_ARB_gpu_shader_fp64(true);
  10055. if not isVersion then allOK := false;
  10056. if not Load_GL_ARB_shader_subroutine(true) then allOK := false;
  10057. if not Load_GL_ARB_tessellation_shader(true) then allOK := false;
  10058. if not Load_GL_ARB_transform_feedback2(true) then allOK := false;
  10059. if not Load_GL_ARB_transform_feedback3(true) then allOK := false;
  10060. Load_GL_VERSION_3_3x(allOK, dummy);
  10061. end;
  10062. function Load_GL_version_4_0: boolean;
  10063. var
  10064. dummy: boolean;
  10065. begin
  10066. result := true;
  10067. Load_GL_version_4_0x(result, dummy);
  10068. end;
  10069. function Load_GL_version_4_0_CORE: boolean;
  10070. var
  10071. dummy: boolean;
  10072. begin
  10073. result := true;
  10074. Load_GL_version_4_0x(dummy, dummy);
  10075. glGetError(); //clear errors for invalid enums
  10076. end;
  10077. function Load_GL_VERSION_4_3(): Boolean;
  10078. var
  10079. dummy: boolean;
  10080. begin
  10081. Result := true;
  10082. if not Load_GL_Debug_output() then result := false;
  10083. Load_GL_VERSION_4_0x(result, dummy);
  10084. end;
  10085. function Load_GL_version_4_3_CORE: boolean;
  10086. var
  10087. dummy, dummy2: boolean;
  10088. begin
  10089. result := Load_GL_Debug_output();
  10090. Load_GL_VERSION_4_0x(dummy, dummy2);
  10091. glGetError(); //clear errors for invalid enums
  10092. end;
  10093. end.