gl.pp 93 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065
  1. {
  2. $Id$
  3. Translation of the Mesa GL headers for FreePascal
  4. Copyright (C) 1999 Sebastian Guenther
  5. Mesa 3-D graphics library
  6. Version: 3.0
  7. Copyright (C) 1995-1998 Brian Paul
  8. This library is free software; you can redistribute it and/or
  9. modify it under the terms of the GNU Library General Public
  10. License as published by the Free Software Foundation; either
  11. version 2 of the License, or (at your option) any later version.
  12. This library is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. Library General Public License for more details.
  16. You should have received a copy of the GNU Library General Public
  17. License along with this library; if not, write to the Free
  18. Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. }
  20. {$MODE delphi} // objfpc would not work because of direct proc var assignments
  21. {You have to enable Macros (compiler switch "-Sm") for compiling this unit!
  22. This is necessary for supporting different platforms with different calling
  23. conventions via a single unit.}
  24. unit GL;
  25. interface
  26. {$DEFINE GL1_0}
  27. {$DEFINE GL1_1}
  28. {$DEFINE GL1_2}
  29. {$DEFINE MESA} {enable if you want to use some special mesa extensions}
  30. {$DEFINE EXTENSIONS} {enable if you need one/all of extensions}
  31. {$DEFINE SGI_EXTENSIONS} {enable if you need one/all of extensions}
  32. {$MACRO ON}
  33. {$IFDEF Linux}
  34. {$LINKLIB c}
  35. {$ELSE}
  36. {$MESSAGE Unsupported platform.}
  37. {$ENDIF}
  38. // =======================================================
  39. // Unit specific extensions
  40. // =======================================================
  41. function InitGLFromLibrary(libname: PChar): Boolean;
  42. // determines automatically which libraries to use:
  43. function InitGL: Boolean;
  44. var
  45. GLDumpUnresolvedFunctions,
  46. GLInitialized: Boolean;
  47. // =======================================================
  48. // GL consts, types and functions
  49. // =======================================================
  50. // -------------------------------------------------------
  51. // GL types
  52. // -------------------------------------------------------
  53. type
  54. PSingle = ^Single;
  55. PDouble = ^Double;
  56. GLvoid = Pointer;
  57. GLboolean = Byte;
  58. GLbyte = ShortInt; // 1-byte signed
  59. GLshort = Integer; // 2-byte signed
  60. GLint = LongInt; // 4-byte signed
  61. GLubyte = Byte; // 1-byte unsigned
  62. GLushort = Word; // 2-byte unsigned
  63. GLuint = DWord; // 4-byte signed
  64. GLsizei = LongInt; // 4-byte signed
  65. GLfloat = Single; // single precision float
  66. GLclampf = Single; // single precision float in [0,1]
  67. GLdouble = Double; // double precision float
  68. GLclampd = Double; // double precision float in [0,1]
  69. GLenum = DWord;
  70. PGLBoolean = ^GLBoolean;
  71. PGLFloat = ^GLfloat;
  72. PGLDouble = ^GLDouble;
  73. type
  74. GLbitfield = DWord; { was an enum - no corresponding thing in pascal }
  75. const
  76. GL_CURRENT_BIT = $00000001;
  77. GL_POINT_BIT = $00000002;
  78. GL_LINE_BIT = $00000004;
  79. GL_POLYGON_BIT = $00000008;
  80. GL_POLYGON_STIPPLE_BIT= $00000010;
  81. GL_PIXEL_MODE_BIT = $00000020;
  82. GL_LIGHTING_BIT = $00000040;
  83. GL_FOG_BIT = $00000080;
  84. GL_DEPTH_BUFFER_BIT = $00000100;
  85. GL_ACCUM_BUFFER_BIT = $00000200;
  86. GL_STENCIL_BUFFER_BIT = $00000400;
  87. GL_VIEWPORT_BIT = $00000800;
  88. GL_TRANSFORM_BIT = $00001000;
  89. GL_ENABLE_BIT = $00002000;
  90. GL_COLOR_BUFFER_BIT = $00004000;
  91. GL_HINT_BIT = $00008000;
  92. GL_EVAL_BIT = $00010000;
  93. GL_LIST_BIT = $00020000;
  94. GL_TEXTURE_BIT = $00040000;
  95. GL_SCISSOR_BIT = $00080000;
  96. GL_ALL_ATTRIB_BITS = $000fffff;
  97. // -------------------------------------------------------
  98. // GL constants
  99. // -------------------------------------------------------
  100. {$IFDEF GL1_0}
  101. const
  102. GL_NO_ERROR = 0;
  103. // Boolean values
  104. GL_FALSE = 0;
  105. GL_TRUE = 1;
  106. // Data types
  107. GL_BYTE = $1400;
  108. GL_UNSIGNED_BYTE = $1401;
  109. GL_SHORT = $1402;
  110. GL_UNSIGNED_SHORT = $1403;
  111. GL_INT = $1404;
  112. GL_UNSIGNED_INT = $1405;
  113. GL_FLOAT = $1406;
  114. GL_DOUBLE = $140A;
  115. GL_2_BYTES = $1407;
  116. GL_3_BYTES = $1408;
  117. GL_4_BYTES = $1409;
  118. // Primitives
  119. GL_LINES = $0001;
  120. GL_POINTS = $0000;
  121. GL_LINE_STRIP = $0003;
  122. GL_LINE_LOOP = $0002;
  123. GL_TRIANGLES = $0004;
  124. GL_TRIANGLE_STRIP = $0005;
  125. GL_TRIANGLE_FAN = $0006;
  126. GL_QUADS = $0007;
  127. GL_QUAD_STRIP = $0008;
  128. GL_POLYGON = $0009;
  129. GL_EDGE_FLAG = $0B43;
  130. // Vertex arrays
  131. GL_VERTEX_ARRAY = $8074;
  132. GL_NORMAL_ARRAY = $8075;
  133. GL_COLOR_ARRAY = $8076;
  134. GL_INDEX_ARRAY = $8077;
  135. GL_TEXTURE_COORD_ARRAY = $8078;
  136. GL_EDGE_FLAG_ARRAY = $8079;
  137. GL_VERTEX_ARRAY_SIZE = $807A;
  138. GL_VERTEX_ARRAY_TYPE = $807B;
  139. GL_VERTEX_ARRAY_STRIDE = $807C;
  140. GL_NORMAL_ARRAY_TYPE = $807E;
  141. GL_NORMAL_ARRAY_STRIDE = $807F;
  142. GL_COLOR_ARRAY_SIZE = $8081;
  143. GL_COLOR_ARRAY_TYPE = $8082;
  144. GL_COLOR_ARRAY_STRIDE = $8083;
  145. GL_INDEX_ARRAY_TYPE = $8085;
  146. GL_INDEX_ARRAY_STRIDE = $8086;
  147. GL_TEXTURE_COORD_ARRAY_SIZE = $8088;
  148. GL_TEXTURE_COORD_ARRAY_TYPE = $8089;
  149. GL_TEXTURE_COORD_ARRAY_STRIDE = $808A;
  150. GL_EDGE_FLAG_ARRAY_STRIDE = $808C;
  151. GL_VERTEX_ARRAY_POINTER = $808E;
  152. GL_NORMAL_ARRAY_POINTER = $808F;
  153. GL_COLOR_ARRAY_POINTER = $8090;
  154. GL_INDEX_ARRAY_POINTER = $8091;
  155. GL_TEXTURE_COORD_ARRAY_POINTER = $8092;
  156. GL_EDGE_FLAG_ARRAY_POINTER = $8093;
  157. GL_V2F = $2A20;
  158. GL_V3F = $2A21;
  159. GL_C4UB_V2F = $2A22;
  160. GL_C4UB_V3F = $2A23;
  161. GL_C3F_V3F = $2A24;
  162. GL_N3F_V3F = $2A25;
  163. GL_C4F_N3F_V3F = $2A26;
  164. GL_T2F_V3F = $2A27;
  165. GL_T4F_V4F = $2A28;
  166. GL_T2F_C4UB_V3F = $2A29;
  167. GL_T2F_C3F_V3F = $2A2A;
  168. GL_T2F_N3F_V3F = $2A2B;
  169. GL_T2F_C4F_N3F_V3F = $2A2C;
  170. GL_T4F_C4F_N3F_V4F = $2A2D;
  171. // Matrix Mode
  172. GL_MATRIX_MODE = $0BA0;
  173. GL_MODELVIEW = $1700;
  174. GL_PROJECTION = $1701;
  175. GL_TEXTURE = $1702;
  176. // Points
  177. GL_POINT_SMOOTH = $0B10;
  178. GL_POINT_SIZE = $0B11;
  179. GL_POINT_SIZE_GRANULARITY = $0B13;
  180. GL_POINT_SIZE_RANGE = $0B12;
  181. // Lines
  182. GL_LINE_SMOOTH = $0B20;
  183. GL_LINE_STIPPLE = $0B24;
  184. GL_LINE_STIPPLE_PATTERN = $0B25;
  185. GL_LINE_STIPPLE_REPEAT = $0B26;
  186. GL_LINE_WIDTH = $0B21;
  187. GL_LINE_WIDTH_GRANULARITY = $0B23;
  188. GL_LINE_WIDTH_RANGE = $0B22;
  189. // Polygons
  190. GL_POINT = $1B00;
  191. GL_LINE = $1B01;
  192. GL_FILL = $1B02;
  193. GL_CCW = $0901;
  194. GL_CW = $0900;
  195. GL_FRONT = $0404;
  196. GL_BACK = $0405;
  197. GL_CULL_FACE = $0B44;
  198. GL_CULL_FACE_MODE = $0B45;
  199. GL_POLYGON_SMOOTH = $0B41;
  200. GL_POLYGON_STIPPLE = $0B42;
  201. GL_FRONT_FACE = $0B46;
  202. GL_POLYGON_MODE = $0B40;
  203. GL_POLYGON_OFFSET_FACTOR = $8038;
  204. GL_POLYGON_OFFSET_UNITS = $2A00;
  205. GL_POLYGON_OFFSET_POINT = $2A01;
  206. GL_POLYGON_OFFSET_LINE = $2A02;
  207. GL_POLYGON_OFFSET_FILL = $8037;
  208. // Display lists
  209. GL_COMPILE = $1300;
  210. GL_COMPILE_AND_EXECUTE = $1301;
  211. GL_LIST_BASE = $0B32;
  212. GL_LIST_INDEX = $0B33;
  213. GL_LIST_MODE = $0B30;
  214. // Depth buffer
  215. GL_NEVER = $0200;
  216. GL_LESS = $0201;
  217. GL_GEQUAL = $0206;
  218. GL_LEQUAL = $0203;
  219. GL_GREATER = $0204;
  220. GL_NOTEQUAL = $0205;
  221. GL_EQUAL = $0202;
  222. GL_ALWAYS = $0207;
  223. GL_DEPTH_TEST = $0B71;
  224. GL_DEPTH_BITS = $0D56;
  225. GL_DEPTH_CLEAR_VALUE = $0B73;
  226. GL_DEPTH_FUNC = $0B74;
  227. GL_DEPTH_RANGE = $0B70;
  228. GL_DEPTH_WRITEMASK = $0B72;
  229. GL_DEPTH_COMPONENT = $1902;
  230. // Lighting
  231. GL_LIGHTING = $0B50;
  232. GL_LIGHT0 = $4000;
  233. GL_LIGHT1 = $4001;
  234. GL_LIGHT2 = $4002;
  235. GL_LIGHT3 = $4003;
  236. GL_LIGHT4 = $4004;
  237. GL_LIGHT5 = $4005;
  238. GL_LIGHT6 = $4006;
  239. GL_LIGHT7 = $4007;
  240. GL_SPOT_EXPONENT = $1205;
  241. GL_SPOT_CUTOFF = $1206;
  242. GL_CONSTANT_ATTENUATION = $1207;
  243. GL_LINEAR_ATTENUATION = $1208;
  244. GL_QUADRATIC_ATTENUATION = $1209;
  245. GL_AMBIENT = $1200;
  246. GL_DIFFUSE = $1201;
  247. GL_SPECULAR = $1202;
  248. GL_SHININESS = $1601;
  249. GL_EMISSION = $1600;
  250. GL_POSITION = $1203;
  251. GL_SPOT_DIRECTION = $1204;
  252. GL_AMBIENT_AND_DIFFUSE = $1602;
  253. GL_COLOR_INDEXES = $1603;
  254. GL_LIGHT_MODEL_TWO_SIDE = $0B52;
  255. GL_LIGHT_MODEL_LOCAL_VIEWER = $0B51;
  256. GL_LIGHT_MODEL_AMBIENT = $0B53;
  257. GL_FRONT_AND_BACK = $0408;
  258. GL_SHADE_MODEL = $0B54;
  259. GL_FLAT = $1D00;
  260. GL_SMOOTH = $1D01;
  261. GL_COLOR_MATERIAL = $0B57;
  262. GL_COLOR_MATERIAL_FACE = $0B55;
  263. GL_COLOR_MATERIAL_PARAMETER = $0B56;
  264. GL_NORMALIZE = $0BA1;
  265. // User clipping planes
  266. GL_CLIP_PLANE0 = $3000;
  267. GL_CLIP_PLANE1 = $3001;
  268. GL_CLIP_PLANE2 = $3002;
  269. GL_CLIP_PLANE3 = $3003;
  270. GL_CLIP_PLANE4 = $3004;
  271. GL_CLIP_PLANE5 = $3005;
  272. // Accumulation buffer
  273. GL_ACCUM_RED_BITS = $0D58;
  274. GL_ACCUM_GREEN_BITS = $0D59;
  275. GL_ACCUM_BLUE_BITS = $0D5A;
  276. GL_ACCUM_ALPHA_BITS = $0D5B;
  277. GL_ACCUM_CLEAR_VALUE = $0B80;
  278. GL_ACCUM = $0100;
  279. GL_ADD = $0104;
  280. GL_LOAD = $0101;
  281. GL_MULT = $0103;
  282. GL_RETURN = $0102;
  283. // Alpha testing
  284. GL_ALPHA_TEST = $0BC0;
  285. GL_ALPHA_TEST_REF = $0BC2;
  286. GL_ALPHA_TEST_FUNC = $0BC1;
  287. // Blending
  288. GL_BLEND = $0BE2;
  289. GL_BLEND_SRC = $0BE1;
  290. GL_BLEND_DST = $0BE0;
  291. GL_ZERO = 0;
  292. GL_ONE = 1;
  293. GL_SRC_COLOR = $0300;
  294. GL_ONE_MINUS_SRC_COLOR = $0301;
  295. GL_DST_COLOR = $0306;
  296. GL_ONE_MINUS_DST_COLOR = $0307;
  297. GL_SRC_ALPHA = $0302;
  298. GL_ONE_MINUS_SRC_ALPHA = $0303;
  299. GL_DST_ALPHA = $0304;
  300. GL_ONE_MINUS_DST_ALPHA = $0305;
  301. GL_SRC_ALPHA_SATURATE = $0308;
  302. GL_CONSTANT_COLOR = $8001;
  303. GL_ONE_MINUS_CONSTANT_COLOR = $8002;
  304. GL_CONSTANT_ALPHA = $8003;
  305. GL_ONE_MINUS_CONSTANT_ALPHA = $8004;
  306. // Render mode
  307. GL_FEEDBACK = $1C01;
  308. GL_RENDER = $1C00;
  309. GL_SELECT = $1C02;
  310. // Feedback
  311. GL_2D = $0600;
  312. GL_3D = $0601;
  313. GL_3D_COLOR = $0602;
  314. GL_3D_COLOR_TEXTURE = $0603;
  315. GL_4D_COLOR_TEXTURE = $0604;
  316. GL_POINT_TOKEN = $0701;
  317. GL_LINE_TOKEN = $0702;
  318. GL_LINE_RESET_TOKEN = $0707;
  319. GL_POLYGON_TOKEN = $0703;
  320. GL_BITMAP_TOKEN = $0704;
  321. GL_DRAW_PIXEL_TOKEN = $0705;
  322. GL_COPY_PIXEL_TOKEN = $0706;
  323. GL_PASS_THROUGH_TOKEN = $0700;
  324. GL_FEEDBACK_BUFFER_POINTER = $0DF0;
  325. GL_FEEDBACK_BUFFER_SIZE = $0DF1;
  326. GL_FEEDBACK_BUFFER_TYPE = $0DF2;
  327. // Selection
  328. GL_SELECTION_BUFFER_POINTER = $0DF3;
  329. GL_SELECTION_BUFFER_SIZE = $0DF4;
  330. // Fog
  331. GL_FOG = $0B60;
  332. GL_FOG_MODE = $0B65;
  333. GL_FOG_DENSITY = $0B62;
  334. GL_FOG_COLOR = $0B66;
  335. GL_FOG_INDEX = $0B61;
  336. GL_FOG_START = $0B63;
  337. GL_FOG_END = $0B64;
  338. GL_LINEAR = $2601;
  339. GL_EXP = $0800;
  340. GL_EXP2 = $0801;
  341. // Logic ops
  342. GL_LOGIC_OP = $0BF1;
  343. GL_INDEX_LOGIC_OP = $0BF1;
  344. GL_COLOR_LOGIC_OP = $0BF2;
  345. GL_LOGIC_OP_MODE = $0BF0;
  346. GL_CLEAR = $1500;
  347. GL_SET = $150F;
  348. GL_COPY = $1503;
  349. GL_COPY_INVERTED = $150C;
  350. GL_NOOP = $1505;
  351. GL_INVERT = $150A;
  352. GL_AND = $1501;
  353. GL_NAND = $150E;
  354. GL_OR = $1507;
  355. GL_NOR = $1508;
  356. GL_XOR = $1506;
  357. GL_EQUIV = $1509;
  358. GL_AND_REVERSE = $1502;
  359. GL_AND_INVERTED = $1504;
  360. GL_OR_REVERSE = $150B;
  361. GL_OR_INVERTED = $150D;
  362. // Stencil
  363. GL_STENCIL_TEST = $0B90;
  364. GL_STENCIL_WRITEMASK = $0B98;
  365. GL_STENCIL_BITS = $0D57;
  366. GL_STENCIL_FUNC = $0B92;
  367. GL_STENCIL_VALUE_MASK = $0B93;
  368. GL_STENCIL_REF = $0B97;
  369. GL_STENCIL_FAIL = $0B94;
  370. GL_STENCIL_PASS_DEPTH_PASS = $0B96;
  371. GL_STENCIL_PASS_DEPTH_FAIL = $0B95;
  372. GL_STENCIL_CLEAR_VALUE = $0B91;
  373. GL_STENCIL_INDEX = $1901;
  374. GL_KEEP = $1E00;
  375. GL_REPLACE = $1E01;
  376. GL_INCR = $1E02;
  377. GL_DECR = $1E03;
  378. // Buffers, Pixel Drawing/Reading
  379. GL_NONE = 0;
  380. GL_LEFT = $0406;
  381. GL_RIGHT = $0407;
  382. //GL_FRONT = $0404;
  383. //GL_BACK = $0405;
  384. //GL_FRONT_AND_BACK = $0408;
  385. GL_FRONT_LEFT = $0400;
  386. GL_FRONT_RIGHT = $0401;
  387. GL_BACK_LEFT = $0402;
  388. GL_BACK_RIGHT = $0403;
  389. GL_AUX0 = $0409;
  390. GL_AUX1 = $040A;
  391. GL_AUX2 = $040B;
  392. GL_AUX3 = $040C;
  393. GL_COLOR_INDEX = $1900;
  394. GL_RED = $1903;
  395. GL_GREEN = $1904;
  396. GL_BLUE = $1905;
  397. GL_ALPHA = $1906;
  398. GL_LUMINANCE = $1909;
  399. GL_LUMINANCE_ALPHA = $190A;
  400. GL_ALPHA_BITS = $0D55;
  401. GL_RED_BITS = $0D52;
  402. GL_GREEN_BITS = $0D53;
  403. GL_BLUE_BITS = $0D54;
  404. GL_INDEX_BITS = $0D51;
  405. GL_SUBPIXEL_BITS = $0D50;
  406. GL_AUX_BUFFERS = $0C00;
  407. GL_READ_BUFFER = $0C02;
  408. GL_DRAW_BUFFER = $0C01;
  409. GL_DOUBLEBUFFER = $0C32;
  410. GL_STEREO = $0C33;
  411. GL_BITMAP = $1A00;
  412. GL_COLOR = $1800;
  413. GL_DEPTH = $1801;
  414. GL_STENCIL = $1802;
  415. GL_DITHER = $0BD0;
  416. GL_RGB = $1907;
  417. GL_RGBA = $1908;
  418. // Implementation limits
  419. GL_MAX_LIST_NESTING = $0B31;
  420. GL_MAX_ATTRIB_STACK_DEPTH = $0D35;
  421. GL_MAX_MODELVIEW_STACK_DEPTH = $0D36;
  422. GL_MAX_NAME_STACK_DEPTH = $0D37;
  423. GL_MAX_PROJECTION_STACK_DEPTH = $0D38;
  424. GL_MAX_TEXTURE_STACK_DEPTH = $0D39;
  425. GL_MAX_EVAL_ORDER = $0D30;
  426. GL_MAX_LIGHTS = $0D31;
  427. GL_MAX_CLIP_PLANES = $0D32;
  428. GL_MAX_TEXTURE_SIZE = $0D33;
  429. GL_MAX_PIXEL_MAP_TABLE = $0D34;
  430. GL_MAX_VIEWPORT_DIMS = $0D3A;
  431. GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = $0D3B;
  432. // Gets
  433. GL_ATTRIB_STACK_DEPTH = $0BB0;
  434. GL_CLIENT_ATTRIB_STACK_DEPTH = $0BB1;
  435. GL_COLOR_CLEAR_VALUE = $0C22;
  436. GL_COLOR_WRITEMASK = $0C23;
  437. GL_CURRENT_INDEX = $0B01;
  438. GL_CURRENT_COLOR = $0B00;
  439. GL_CURRENT_NORMAL = $0B02;
  440. GL_CURRENT_RASTER_COLOR = $0B04;
  441. GL_CURRENT_RASTER_DISTANCE = $0B09;
  442. GL_CURRENT_RASTER_INDEX = $0B05;
  443. GL_CURRENT_RASTER_POSITION = $0B07;
  444. GL_CURRENT_RASTER_TEXTURE_COORDS = $0B06;
  445. GL_CURRENT_RASTER_POSITION_VALID = $0B08;
  446. GL_CURRENT_TEXTURE_COORDS = $0B03;
  447. GL_INDEX_CLEAR_VALUE = $0C20;
  448. GL_INDEX_MODE = $0C30;
  449. GL_INDEX_WRITEMASK = $0C21;
  450. GL_MODELVIEW_MATRIX = $0BA6;
  451. GL_MODELVIEW_STACK_DEPTH = $0BA3;
  452. GL_NAME_STACK_DEPTH = $0D70;
  453. GL_PROJECTION_MATRIX = $0BA7;
  454. GL_PROJECTION_STACK_DEPTH = $0BA4;
  455. GL_RENDER_MODE = $0C40;
  456. GL_RGBA_MODE = $0C31;
  457. GL_TEXTURE_MATRIX = $0BA8;
  458. GL_TEXTURE_STACK_DEPTH = $0BA5;
  459. GL_VIEWPORT = $0BA2;
  460. // Evaluators
  461. GL_AUTO_NORMAL = $0D80;
  462. GL_MAP1_COLOR_4 = $0D90;
  463. GL_MAP1_GRID_DOMAIN = $0DD0;
  464. GL_MAP1_GRID_SEGMENTS = $0DD1;
  465. GL_MAP1_INDEX = $0D91;
  466. GL_MAP1_NORMAL = $0D92;
  467. GL_MAP1_TEXTURE_COORD_1 = $0D93;
  468. GL_MAP1_TEXTURE_COORD_2 = $0D94;
  469. GL_MAP1_TEXTURE_COORD_3 = $0D95;
  470. GL_MAP1_TEXTURE_COORD_4 = $0D96;
  471. GL_MAP1_VERTEX_3 = $0D97;
  472. GL_MAP1_VERTEX_4 = $0D98;
  473. GL_MAP2_COLOR_4 = $0DB0;
  474. GL_MAP2_GRID_DOMAIN = $0DD2;
  475. GL_MAP2_GRID_SEGMENTS = $0DD3;
  476. GL_MAP2_INDEX = $0DB1;
  477. GL_MAP2_NORMAL = $0DB2;
  478. GL_MAP2_TEXTURE_COORD_1 = $0DB3;
  479. GL_MAP2_TEXTURE_COORD_2 = $0DB4;
  480. GL_MAP2_TEXTURE_COORD_3 = $0DB5;
  481. GL_MAP2_TEXTURE_COORD_4 = $0DB6;
  482. GL_MAP2_VERTEX_3 = $0DB7;
  483. GL_MAP2_VERTEX_4 = $0DB8;
  484. GL_COEFF = $0A00;
  485. GL_DOMAIN = $0A02;
  486. GL_ORDER = $0A01;
  487. // Hints
  488. GL_FOG_HINT = $0C54;
  489. GL_LINE_SMOOTH_HINT = $0C52;
  490. GL_PERSPECTIVE_CORRECTION_HINT = $0C50;
  491. GL_POINT_SMOOTH_HINT = $0C51;
  492. GL_POLYGON_SMOOTH_HINT = $0C53;
  493. GL_DONT_CARE = $1100;
  494. GL_FASTEST = $1101;
  495. GL_NICEST = $1102;
  496. // Scissor box
  497. GL_SCISSOR_TEST = $0C11;
  498. GL_SCISSOR_BOX = $0C10;
  499. // Pixel Mode / Transfer
  500. GL_MAP_COLOR = $0D10;
  501. GL_MAP_STENCIL = $0D11;
  502. GL_INDEX_SHIFT = $0D12;
  503. GL_INDEX_OFFSET = $0D13;
  504. GL_RED_SCALE = $0D14;
  505. GL_RED_BIAS = $0D15;
  506. GL_GREEN_SCALE = $0D18;
  507. GL_GREEN_BIAS = $0D19;
  508. GL_BLUE_SCALE = $0D1A;
  509. GL_BLUE_BIAS = $0D1B;
  510. GL_ALPHA_SCALE = $0D1C;
  511. GL_ALPHA_BIAS = $0D1D;
  512. GL_DEPTH_SCALE = $0D1E;
  513. GL_DEPTH_BIAS = $0D1F;
  514. GL_PIXEL_MAP_S_TO_S_SIZE = $0CB1;
  515. GL_PIXEL_MAP_I_TO_I_SIZE = $0CB0;
  516. GL_PIXEL_MAP_I_TO_R_SIZE = $0CB2;
  517. GL_PIXEL_MAP_I_TO_G_SIZE = $0CB3;
  518. GL_PIXEL_MAP_I_TO_B_SIZE = $0CB4;
  519. GL_PIXEL_MAP_I_TO_A_SIZE = $0CB5;
  520. GL_PIXEL_MAP_R_TO_R_SIZE = $0CB6;
  521. GL_PIXEL_MAP_G_TO_G_SIZE = $0CB7;
  522. GL_PIXEL_MAP_B_TO_B_SIZE = $0CB8;
  523. GL_PIXEL_MAP_A_TO_A_SIZE = $0CB9;
  524. GL_PIXEL_MAP_S_TO_S = $0C71;
  525. GL_PIXEL_MAP_I_TO_I = $0C70;
  526. GL_PIXEL_MAP_I_TO_R = $0C72;
  527. GL_PIXEL_MAP_I_TO_G = $0C73;
  528. GL_PIXEL_MAP_I_TO_B = $0C74;
  529. GL_PIXEL_MAP_I_TO_A = $0C75;
  530. GL_PIXEL_MAP_R_TO_R = $0C76;
  531. GL_PIXEL_MAP_G_TO_G = $0C77;
  532. GL_PIXEL_MAP_B_TO_B = $0C78;
  533. GL_PIXEL_MAP_A_TO_A = $0C79;
  534. GL_PACK_ALIGNMENT = $0D05;
  535. GL_PACK_LSB_FIRST = $0D01;
  536. GL_PACK_ROW_LENGTH = $0D02;
  537. GL_PACK_SKIP_PIXELS = $0D04;
  538. GL_PACK_SKIP_ROWS = $0D03;
  539. GL_PACK_SWAP_BYTES = $0D00;
  540. GL_UNPACK_ALIGNMENT = $0CF5;
  541. GL_UNPACK_LSB_FIRST = $0CF1;
  542. GL_UNPACK_ROW_LENGTH = $0CF2;
  543. GL_UNPACK_SKIP_PIXELS = $0CF4;
  544. GL_UNPACK_SKIP_ROWS = $0CF3;
  545. GL_UNPACK_SWAP_BYTES = $0CF0;
  546. GL_ZOOM_X = $0D16;
  547. GL_ZOOM_Y = $0D17;
  548. // Texture mapping
  549. GL_TEXTURE_ENV = $2300;
  550. GL_TEXTURE_ENV_MODE = $2200;
  551. GL_TEXTURE_1D = $0DE0;
  552. GL_TEXTURE_2D = $0DE1;
  553. GL_TEXTURE_WRAP_S = $2802;
  554. GL_TEXTURE_WRAP_T = $2803;
  555. GL_TEXTURE_MAG_FILTER = $2800;
  556. GL_TEXTURE_MIN_FILTER = $2801;
  557. GL_TEXTURE_ENV_COLOR = $2201;
  558. GL_TEXTURE_GEN_S = $0C60;
  559. GL_TEXTURE_GEN_T = $0C61;
  560. GL_TEXTURE_GEN_MODE = $2500;
  561. GL_TEXTURE_BORDER_COLOR = $1004;
  562. GL_TEXTURE_WIDTH = $1000;
  563. GL_TEXTURE_HEIGHT = $1001;
  564. GL_TEXTURE_BORDER = $1005;
  565. GL_TEXTURE_COMPONENTS = $1003;
  566. GL_TEXTURE_RED_SIZE = $805C;
  567. GL_TEXTURE_GREEN_SIZE = $805D;
  568. GL_TEXTURE_BLUE_SIZE = $805E;
  569. GL_TEXTURE_ALPHA_SIZE = $805F;
  570. GL_TEXTURE_LUMINANCE_SIZE = $8060;
  571. GL_TEXTURE_INTENSITY_SIZE = $8061;
  572. GL_NEAREST_MIPMAP_NEAREST = $2700;
  573. GL_NEAREST_MIPMAP_LINEAR = $2702;
  574. GL_LINEAR_MIPMAP_NEAREST = $2701;
  575. GL_LINEAR_MIPMAP_LINEAR = $2703;
  576. GL_OBJECT_LINEAR = $2401;
  577. GL_OBJECT_PLANE = $2501;
  578. GL_EYE_LINEAR = $2400;
  579. GL_EYE_PLANE = $2502;
  580. GL_SPHERE_MAP = $2402;
  581. GL_DECAL = $2101;
  582. GL_MODULATE = $2100;
  583. GL_NEAREST = $2600;
  584. GL_REPEAT = $2901;
  585. GL_CLAMP = $2900;
  586. GL_S = $2000;
  587. GL_T = $2001;
  588. GL_R = $2002;
  589. GL_Q = $2003;
  590. GL_TEXTURE_GEN_R = $0C62;
  591. GL_TEXTURE_GEN_Q = $0C63;
  592. {$ENDIF GL1_0}
  593. {$IFDEF GL1_1}
  594. const
  595. // GL 1.1 texturing
  596. GL_PROXY_TEXTURE_1D = $8063;
  597. GL_PROXY_TEXTURE_2D = $8064;
  598. GL_TEXTURE_PRIORITY = $8066;
  599. GL_TEXTURE_RESIDENT = $8067;
  600. GL_TEXTURE_BINDING_1D = $8068;
  601. GL_TEXTURE_BINDING_2D = $8069;
  602. GL_TEXTURE_INTERNAL_FORMAT = $1003;
  603. // Internal texture formats (GL 1.1)
  604. GL_ALPHA4 = $803B;
  605. GL_ALPHA8 = $803C;
  606. GL_ALPHA12 = $803D;
  607. GL_ALPHA16 = $803E;
  608. GL_LUMINANCE4 = $803F;
  609. GL_LUMINANCE8 = $8040;
  610. GL_LUMINANCE12 = $8041;
  611. GL_LUMINANCE16 = $8042;
  612. GL_LUMINANCE4_ALPHA4 = $8043;
  613. GL_LUMINANCE6_ALPHA2 = $8044;
  614. GL_LUMINANCE8_ALPHA8 = $8045;
  615. GL_LUMINANCE12_ALPHA4 = $8046;
  616. GL_LUMINANCE12_ALPHA12 = $8047;
  617. GL_LUMINANCE16_ALPHA16 = $8048;
  618. GL_INTENSITY = $8049;
  619. GL_INTENSITY4 = $804A;
  620. GL_INTENSITY8 = $804B;
  621. GL_INTENSITY12 = $804C;
  622. GL_INTENSITY16 = $804D;
  623. GL_R3_G3_B2 = $2A10;
  624. GL_RGB4 = $804F;
  625. GL_RGB5 = $8050;
  626. GL_RGB8 = $8051;
  627. GL_RGB10 = $8052;
  628. GL_RGB12 = $8053;
  629. GL_RGB16 = $8054;
  630. GL_RGBA2 = $8055;
  631. GL_RGBA4 = $8056;
  632. GL_RGB5_A1 = $8057;
  633. GL_RGBA8 = $8058;
  634. GL_RGB10_A2 = $8059;
  635. GL_RGBA12 = $805A;
  636. GL_RGBA16 = $805B;
  637. {$ENDIF GL1_1}
  638. {$IFDEF GL1_2}
  639. const
  640. // GL 1.2 texturing
  641. GL_PACK_SKIP_IMAGES = $806B;
  642. GL_PACK_IMAGE_HEIGHT = $806C;
  643. GL_UNPACK_SKIP_IMAGES = $806D;
  644. GL_UNPACK_IMAGE_HEIGHT = $806E;
  645. GL_TEXTURE_3D = $806F;
  646. GL_PROXY_TEXTURE_3D = $8070;
  647. GL_TEXTURE_DEPTH = $8071;
  648. GL_TEXTURE_WRAP_R = $8072;
  649. GL_MAX_3D_TEXTURE_SIZE = $8073;
  650. GL_TEXTURE_BINDING_3D = $806A;
  651. const
  652. GL_RESCALE_NORMAL = $803A;
  653. GL_CLAMP_TO_EDGE = $812F;
  654. GL_MAX_ELEMENTS_VERTICES = $F0E8;
  655. GL_MAX_ELEMENTS_INDICES = $F0E9;
  656. GL_BGR = $80E0;
  657. GL_BGRA = $80E1;
  658. GL_UNSIGNED_BYTE_3_3_2 = $8032;
  659. GL_UNSIGNED_BYTE_2_3_3_REV = $8362;
  660. GL_UNSIGNED_SHORT_5_6_5 = $8363;
  661. GL_UNSIGNED_SHORT_5_6_5_REV = $8364;
  662. GL_UNSIGNED_SHORT_4_4_4_4 = $8033;
  663. GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365;
  664. GL_UNSIGNED_SHORT_5_5_5_1 = $8034;
  665. GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366;
  666. GL_UNSIGNED_INT_8_8_8_8 = $8035;
  667. GL_UNSIGNED_INT_8_8_8_8_REV = $8367;
  668. GL_UNSIGNED_INT_10_10_10_2 = $8036;
  669. GL_UNSIGNED_INT_2_10_10_10_REV = $8368;
  670. GL_LIGHT_MODEL_COLOR_CONTROL = $81F8;
  671. GL_SINGLE_COLOR = $81F9;
  672. GL_SEPARATE_SPECULAR_COLOR = $81FA;
  673. GL_TEXTURE_MIN_LOD = $813A;
  674. GL_TEXTURE_MAX_LOD = $813B;
  675. GL_TEXTURE_BASE_LEVEL = $813C;
  676. GL_TEXTURE_MAX_LEVEL = $813D;
  677. {$ENDIF GL1_2}
  678. const
  679. // Utility
  680. GL_VENDOR = $1F00;
  681. GL_RENDERER = $1F01;
  682. GL_VERSION = $1F02;
  683. GL_EXTENSIONS = $1F03;
  684. // Errors
  685. GL_INVALID_VALUE = $0501;
  686. GL_INVALID_ENUM = $0500;
  687. GL_INVALID_OPERATION = $0502;
  688. GL_STACK_OVERFLOW = $0503;
  689. GL_STACK_UNDERFLOW = $0504;
  690. GL_OUT_OF_MEMORY = $0505;
  691. // -------------------------------------------------------
  692. // GL extensions constants
  693. // -------------------------------------------------------
  694. {$IFDEF EXTENSIONS}
  695. const
  696. // GL_EXT_blend_minmax and GL_EXT_blend_color
  697. GL_CONSTANT_COLOR_EXT = $8001;
  698. GL_ONE_MINUS_CONSTANT_COLOR_EXT = $8002;
  699. GL_CONSTANT_ALPHA_EXT = $8003;
  700. GL_ONE_MINUS_CONSTANT_ALPHA_EXT = $8004;
  701. GL_BLEND_EQUATION_EXT = $8009;
  702. GL_MIN_EXT = $8007;
  703. GL_MAX_EXT = $8008;
  704. GL_FUNC_ADD_EXT = $8006;
  705. GL_FUNC_SUBTRACT_EXT = $800A;
  706. GL_FUNC_REVERSE_SUBTRACT_EXT = $800B;
  707. GL_BLEND_COLOR_EXT = $8005;
  708. // GL_EXT_polygon_offset
  709. GL_POLYGON_OFFSET_EXT = $8037;
  710. GL_POLYGON_OFFSET_FACTOR_EXT = $8038;
  711. GL_POLYGON_OFFSET_BIAS_EXT = $8039;
  712. // GL_EXT_vertex_array
  713. GL_VERTEX_ARRAY_EXT = $8074;
  714. GL_NORMAL_ARRAY_EXT = $8075;
  715. GL_COLOR_ARRAY_EXT = $8076;
  716. GL_INDEX_ARRAY_EXT = $8077;
  717. GL_TEXTURE_COORD_ARRAY_EXT = $8078;
  718. GL_EDGE_FLAG_ARRAY_EXT = $8079;
  719. GL_VERTEX_ARRAY_SIZE_EXT = $807A;
  720. GL_VERTEX_ARRAY_TYPE_EXT = $807B;
  721. GL_VERTEX_ARRAY_STRIDE_EXT = $807C;
  722. GL_VERTEX_ARRAY_COUNT_EXT = $807D;
  723. GL_NORMAL_ARRAY_TYPE_EXT = $807E;
  724. GL_NORMAL_ARRAY_STRIDE_EXT = $807F;
  725. GL_NORMAL_ARRAY_COUNT_EXT = $8080;
  726. GL_COLOR_ARRAY_SIZE_EXT = $8081;
  727. GL_COLOR_ARRAY_TYPE_EXT = $8082;
  728. GL_COLOR_ARRAY_STRIDE_EXT = $8083;
  729. GL_COLOR_ARRAY_COUNT_EXT = $8084;
  730. GL_INDEX_ARRAY_TYPE_EXT = $8085;
  731. GL_INDEX_ARRAY_STRIDE_EXT = $8086;
  732. GL_INDEX_ARRAY_COUNT_EXT = $8087;
  733. GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088;
  734. GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089;
  735. GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A;
  736. GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B;
  737. GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C;
  738. GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D;
  739. GL_VERTEX_ARRAY_POINTER_EXT = $808E;
  740. GL_NORMAL_ARRAY_POINTER_EXT = $808F;
  741. GL_COLOR_ARRAY_POINTER_EXT = $8090;
  742. GL_INDEX_ARRAY_POINTER_EXT = $8091;
  743. GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092;
  744. GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093;
  745. // GL_EXT_texture_object
  746. GL_TEXTURE_PRIORITY_EXT = $8066;
  747. GL_TEXTURE_RESIDENT_EXT = $8067;
  748. GL_TEXTURE_1D_BINDING_EXT = $8068;
  749. GL_TEXTURE_2D_BINDING_EXT = $8069;
  750. // GL_EXT_texture3D
  751. GL_PACK_SKIP_IMAGES_EXT = $806B;
  752. GL_PACK_IMAGE_HEIGHT_EXT = $806C;
  753. GL_UNPACK_SKIP_IMAGES_EXT = $806D;
  754. GL_UNPACK_IMAGE_HEIGHT_EXT = $806E;
  755. GL_TEXTURE_3D_EXT = $806F;
  756. GL_PROXY_TEXTURE_3D_EXT = $8070;
  757. GL_TEXTURE_DEPTH_EXT = $8071;
  758. GL_TEXTURE_WRAP_R_EXT = $8072;
  759. GL_MAX_3D_TEXTURE_SIZE_EXT = $8073;
  760. GL_TEXTURE_3D_BINDING_EXT = $806A;
  761. // GL_EXT_paletted_texture
  762. GL_TABLE_TOO_LARGE_EXT = $8031;
  763. GL_COLOR_TABLE_FORMAT_EXT = $80D8;
  764. GL_COLOR_TABLE_WIDTH_EXT = $80D9;
  765. GL_COLOR_TABLE_RED_SIZE_EXT = $80DA;
  766. GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB;
  767. GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC;
  768. GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD;
  769. GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE;
  770. GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF;
  771. GL_TEXTURE_INDEX_SIZE_EXT = $80ED;
  772. GL_COLOR_INDEX1_EXT = $80E2;
  773. GL_COLOR_INDEX2_EXT = $80E3;
  774. GL_COLOR_INDEX4_EXT = $80E4;
  775. GL_COLOR_INDEX8_EXT = $80E5;
  776. GL_COLOR_INDEX12_EXT = $80E6;
  777. GL_COLOR_INDEX16_EXT = $80E7;
  778. // GL_EXT_shared_texture_palette
  779. GL_SHARED_TEXTURE_PALETTE_EXT = $81FB;
  780. // GL_EXT_point_parameters
  781. GL_POINT_SIZE_MIN_EXT = $8126;
  782. GL_POINT_SIZE_MAX_EXT = $8127;
  783. GL_POINT_FADE_THRESHOLD_SIZE_EXT = $8128;
  784. GL_DISTANCE_ATTENUATION_EXT = $8129;
  785. // GL_EXT_rescale_normal
  786. GL_RESCALE_NORMAL_EXT = $803A;
  787. // GL_EXT_abgr
  788. GL_ABGR_EXT = $8000;
  789. const
  790. // GL_EXT_multitexture
  791. GL_SELECTED_TEXTURE_EXT = $83C0;
  792. GL_SELECTED_TEXTURE_COORD_SET_EXT = $83C1;
  793. GL_SELECTED_TEXTURE_TRANSFORM_EXT = $83C2;
  794. GL_MAX_TEXTURES_EXT = $83C3;
  795. GL_MAX_TEXTURE_COORD_SETS_EXT = $83C4;
  796. GL_TEXTURE_ENV_COORD_SET_EXT = $83C5;
  797. GL_TEXTURE0_EXT = $83C6;
  798. GL_TEXTURE1_EXT = $83C7;
  799. GL_TEXTURE2_EXT = $83C8;
  800. GL_TEXTURE3_EXT = $83C9;
  801. {$ENDIF EXTENSIONS}
  802. {$IFDEF SGI_EXTENSIONS}
  803. const
  804. // GL_SGIS_multitexture
  805. GL_SELECTED_TEXTURE_SGIS = $835C;
  806. GL_SELECTED_TEXTURE_COORD_SET_SGIS = $835D;
  807. GL_MAX_TEXTURES_SGIS = $835E;
  808. GL_TEXTURE0_SGIS = $835F;
  809. GL_TEXTURE1_SGIS = $8360;
  810. GL_TEXTURE2_SGIS = $8361;
  811. GL_TEXTURE3_SGIS = $8362;
  812. GL_TEXTURE_COORD_SET_SOURCE_SGIS = $8363;
  813. const
  814. // GL_SGIS_texture_edge_clamp
  815. GL_CLAMP_TO_EDGE_SGIS = $812F;
  816. {$ENDIF SGI_EXTENSIONS}
  817. {$IFDEF MESA}
  818. {$ENDIF MESA}
  819. // -------------------------------------------------------
  820. // GL procedures and functions
  821. // -------------------------------------------------------
  822. {$IFDEF GL1_0}
  823. var
  824. // Miscellaneous
  825. glClearIndex: procedure(c: Single); cdecl;
  826. glClearColor: procedure(red, green, blue, alpha: GLclampf); cdecl;
  827. glClear: procedure(mask: GLbitfield); cdecl;
  828. glIndexMask: procedure(mask: LongWord); cdecl;
  829. glColorMask: procedure(red, green, blue, alpha: GLboolean); cdecl;
  830. glAlphaFunc: procedure(func: GLenum; ref: GLclampf); cdecl;
  831. glBlendFunc: procedure(sfactor, dfactor: GLenum); cdecl;
  832. glLogicOp: procedure(opcode: GLenum); cdecl;
  833. glCullFace: procedure(mode: GLenum); cdecl;
  834. glFrontFace: procedure(mode: GLenum); cdecl;
  835. glPointSize: procedure(size: Single); cdecl;
  836. glLineWidth: procedure(width: Single); cdecl;
  837. glLineStipple: procedure(factor: LongInt; pattern: Word); cdecl;
  838. glPolygonMode: procedure(face, mode: GLenum); cdecl;
  839. glPolygonOffset: procedure(factor, units: Single); cdecl;
  840. glPolygonStipple: procedure(var mask: Byte); cdecl;
  841. glGetPolygonStipple: procedure(var mask: Byte); cdecl;
  842. glEdgeFlag: procedure(flag: GLBoolean); cdecl;
  843. glEdgeFlagv: procedure(var flag: GLBoolean); cdecl;
  844. glScissor: procedure(x, y, width, height: LongInt); cdecl;
  845. glClipPlane: procedure(plane: GLenum; var equation: Double); cdecl;
  846. glGetClipPlane: procedure(plane: GLenum; var equation: Double); cdecl;
  847. glDrawBuffer: procedure(mode: GLenum); cdecl;
  848. glReadBuffer: procedure(mode: GLenum); cdecl;
  849. glEnable: procedure(cap: LongInt); cdecl;
  850. glDisable: procedure(cap: LongInt); cdecl;
  851. glIsEnabled: function(cap: GLenum): GLBoolean; cdecl;
  852. glGetBooleanv: procedure(pname: GLenum; params : PGLBoolean); cdecl;
  853. glGetDoublev: procedure(pname: GLenum; params : PDouble); cdecl;
  854. glGetFloatv: procedure(pname: GLenum; params : PSingle); cdecl;
  855. glGetIntegerv: procedure(pname: GLenum; params : PLongInt); cdecl;
  856. glPushAttrib: procedure(mask: GLbitfield); cdecl;
  857. glPopAttrib: procedure; cdecl;
  858. glRenderMode: function(mode: GLenum): LongInt; cdecl;
  859. glGetError: function: GLenum; cdecl;
  860. glGetString: function(name: GLenum): PChar; cdecl;
  861. glFinish: procedure; cdecl;
  862. glFlush: procedure; cdecl;
  863. glHint: procedure(target, mode: GLenum); cdecl;
  864. // Depth Buffer
  865. glClearDepth: procedure(depth: GLclampd); cdecl;
  866. glDepthFunc: procedure(func: LongInt); cdecl;
  867. glDepthMask: procedure(flag: GLBoolean); cdecl;
  868. glDepthRange: procedure(near_val, far_val: GLclampd); cdecl;
  869. // Accumulation Buffer
  870. glClearAccum: procedure(red, green, blue, alpha: Single); cdecl;
  871. glAccum: procedure(op: GLenum; value: Single); cdecl;
  872. // Tranformation
  873. glMatrixMode: procedure(mode: GLenum); cdecl;
  874. glOrtho: procedure(left, right, bottom, top, near_val, far_val: Double); cdecl;
  875. glFrustum: procedure(left, right, bottom, top, near_val, far_val: Double); cdecl;
  876. glViewport: procedure(x, y, width, height: LongInt); cdecl;
  877. glPushMatrix: procedure; cdecl;
  878. glPopMatrix: procedure; cdecl;
  879. glLoadIdentity: procedure; cdecl;
  880. glLoadMatrixd: procedure(var m: Double); cdecl;
  881. glLoadMatrixf: procedure(var m: PSingle); cdecl;
  882. glMultMatrixd: procedure(var m: Double); cdecl;
  883. glMultMatrixf: procedure(var m: Single); cdecl;
  884. glRotated: procedure(angle, x, y, z: Double); cdecl;
  885. glRotatef: procedure(angle, x, y, z: Single); cdecl;
  886. glScaled: procedure(x, y, z: Double); cdecl;
  887. glScalef: procedure(x, y, z: Single); cdecl;
  888. glTranslated: procedure(x, y, z: Double); cdecl;
  889. glTranslatef: procedure(x, y, z: Single); cdecl;
  890. // Display Lists
  891. glIsList: function(list: LongWord): GLBoolean; cdecl;
  892. glDeleteLists: procedure(list: LongWord; range: LongInt); cdecl;
  893. glGenLists: function(range: LongInt): LongWord; cdecl;
  894. glNewList: procedure(list: LongWord; mode: GLenum); cdecl;
  895. glEndList: procedure; cdecl;
  896. glCallList: procedure(list: LongWord); cdecl;
  897. glCallLists: procedure(n: LongInt; AType: GLenum; var lists); cdecl;
  898. glListBase: procedure(base: LongWord); cdecl;
  899. // Drawing Functions
  900. glBegin: procedure(mode: GLenum); cdecl;
  901. glEnd: procedure; cdecl;
  902. glVertex2d: procedure(x, y: Double); cdecl;
  903. glVertex2f: procedure(x, y: Single); cdecl;
  904. glVertex2i: procedure(x, y: LongInt); cdecl;
  905. glVertex2s: procedure(x, y: SmallInt); cdecl;
  906. glVertex3d: procedure(x, y, z: Double); cdecl;
  907. glVertex3f: procedure(x, y, z: Single); cdecl;
  908. glVertex3i: procedure(x, y, z: LongInt); cdecl;
  909. glVertex3s: procedure(x, y, z: SmallInt); cdecl;
  910. glVertex4d: procedure(x, y, z, w: Double); cdecl;
  911. glVertex4f: procedure(x, y, z, w: Single); cdecl;
  912. glVertex4i: procedure(x, y, z, w: LongInt); cdecl;
  913. glVertex4s: procedure(x, y, z, w: SmallInt); cdecl;
  914. glVertex2dv: procedure(var v: Double); cdecl;
  915. glVertex2fv: procedure(var v: Single); cdecl;
  916. glVertex2iv: procedure(var v: LongInt); cdecl;
  917. glVertex2sv: procedure(var v: SmallInt); cdecl;
  918. glVertex3dv: procedure(var v: Double); cdecl;
  919. glVertex3fv: procedure(var v: Single); cdecl;
  920. glVertex3iv: procedure(var v: LongInt); cdecl;
  921. glVertex3sv: procedure(var v: SmallInt); cdecl;
  922. glVertex4dv: procedure(var v: Double); cdecl;
  923. glVertex4fv: procedure(var v: Single); cdecl;
  924. glVertex4iv: procedure(var v: LongInt); cdecl;
  925. glVertex4sv: procedure(var v: SmallInt); cdecl;
  926. glNormal3b: procedure(nx, ny, nz: Byte); cdecl;
  927. glNormal3d: procedure(nx, ny, nz: Double); cdecl;
  928. glNormal3f: procedure(nx, ny, nz: Single); cdecl;
  929. glNormal3i: procedure(nx, ny, nz: LongInt); cdecl;
  930. glNormal3s: procedure(nx, ny, nz: SmallInt); cdecl;
  931. glNormal3bv: procedure(var v: ShortInt); cdecl;
  932. glNormal3dv: procedure(var v: Double); cdecl;
  933. glNormal3fv: procedure(var v: Single); cdecl;
  934. glNormal3iv: procedure(var v: LongInt); cdecl;
  935. glNormal3sv: procedure(var v: SmallInt); cdecl;
  936. glIndexd: procedure(c: Double); cdecl;
  937. glIndexf: procedure(c: Single); cdecl;
  938. glIndexi: procedure(c: LongInt); cdecl;
  939. glIndexs: procedure(c: SmallInt); cdecl;
  940. glIndexdv: procedure(var c: Double); cdecl;
  941. glIndexfv: procedure(var c: Single); cdecl;
  942. glIndexiv: procedure(var c: LongInt); cdecl;
  943. glIndexsv: procedure(var c: SmallInt); cdecl;
  944. glColor3b: procedure (red, green, blue: ShortInt); cdecl;
  945. glColor3d: procedure (red, green, blue: Double); cdecl;
  946. glColor3f: procedure (red, green, blue: Single); cdecl;
  947. glColor3i: procedure (red, green, blue: LongInt); cdecl;
  948. glColor3s: procedure (red, green, blue: SmallInt); cdecl;
  949. glColor3ub: procedure(red, green, blue: Byte); cdecl;
  950. glColor3ui: procedure(red, green, blue: LongWord); cdecl;
  951. glColor3us: procedure(red, green, blue: Word); cdecl;
  952. glColor4b: procedure (red, green, blue, alpha: ShortInt); cdecl;
  953. glColor4d: procedure (red, green, blue, alpha: Double); cdecl;
  954. glColor4f: procedure (red, green, blue, alpha: Single); cdecl;
  955. glColor4i: procedure (red, green, blue, alpha: LongInt); cdecl;
  956. glColor4s: procedure (red, green, blue, alpha: SmallInt); cdecl;
  957. glColor4ub: procedure(red, green, blue, alpha: Byte); cdecl;
  958. glColor4ui: procedure(red, green, blue, alpha: LongWord); cdecl;
  959. glColor4us: procedure(red, green, blue, alpha: Word); cdecl;
  960. glColor3bv: procedure (var v: ShortInt); cdecl;
  961. glColor3dv: procedure (var v: Double); cdecl;
  962. glColor3fv: procedure (var v: Single); cdecl;
  963. glColor3iv: procedure (var v: LongInt); cdecl;
  964. glColor3sv: procedure (var v: SmallInt); cdecl;
  965. glColor3ubv: procedure(var v: Byte); cdecl;
  966. glColor3uiv: procedure(var v: LongWord); cdecl;
  967. glColor3usv: procedure(var v: Word); cdecl;
  968. glColor4bv: procedure (var v: ShortInt); cdecl;
  969. glColor4dv: procedure (var v: Double); cdecl;
  970. glColor4fv: procedure (var v: Single); cdecl;
  971. glColor4iv: procedure (var v: LongInt); cdecl;
  972. glColor4sv: procedure (var v: SmallInt); cdecl;
  973. glColor4ubv: procedure(var v: Byte); cdecl;
  974. glColor4uiv: procedure(var v: LongWord); cdecl;
  975. glColor4usv: procedure(var v: Word); cdecl;
  976. glTexCoord1d: procedure(s: Double); cdecl;
  977. glTexCoord1f: procedure(s: Single); cdecl;
  978. glTexCoord1i: procedure(s: LongInt); cdecl;
  979. glTexCoord1s: procedure(s: SmallInt); cdecl;
  980. glTexCoord2d: procedure(s, t: Double); cdecl;
  981. glTexCoord2f: procedure(s, t: Single); cdecl;
  982. glTexCoord2i: procedure(s, t: LongInt); cdecl;
  983. glTexCoord2s: procedure(s, t: SmallInt); cdecl;
  984. glTexCoord3d: procedure(s, t, r: Double); cdecl;
  985. glTexCoord3f: procedure(s, t, r: Single); cdecl;
  986. glTexCoord3i: procedure(s, t, r: LongInt); cdecl;
  987. glTexCoord3s: procedure(s, t, r: SmallInt); cdecl;
  988. glTexCoord4d: procedure(s, t, r, q: Double); cdecl;
  989. glTexCoord4f: procedure(s, t, r, q: Single); cdecl;
  990. glTexCoord4i: procedure(s, t, r, q: LongInt); cdecl;
  991. glTexCoord4s: procedure(s, t, r, q: SmallInt); cdecl;
  992. glTexCoord1dv: procedure(var v: Double); cdecl;
  993. glTexCoord1fv: procedure(var v: Single); cdecl;
  994. glTexCoord1iv: procedure(var v: LongInt); cdecl;
  995. glTexCoord1sv: procedure(var v: SmallInt); cdecl;
  996. glTexCoord2dv: procedure(var v: Double); cdecl;
  997. glTexCoord2fv: procedure(var v: Single); cdecl;
  998. glTexCoord2iv: procedure(var v: LongInt); cdecl;
  999. glTexCoord2sv: procedure(var v: SmallInt); cdecl;
  1000. glTexCoord3dv: procedure(var v: Double); cdecl;
  1001. glTexCoord3fv: procedure(var v: Single); cdecl;
  1002. glTexCoord3iv: procedure(var v: LongInt); cdecl;
  1003. glTexCoord3sv: procedure(var v: SmallInt); cdecl;
  1004. glTexCoord4dv: procedure(var v: Double); cdecl;
  1005. glTexCoord4fv: procedure(var v: Single); cdecl;
  1006. glTexCoord4iv: procedure(var v: LongInt); cdecl;
  1007. glTexCoord4sv: procedure(var v: SmallInt); cdecl;
  1008. glRasterPos2d: procedure(x, y: Double); cdecl;
  1009. glRasterPos2f: procedure(x, y: Single); cdecl;
  1010. glRasterPos2i: procedure(x, y: LongInt); cdecl;
  1011. glRasterPos2s: procedure(x, y: SmallInt); cdecl;
  1012. glRasterPos3d: procedure(x, y, z: Double); cdecl;
  1013. glRasterPos3f: procedure(x, y, z: Single); cdecl;
  1014. glRasterPos3i: procedure(x, y, z: LongInt); cdecl;
  1015. glRasterPos3s: procedure(x, y, z: SmallInt); cdecl;
  1016. glRasterPos4d: procedure(x, y, z, w: Double); cdecl;
  1017. glRasterPos4f: procedure(x, y, z, w: Single); cdecl;
  1018. glRasterPos4i: procedure(x, y, z, w: LongInt); cdecl;
  1019. glRasterPos4s: procedure(x, y, z, w: SmallInt); cdecl;
  1020. glRasterPos2dv: procedure(var v: Double); cdecl;
  1021. glRasterPos2fv: procedure(var v: Single); cdecl;
  1022. glRasterPos2iv: procedure(var v: LongInt); cdecl;
  1023. glRasterPos2sv: procedure(var v: SmallInt); cdecl;
  1024. glRasterPos3dv: procedure(var v: Double); cdecl;
  1025. glRasterPos3fv: procedure(var v: Single); cdecl;
  1026. glRasterPos3iv: procedure(var v: LongInt); cdecl;
  1027. glRasterPos3sv: procedure(var v: SmallInt); cdecl;
  1028. glRasterPos4dv: procedure(var v: Double); cdecl;
  1029. glRasterPos4fv: procedure(var v: Single); cdecl;
  1030. glRasterPos4iv: procedure(var v: LongInt); cdecl;
  1031. glRasterPos4sv: procedure(var v: SmallInt); cdecl;
  1032. glRectd: procedure(x1, y1, x2, y2: Double); cdecl;
  1033. glRectf: procedure(x1, y1, x2, y2: Single); cdecl;
  1034. glRecti: procedure(x1, y1, x2, y2: LongInt); cdecl;
  1035. glRects: procedure(x1, y1, x2, y2: SmallInt); cdecl;
  1036. glRectdv: procedure(var v1, v2: Double); cdecl;
  1037. glRectfv: procedure(var v1, v2: Single); cdecl;
  1038. glRectiv: procedure(var v1, v2: LongInt); cdecl;
  1039. glRectsv: procedure(var v1, v2: SmallInt); cdecl;
  1040. // Lighting
  1041. glShadeModel: procedure(mode: GLenum); cdecl;
  1042. glLightf: procedure(light, pname: GLenum; param: Single); cdecl;
  1043. glLighti: procedure(light, pname: GLenum; param: LongInt); cdecl;
  1044. glLightfv: procedure(light, pname: GLenum; params : PSingle); cdecl;
  1045. glLightiv: procedure(light, pname: GLenum; params : PLongInt); cdecl;
  1046. glGetLightfv: procedure(light, pname: GLenum; params : PSingle); cdecl;
  1047. glGetLightiv: procedure(light, pname: GLenum; params : PLongInt); cdecl;
  1048. glLightModelf: procedure(pname: GLenum; param: Single); cdecl;
  1049. glLightModeli: procedure(pname: GLenum; param: LongInt); cdecl;
  1050. glLightModelfv: procedure(pname: GLenum; params : PSingle); cdecl;
  1051. glLightModeliv: procedure(pname: GLenum; params : PLongInt); cdecl;
  1052. glMaterialf: procedure(face, pname: GLenum; param: Single); cdecl;
  1053. glMateriali: procedure(face, pname: GLenum; param: LongInt); cdecl;
  1054. glMaterialfv: procedure(face, pname: GLenum; params : PSingle); cdecl;
  1055. glMaterialiv: procedure(face, pname: GLenum; params : PLongInt); cdecl;
  1056. glGetMaterialfv: procedure(face, pname: GLenum; params : PSingle); cdecl;
  1057. glGetMaterialiv: procedure(face, pname: GLenum; params : PLongInt); cdecl;
  1058. glColorMaterial: procedure(face, mode: GLenum); cdecl;
  1059. // Raster Functions
  1060. glPixelZoom: procedure(xfactor, yfactor: Single); cdecl;
  1061. glPixelStoref: procedure(pname: GLenum; param: Single); cdecl;
  1062. glPixelStorei: procedure(pname: GLenum; param: LongInt); cdecl;
  1063. glPixelTransferf: procedure(pname: GLenum; param: Single); cdecl;
  1064. glPixelTransferi: procedure(pname: GLenum; param: LongInt); cdecl;
  1065. glPixelMapfv: procedure(map: GLenum; mapsize: LongInt; var values: Single); cdecl;
  1066. glPixelMapuiv: procedure(map: GLenum; mapsize: LongInt; var values: LongWord); cdecl;
  1067. glPixelMapusv: procedure(map: GLenum; mapsize: LongInt; var values: Word); cdecl;
  1068. glGetPixelMapfv: procedure(map: GLenum; var values: Single); cdecl;
  1069. glGetPixelMapuiv: procedure(map: GLenum; var values: LongWord); cdecl;
  1070. glGetPixelMapusv: procedure(map: GLenum; var values: Word); cdecl;
  1071. glBitmap: procedure(width, height: LongInt; xorig, yorig, xmove, ymove: Single; var bitmap); cdecl;
  1072. glReadPixels: procedure(x, y, width, height: LongInt; format, AType: GLenum; var pixels); cdecl;
  1073. glDrawPixels: procedure(width, height: LongInt; format, AType: GLenum; var pixels); cdecl;
  1074. glCopyPixels: procedure(x, y, width, height: LongInt; AType: GLenum); cdecl;
  1075. // Stenciling
  1076. glStencilFunc: procedure(func: GLenum; ref: LongInt; mask: LongWord); cdecl;
  1077. glStencilMask: procedure(mask: LongWord); cdecl;
  1078. glStencilOp: procedure(fail, zfail, zpass: GLenum); cdecl;
  1079. glClearStencil: procedure(s: LongInt); cdecl;
  1080. // Texture Mapping
  1081. glTexGend: procedure(cord, pname: GLenum; param: Double); cdecl;
  1082. glTexGenf: procedure(cord, pname: GLenum; param: Single); cdecl;
  1083. glTexGeni: procedure(cord, pname: GLenum; param: LongInt); cdecl;
  1084. glTexGendv: procedure(cord, pname: GLenum; params : PDouble); cdecl;
  1085. glTexGenfv: procedure(cord, pname: GLenum; params : PSingle); cdecl;
  1086. glTexGeniv: procedure(cord, pname: GLenum; params : PLongInt); cdecl;
  1087. glGetTexGendv: procedure(cord, pname: GLenum; params : PDouble); cdecl;
  1088. glGetTexGenfv: procedure(cord, pname: GLenum; params : PSingle); cdecl;
  1089. glGetTexGeniv: procedure(cord, pname: GLenum; params : PLongInt); cdecl;
  1090. glTexEnvf: procedure(target, pname: GLenum; param: Single); cdecl;
  1091. glTexEnvi: procedure(target, pname: GLenum; param: LongInt); cdecl;
  1092. glTexEnvfv: procedure(target, pname: GLenum; params : PSingle); cdecl;
  1093. glTexEnviv: procedure(target, pname: GLenum; params : PLongInt); cdecl;
  1094. glGetTexEnvfv: procedure(target, pname: GLenum; params : PSingle); cdecl;
  1095. glGetTexEnviv: procedure(target, pname: GLenum; params : PLongInt); cdecl;
  1096. glTexParameterf: procedure(target, pname: GLenum; param: Single); cdecl;
  1097. glTexParameteri: procedure(target, pname: GLenum; param: LongInt); cdecl;
  1098. glTexParameterfv: procedure(target, pname: GLenum; params : PSingle); cdecl;
  1099. glTexParameteriv: procedure(target, pname: GLenum; params : PLongInt); cdecl;
  1100. glGetTexParameterfv: procedure(target, pname: GLenum; params : PSingle); cdecl;
  1101. glGetTexParameteriv: procedure(target, pname: GLenum; params : PLongInt); cdecl;
  1102. glGetTexLevelParameterfv: procedure(target: GLenum; level: LongInt; pname: GLenum; params : PSingle); cdecl;
  1103. glGetTexLevelParameteriv: procedure(target: GLenum; level: LongInt; pname: GLenum; params : PLongInt); cdecl;
  1104. glTexImage1D: procedure(target: GLenum; level, internalFormat, width, border: LongInt; format, AType: GLenum; var pixels); cdecl;
  1105. glTexImage2D: procedure(target: GLenum; level, internalFormat, width, height, border: LongInt; format, AType: GLenum; var pixels); cdecl;
  1106. glGetTexImage: procedure(target: GLenum; level: LongInt; format, AType: GLenum; var pixels); cdecl;
  1107. // Evaluators
  1108. glMap1d: procedure(target: GLenum; u1, u2: Double; stride, order: LongInt; var points: Double); cdecl;
  1109. glMap1f: procedure(target: GLenum; u1, u2: Single; stride, order: LongInt; var points: Single); cdecl;
  1110. glMap2d: procedure(target: GLenum; u1, u2: Double; ustride, uorder: LongInt; v1, v2: Double; vstride, vorder: LongInt; var points: Double); cdecl;
  1111. glMap2f: procedure(target: GLenum; u1, u2: Single; ustride, uorder: LongInt; v1, v2: Single; vstride, vorder: LongInt; var points: Single); cdecl;
  1112. glGetMapdv: procedure(target, query: GLenum; var v: Double); cdecl;
  1113. glGetMapfv: procedure(target, query: GLenum; var v: Single); cdecl;
  1114. glGetMapiv: procedure(target, query: GLenum; var v: LongInt); cdecl;
  1115. glEvalCoord1d: procedure(u: Double); cdecl;
  1116. glEvalCoord1f: procedure(u: Single); cdecl;
  1117. glEvalCoord1dv: procedure(var u: Double); cdecl;
  1118. glEvalCoord1fv: procedure(var u: Single); cdecl;
  1119. glEvalCoord2d: procedure(u, v: Double); cdecl;
  1120. glEvalCoord2f: procedure(u, v: Single); cdecl;
  1121. glEvalCoord2dv: procedure(var u, v: Double); cdecl;
  1122. glEvalCoord2fv: procedure(var u, v: Single); cdecl;
  1123. glMapGrid1d: procedure(un: LongInt; u1, u2: Double); cdecl;
  1124. glMapGrid1f: procedure(un: LongInt; u1, u2: Single); cdecl;
  1125. glMapGrid2d: procedure(un: LongInt; u1, u2: Double; vn: LongInt; v1, v2: Double); cdecl;
  1126. glMapGrid2f: procedure(un: LongInt; u1, u2: Single; vn: LongInt; v1, v2: Single); cdecl;
  1127. glEvalPoint1: procedure(i: LongInt); cdecl;
  1128. glEvalPoint2: procedure(i, j: LongInt); cdecl;
  1129. glEvalMesh1: procedure(mode: GLenum; i1, i2: LongInt); cdecl;
  1130. glEvalMesh2: procedure(mode: GLenum; i1, i2, j1, j2: LongInt); cdecl;
  1131. // Fog
  1132. glFogf: procedure(pname: GLenum; param: Single); cdecl;
  1133. glFogi: procedure(pname: GLenum; param: LongInt); cdecl;
  1134. glFogfv: procedure(pname: GLenum; params : PSingle); cdecl;
  1135. glFogiv: procedure(pname: GLenum; params : PLongInt); cdecl;
  1136. // Selection and Feedback
  1137. glFeedbackBuffer: procedure(size: LongInt; AType: GLenum; var buffer: Single); cdecl;
  1138. glPassThrough: procedure(token: Single); cdecl;
  1139. glSelectBuffer: procedure(size: LongInt; var buffer: LongWord); cdecl;
  1140. glInitNames: procedure; cdecl;
  1141. glLoadName: procedure(name: LongWord); cdecl;
  1142. glPushName: procedure(name: LongWord); cdecl;
  1143. glPopName: procedure; cdecl;
  1144. {$ENDIF GL1_0}
  1145. {$IFDEF GL1_1}
  1146. var
  1147. // Miscellaneous
  1148. glEnableClientState: procedure(cap: GLenum); cdecl;
  1149. glDisableClientState: procedure(cap: GLenum); cdecl;
  1150. glPushClientAttrib: procedure(mask: GLbitfield); cdecl;
  1151. glPopClientAttrib: procedure; cdecl;
  1152. // Drawing Functions
  1153. glIndexub: procedure(c: Byte); cdecl;
  1154. glIndexubv: procedure(var c: Byte); cdecl;
  1155. // Vertex Arrays
  1156. glVertexPointer: procedure(size: LongInt; AType: GLenum; stride: LongInt; var ptr); cdecl;
  1157. glNormalPointer: procedure(AType: GLenum; stride: LongInt; var ptr); cdecl;
  1158. glColorPointer: procedure(size: LongInt; AType: GLenum; stride: LongInt; var ptr); cdecl;
  1159. glIndexPointer: procedure(AType: GLenum; stride: LongInt; var ptr); cdecl;
  1160. glTexCoordPointer: procedure(size: LongInt; AType: GLenum; stride: LongInt; var ptr); cdecl;
  1161. glEdgeFlagPointer: procedure(stride: LongInt; var ptr); cdecl;
  1162. glGetPointerv: procedure(pname: GLenum; var params: Pointer); cdecl;
  1163. glArrayElement: procedure(i: LongInt); cdecl;
  1164. glDrawArrays: procedure(mode: GLenum; first, count: LongInt); cdecl;
  1165. glDrawElements: procedure(mode: GLenum; count: Integer; AType: GLenum; var indices); cdecl;
  1166. glInterleavedArrays: procedure(format: GLenum; stride: LongInt; var pointer); cdecl;
  1167. // Texture Mapping
  1168. glGenTextures: procedure(n: LongInt; var textures: LongWord); cdecl;
  1169. glDeleteTextures: procedure(n: LongInt; var textures: LongWord); cdecl;
  1170. glBindTexture: procedure(target: GLenum; texture: LongWord); cdecl;
  1171. glPrioritizeTextures: procedure(n: LongInt; var textures: LongWord; var priorities: GLclampf); cdecl;
  1172. glAreTexturesResident: function(n: LongInt; var textures: LongWord; var residences: Boolean): Boolean; cdecl;
  1173. glIsTexture: function(texture: LongWord): Boolean; cdecl;
  1174. glTexSubImage1D: procedure(target: GLenum; level, xoffset, width: LongInt; format, AType: GLenum; var pixels); cdecl;
  1175. glTexSubImage2D: procedure(target: GLenum; level, xoffset, yoffset, width, height: LongInt; format, AType: GLenum; var pixels); cdecl;
  1176. glCopyTexImage1D: procedure(target: GLenum; level: LongInt; format: GLenum; x, y, width, border: LongInt); cdecl;
  1177. glCopyTexImage2D: procedure(target: GLenum; level: LongInt; format: GLenum; x, y, width, height, border: LongInt); cdecl;
  1178. glCopyTexSubImage1D: procedure(target: GLenum; level, xoffset, x, y, width: LongInt); cdecl;
  1179. glCopyTexSubImage2D: procedure(target: GLenum; level, xoffset, yoffset, x, y, width, height: LongInt); cdecl;
  1180. {$ENDIF GL1_1}
  1181. {$IFDEF GL1_2}
  1182. var
  1183. glDrawRangeElements: procedure(mode: GLenum; AStart, AEnd: LongWord; count: LongInt; AType: GLenum; var indices); cdecl;
  1184. glTexImage3D: procedure(target: GLenum; level: LongInt; internalFormat: GLenum; width, height, depth, border: LongInt; format, AType: GLEnum; var pixels); cdecl;
  1185. glTexSubImage3D: procedure(target: GLenum; level: LongInt; xoffset, yoffset, zoffset, width, height, depth: LongInt; format, AType: GLEnum; var pixels); cdecl;
  1186. glCopyTexSubImage3D: procedure(target: GLenum; level: LongInt; xoffset, yoffset, zoffset, x, y, width, height: LongInt); cdecl;
  1187. {$ENDIF GL1_2}
  1188. // -------------------------------------------------------
  1189. // GL Extensions
  1190. // -------------------------------------------------------
  1191. {$IFDEF EXTENSIONS}
  1192. var
  1193. // === 1.0 Extensions ===
  1194. // GL_EXT_blend_minmax
  1195. glBlendEquationEXT: procedure(mode: GLenum); cdecl;
  1196. // GL_EXT_blend_color
  1197. glBlendColorEXT: procedure(red, green, blue, alpha: GLclampf); cdecl;
  1198. // GL_EXT_polygon_offset
  1199. glPolygonOffsetEXT: procedure(factor, bias: Single); cdecl;
  1200. // GL_EXT_vertex_array
  1201. glVertexPointerEXT: procedure(size: LongInt; AType: GLenum; stride, count: LongInt; var ptr); cdecl;
  1202. glNormalPointerEXT: procedure(AType: GLenum; stride, count: LongInt; var ptr); cdecl;
  1203. glColorPointerEXT: procedure(size: LongInt; AType: GLenum; stride, count: LongInt; var ptr); cdecl;
  1204. glIndexPointerEXT: procedure(AType: GLenum; stride, count: LongInt; var ptr); cdecl;
  1205. glTexCoordPointerEXT: procedure(size: LongInt; AType: GLenum; stride, count: LongInt; var ptr); cdecl;
  1206. glEdgeFlagPointerEXT: procedure(stride, count: LongInt; var ptr: Boolean); cdecl;
  1207. glGetPointervEXT: procedure(pname: GLenum; var params: Pointer); cdecl;
  1208. glArrayElementEXT: procedure(i: LongInt); cdecl;
  1209. glDrawArraysEXT: procedure(mode: GLEnum; first, count: LongInt); cdecl;
  1210. // GL_EXT_texture_object
  1211. glGenTexturesEXT: procedure(n: LongInt; var textures: LongWord); cdecl;
  1212. glDeleteTexturesEXT: procedure(n: LongInt; var textures: LongWord); cdecl;
  1213. glBindTextureEXT: procedure(target: GLenum; texture: LongWord); cdecl;
  1214. glPrioritizeTexturesEXT: procedure(n: LongInt; var textures: LongWord; var priorities: GLClampf); cdecl;
  1215. glAreTexturesResidentEXT: function(n: LongInt; var textures: LongWord; var residences: Boolean): Boolean; cdecl;
  1216. glIsTextureEXT: function(texture: LongWord): Boolean; cdecl;
  1217. // GL_EXT_texture3D
  1218. glTexImage3DEXT: procedure(target: GLenum; level: LongInt; internalFormat: GLenum; width, height, depth, border: LongInt; format, AType: GLenum; var pixels); cdecl;
  1219. glTexSubImage3DEXT: procedure(target: GLenum; level, xoffset, yoffset, zoffset, width, height, depth: LongInt; format, AType: GLenum; var pixels); cdecl;
  1220. glCopyTexSubImage3DEXT: procedure(target: GLenum; level, xoffset, yoffset, zoffset, x, y, width, height: LongInt); cdecl;
  1221. // GL_EXT_color_table
  1222. glColorTableEXT: procedure(target, internalformat: GLenum; width: LongInt; format, AType: GLenum; var table); cdecl;
  1223. glColorSubTableEXT: procedure(target: GLenum; start, count: LongInt; format, AType: GLEnum; var data); cdecl;
  1224. glGetColorTableEXT: procedure(target, format, AType: GLenum; var table); cdecl;
  1225. glGetColorTableParameterfvEXT: procedure(target, pname: GLenum; var params: Single); cdecl;
  1226. glGetColorTableParameterivEXT: procedure(target, pname: GLenum; var params: LongInt); cdecl;
  1227. {$ENDIF EXTENSIONS}
  1228. // library dependent extensions
  1229. {$IFDEF SGI_EXTENSIONS}
  1230. var
  1231. // GL_SGIS_multitexture
  1232. glMultiTexCoord1dSGIS: procedure(target: GLenum; s: Double); cdecl;
  1233. glMultiTexCoord1dvSGIS: procedure(target: GLenum; var v: Double); cdecl;
  1234. glMultiTexCoord1fSGIS: procedure(target: GLenum; s: Single); cdecl;
  1235. glMultiTexCoord1fvSGIS: procedure(target: GLenum; var v: Single); cdecl;
  1236. glMultiTexCoord1iSGIS: procedure(target: GLenum; s: LongInt); cdecl;
  1237. glMultiTexCoord1ivSGIS: procedure(target: GLenum; var v: LongInt); cdecl;
  1238. glMultiTexCoord1sSGIS: procedure(target: GLenum; s: ShortInt); cdecl;
  1239. glMultiTexCoord1svSGIS: procedure(target: GLenum; var v: ShortInt); cdecl;
  1240. glMultiTexCoord2dSGIS: procedure(target: GLenum; s, t: Double); cdecl;
  1241. glMultiTexCoord2dvSGIS: procedure(target: GLenum; var v: Double); cdecl;
  1242. glMultiTexCoord2fSGIS: procedure(target: GLenum; s, t: Single); cdecl;
  1243. glMultiTexCoord2fvSGIS: procedure(target: GLenum; var v: Single); cdecl;
  1244. glMultiTexCoord2iSGIS: procedure(target: GLenum; s, t: LongInt); cdecl;
  1245. glMultiTexCoord2ivSGIS: procedure(target: GLenum; var v: LongInt); cdecl;
  1246. glMultiTexCoord2sSGIS: procedure(target: GLenum; s, t: ShortInt); cdecl;
  1247. glMultiTexCoord2svSGIS: procedure(target: GLenum; var v: ShortInt); cdecl;
  1248. glMultiTexCoord3dSGIS: procedure(target: GLenum; s, t, r: Double); cdecl;
  1249. glMultiTexCoord3dvSGIS: procedure(target: GLenum; var v: Double); cdecl;
  1250. glMultiTexCoord3fSGIS: procedure(target: GLenum; s, t, r: Single); cdecl;
  1251. glMultiTexCoord3fvSGIS: procedure(target: GLenum; var v: Single); cdecl;
  1252. glMultiTexCoord3iSGIS: procedure(target: GLenum; s, t, r: LongInt); cdecl;
  1253. glMultiTexCoord3ivSGIS: procedure(target: GLenum; var v: LongInt); cdecl;
  1254. glMultiTexCoord3sSGIS: procedure(target: GLenum; s, t, r: ShortInt); cdecl;
  1255. glMultiTexCoord3svSGIS: procedure(target: GLenum; var v: ShortInt); cdecl;
  1256. glMultiTexCoord4dSGIS: procedure(target: GLenum; s, t, r, q: Double); cdecl;
  1257. glMultiTexCoord4dvSGIS: procedure(target: GLenum; var v: Double); cdecl;
  1258. glMultiTexCoord4fSGIS: procedure(target: GLenum; s, t, r, q: Single); cdecl;
  1259. glMultiTexCoord4fvSGIS: procedure(target: GLenum; var v: Single); cdecl;
  1260. glMultiTexCoord4iSGIS: procedure(target: GLenum; s, t, r, q: LongInt); cdecl;
  1261. glMultiTexCoord4ivSGIS: procedure(target: GLenum; var v: LongInt); cdecl;
  1262. glMultiTexCoord4sSGIS: procedure(target: GLenum; s, t, r, q: ShortInt); cdecl;
  1263. glMultiTexCoord4svSGIS: procedure(target: GLenum; var v: ShortInt); cdecl;
  1264. glMultiTexCoordPointerSGIS: procedure(target: GLenum; size: LongInt; AType: GLEnum; stride: LongInt; var APointer); cdecl;
  1265. glSelectTextureSGIS: procedure(target: GLenum); cdecl;
  1266. glSelectTextureCoordSetSGIS: procedure(target: GLenum); cdecl;
  1267. // GL_EXT_multitexture
  1268. glMultiTexCoord1dEXT: procedure(target: GLenum; s: Double); cdecl;
  1269. glMultiTexCoord1dvEXT: procedure(target: GLenum; var v: Double); cdecl;
  1270. glMultiTexCoord1fEXT: procedure(target: GLenum; s: Single); cdecl;
  1271. glMultiTexCoord1fvEXT: procedure(target: GLenum; var v: Single); cdecl;
  1272. glMultiTexCoord1iEXT: procedure(target: GLenum; s: LongInt); cdecl;
  1273. glMultiTexCoord1ivEXT: procedure(target: GLenum; var v: LongInt); cdecl;
  1274. glMultiTexCoord1sEXT: procedure(target: GLenum; s: ShortInt); cdecl;
  1275. glMultiTexCoord1svEXT: procedure(target: GLenum; var v: ShortInt); cdecl;
  1276. glMultiTexCoord2dEXT: procedure(target: GLenum; s, t: Double); cdecl;
  1277. glMultiTexCoord2dvEXT: procedure(target: GLenum; var v: Double); cdecl;
  1278. glMultiTexCoord2fEXT: procedure(target: GLenum; s, t: Single); cdecl;
  1279. glMultiTexCoord2fvEXT: procedure(target: GLenum; var v: Single); cdecl;
  1280. glMultiTexCoord2iEXT: procedure(target: GLenum; s, t: LongInt); cdecl;
  1281. glMultiTexCoord2ivEXT: procedure(target: GLenum; var v: LongInt); cdecl;
  1282. glMultiTexCoord2sEXT: procedure(target: GLenum; s, t: ShortInt); cdecl;
  1283. glMultiTexCoord2svEXT: procedure(target: GLenum; var v: ShortInt); cdecl;
  1284. glMultiTexCoord3dEXT: procedure(target: GLenum; s, t, r: Double); cdecl;
  1285. glMultiTexCoord3dvEXT: procedure(target: GLenum; var v: Double); cdecl;
  1286. glMultiTexCoord3fEXT: procedure(target: GLenum; s, t, r: Single); cdecl;
  1287. glMultiTexCoord3fvEXT: procedure(target: GLenum; var v: Single); cdecl;
  1288. glMultiTexCoord3iEXT: procedure(target: GLenum; s, t, r: LongInt); cdecl;
  1289. glMultiTexCoord3ivEXT: procedure(target: GLenum; var v: LongInt); cdecl;
  1290. glMultiTexCoord3sEXT: procedure(target: GLenum; s, t, r: ShortInt); cdecl;
  1291. glMultiTexCoord3svEXT: procedure(target: GLenum; var v: ShortInt); cdecl;
  1292. glMultiTexCoord4dEXT: procedure(target: GLenum; s, t, r, q: Double); cdecl;
  1293. glMultiTexCoord4dvEXT: procedure(target: GLenum; var v: Double); cdecl;
  1294. glMultiTexCoord4fEXT: procedure(target: GLenum; s, t, r, q: Single); cdecl;
  1295. glMultiTexCoord4fvEXT: procedure(target: GLenum; var v: Single); cdecl;
  1296. glMultiTexCoord4iEXT: procedure(target: GLenum; s, t, r, q: LongInt); cdecl;
  1297. glMultiTexCoord4ivEXT: procedure(target: GLenum; var v: LongInt); cdecl;
  1298. glMultiTexCoord4sEXT: procedure(target: GLenum; s, t, r, q: ShortInt); cdecl;
  1299. glMultiTexCoord4svEXT: procedure(target: GLenum; var v: ShortInt); cdecl;
  1300. glInterleavedTextureCoordSetsEXT: procedure(factor: LongInt); cdecl;
  1301. glSelectTextureEXT: procedure(target: GLenum); cdecl;
  1302. glSelectTextureCoordSetEXT: procedure(target: GLenum); cdecl;
  1303. glSelectTextureTransformEXT: procedure(target: GLenum); cdecl;
  1304. // GL_EXT_point_parameters
  1305. glPointParameterfEXT: procedure(pname: GLenum; param: Single); cdecl;
  1306. glPointParameterfvEXT: procedure(pname: GLenum; var params: Single); cdecl;
  1307. {$ENDIF SGI_EXTENSIONS}
  1308. {$ifdef MESA}
  1309. var
  1310. // GL_MESA_window_pos
  1311. glWindowPos2iMESA: procedure(x, y: LongInt); cdecl;
  1312. glWindowPos2sMESA: procedure(x, y: ShortInt); cdecl;
  1313. glWindowPos2fMESA: procedure(x, y: Single); cdecl;
  1314. glWindowPos2dMESA: procedure(x, y: Double); cdecl;
  1315. glWindowPos2ivMESA: procedure(var p: LongInt); cdecl;
  1316. glWindowPos2svMESA: procedure(var p: ShortInt); cdecl;
  1317. glWindowPos2fvMESA: procedure(var p: Single); cdecl;
  1318. glWindowPos2dvMESA: procedure(var p: Double); cdecl;
  1319. glWindowPos3iMESA: procedure(x, y, z: LongInt); cdecl;
  1320. glWindowPos3sMESA: procedure(x, y, z: ShortInt); cdecl;
  1321. glWindowPos3fMESA: procedure(x, y, z: Single); cdecl;
  1322. glWindowPos3dMESA: procedure(x, y, z: Double); cdecl;
  1323. glWindowPos3ivMESA: procedure(var p: LongInt); cdecl;
  1324. glWindowPos3svMESA: procedure(var p: ShortInt); cdecl;
  1325. glWindowPos3fvMESA: procedure(var p: Single); cdecl;
  1326. glWindowPos3dvMESA: procedure(var p: Double); cdecl;
  1327. glWindowPos4iMESA: procedure(x, y, z, w: LongInt); cdecl;
  1328. glWindowPos4sMESA: procedure(x, y, z, w: ShortInt); cdecl;
  1329. glWindowPos4fMESA: procedure(x, y, z, w: Single); cdecl;
  1330. glWindowPos4dMESA: procedure(x, y, z, w: Double); cdecl;
  1331. glWindowPos4ivMESA: procedure(var p: LongInt); cdecl;
  1332. glWindowPos4svMESA: procedure(var p: ShortInt); cdecl;
  1333. glWindowPos4fvMESA: procedure(var p: Single); cdecl;
  1334. glWindowPos4dvMESA: procedure(var p: Double); cdecl;
  1335. // GL_MESA_resize_buffers
  1336. glResizeBuffersMESA: procedure; cdecl;
  1337. {$endif MESA}
  1338. // =======================================================
  1339. // =======================================================
  1340. implementation
  1341. {$LINKLIB m}
  1342. function dlopen(AFile: PChar; mode: LongInt): Pointer; external 'dl';
  1343. function dlclose(handle: Pointer): LongInt; external 'dl';
  1344. function dlsym(handle: Pointer; name: PChar): Pointer; external 'dl';
  1345. function LoadLibrary(name: PChar): Pointer;
  1346. begin
  1347. Result := dlopen(name, $101 {RTLD_GLOBAL or RTLD_LAZY});
  1348. end;
  1349. function GetProc(handle: Pointer; name: PChar): Pointer;
  1350. begin
  1351. Result := dlsym(handle, name);
  1352. if (Result = nil) and GLDumpUnresolvedFunctions then
  1353. WriteLn('Unresolved: ', name);
  1354. end;
  1355. var
  1356. libGL : Pointer;
  1357. function InitGLFromLibrary(libname: PChar): Boolean;
  1358. begin
  1359. Result := False;
  1360. libGL := LoadLibrary(libname);
  1361. if not Assigned(libGL) then exit;
  1362. {$ifdef GL1_0}
  1363. // Miscellaneous
  1364. glClearIndex := GetProc(libgl, 'glClearIndex');
  1365. glClearColor := GetProc(libgl, 'glClearColor');
  1366. glClear := GetProc(libgl, 'glClear');
  1367. glIndexMask := GetProc(libgl, 'glIndexMask');
  1368. glColorMask := GetProc(libgl, 'glColorMask');
  1369. glAlphaFunc := GetProc(libgl, 'glAlphaFunc');
  1370. glBlendFunc := GetProc(libgl, 'glBlendFunc');
  1371. glLogicOp := GetProc(libgl, 'glLogicOp');
  1372. glCullFace := GetProc(libgl, 'glCullFace');
  1373. glFrontFace := GetProc(libgl, 'glFrontFace');
  1374. glPointSize := GetProc(libgl, 'glPointSize');
  1375. glLineWidth := GetProc(libgl, 'glLineWidth');
  1376. glLineStipple := GetProc(libgl, 'glLineStipple');
  1377. glPolygonMode := GetProc(libgl, 'glPolygonMode');
  1378. glPolygonOffset := GetProc(libgl, 'glPolygonOffset');
  1379. glPolygonStipple := GetProc(libgl, 'glPolygonStipple');
  1380. glGetPolygonStipple := GetProc(libgl, 'glGetPolygonStipple');
  1381. glEdgeFlag := GetProc(libgl, 'glEdgeFlag');
  1382. glEdgeFlagv := GetProc(libgl, 'glEdgeFlagv');
  1383. glScissor := GetProc(libgl, 'glScissor');
  1384. glClipPlane := GetProc(libgl, 'glClipPlane');
  1385. glGetClipPlane := GetProc(libgl, 'glGetClipPlane');
  1386. glDrawBuffer := GetProc(libgl, 'glDrawBuffer');
  1387. glReadBuffer := GetProc(libgl, 'glReadBuffer');
  1388. glEnable := GetProc(libgl, 'glEnable');
  1389. glDisable := GetProc(libgl, 'glDisable');
  1390. glIsEnabled := GetProc(libgl, 'glIsEnabled');
  1391. glGetBooleanv := GetProc(libgl, 'glGetBooleanv');
  1392. glGetDoublev := GetProc(libgl, 'glGetDoublev');
  1393. glGetFloatv := GetProc(libgl, 'glGetFloatv');
  1394. glGetIntegerv := GetProc(libgl, 'glGetIntegerv');
  1395. glPushAttrib := GetProc(libgl, 'glPushAttrib');
  1396. glPopAttrib := GetProc(libgl, 'glPopAttrib');
  1397. glRenderMode := GetProc(libgl, 'glRenderMode');
  1398. glGetError := GetProc(libgl, 'glGetError');
  1399. glGetString := GetProc(libgl, 'glGetString');
  1400. glFinish := GetProc(libgl, 'glFinish');
  1401. glFlush := GetProc(libgl, 'glFlush');
  1402. glHint := GetProc(libgl, 'glHint');
  1403. // Depth Buffer
  1404. glClearDepth := GetProc(libgl, 'glClearDepth');
  1405. glDepthFunc := GetProc(libgl, 'glDepthFunc');
  1406. glDepthMask := GetProc(libgl, 'glDepthMask');
  1407. glDepthRange := GetProc(libgl, 'glDepthRange');
  1408. // Accumulation Buffer
  1409. glClearAccum := GetProc(libgl, 'glClearAccum');
  1410. glAccum := GetProc(libgl, 'glAccum');
  1411. // Tranformation
  1412. glMatrixMode := GetProc(libgl, 'glMatrixMode');
  1413. glOrtho := GetProc(libgl, 'glOrtho');
  1414. glFrustum := GetProc(libgl, 'glFrustum');
  1415. glViewport := GetProc(libgl, 'glViewport');
  1416. glPushMatrix := GetProc(libgl, 'glPushMatrix');
  1417. glPopMatrix := GetProc(libgl, 'glPopMatrix');
  1418. glLoadIdentity := GetProc(libgl, 'glLoadIdentity');
  1419. glLoadMatrixd := GetProc(libgl, 'glLoadMatrixd');
  1420. glLoadMatrixf := GetProc(libgl, 'glLoadMatrixf');
  1421. glMultMatrixd := GetProc(libgl, 'glMultMatrixd');
  1422. glMultMatrixf := GetProc(libgl, 'glMultMatrixf');
  1423. glRotated := GetProc(libgl, 'glRotated');
  1424. glRotatef := GetProc(libgl, 'glRotatef');
  1425. glScaled := GetProc(libgl, 'glScaled');
  1426. glScalef := GetProc(libgl, 'glScalef');
  1427. glTranslated := GetProc(libgl, 'glTranslated');
  1428. glTranslatef := GetProc(libgl, 'glTranslatef');
  1429. // Display Lists
  1430. glIsList := GetProc(libgl, 'glIsList');
  1431. glDeleteLists := GetProc(libgl, 'glDeleteLists');
  1432. glGenLists := GetProc(libgl, 'glGenLists');
  1433. glNewList := GetProc(libgl, 'glNewList');
  1434. glEndList := GetProc(libgl, 'glEndList');
  1435. glCallList := GetProc(libgl, 'glCallList');
  1436. glCallLists := GetProc(libgl, 'glCallLists');
  1437. glListBase := GetProc(libgl, 'glListBase');
  1438. // Drawing Functions
  1439. glBegin := GetProc(libgl, 'glBegin');
  1440. glEnd := GetProc(libgl, 'glEnd');
  1441. glVertex2d := GetProc(libgl, 'glVertex2d');
  1442. glVertex2f := GetProc(libgl, 'glVertex2f');
  1443. glVertex2i := GetProc(libgl, 'glVertex2i');
  1444. glVertex2s := GetProc(libgl, 'glVertex2s');
  1445. glVertex3d := GetProc(libgl, 'glVertex3d');
  1446. glVertex3f := GetProc(libgl, 'glVertex3f');
  1447. glVertex3i := GetProc(libgl, 'glVertex3i');
  1448. glVertex3s := GetProc(libgl, 'glVertex3s');
  1449. glVertex4d := GetProc(libgl, 'glVertex4d');
  1450. glVertex4f := GetProc(libgl, 'glVertex4f');
  1451. glVertex4i := GetProc(libgl, 'glVertex4i');
  1452. glVertex4s := GetProc(libgl, 'glVertex4s');
  1453. glVertex2dv := GetProc(libgl, 'glVertex2dv');
  1454. glVertex2fv := GetProc(libgl, 'glVertex2fv');
  1455. glVertex2iv := GetProc(libgl, 'glVertex2iv');
  1456. glVertex2sv := GetProc(libgl, 'glVertex2sv');
  1457. glVertex3dv := GetProc(libgl, 'glVertex3dv');
  1458. glVertex3fv := GetProc(libgl, 'glVertex3fv');
  1459. glVertex3iv := GetProc(libgl, 'glVertex3iv');
  1460. glVertex3sv := GetProc(libgl, 'glVertex3sv');
  1461. glVertex4dv := GetProc(libgl, 'glVertex4dv');
  1462. glVertex4fv := GetProc(libgl, 'glVertex4fv');
  1463. glVertex4iv := GetProc(libgl, 'glVertex4iv');
  1464. glVertex4sv := GetProc(libgl, 'glVertex4sv');
  1465. glNormal3b := GetProc(libgl, 'glNormal3b');
  1466. glNormal3d := GetProc(libgl, 'glNormal3d');
  1467. glNormal3f := GetProc(libgl, 'glNormal3f');
  1468. glNormal3i := GetProc(libgl, 'glNormal3i');
  1469. glNormal3s := GetProc(libgl, 'glNormal3s');
  1470. glNormal3bv := GetProc(libgl, 'glNormal3bv');
  1471. glNormal3dv := GetProc(libgl, 'glNormal3dv');
  1472. glNormal3fv := GetProc(libgl, 'glNormal3fv');
  1473. glNormal3iv := GetProc(libgl, 'glNormal3iv');
  1474. glNormal3sv := GetProc(libgl, 'glNormal3sv');
  1475. glIndexd := GetProc(libgl, 'glIndexd');
  1476. glIndexf := GetProc(libgl, 'glIndexf');
  1477. glIndexi := GetProc(libgl, 'glIndexi');
  1478. glIndexs := GetProc(libgl, 'glIndexs');
  1479. glIndexdv := GetProc(libgl, 'glIndexdv');
  1480. glIndexfv := GetProc(libgl, 'glIndexfv');
  1481. glIndexiv := GetProc(libgl, 'glIndexiv');
  1482. glIndexsv := GetProc(libgl, 'glIndexsv');
  1483. glColor3b := GetProc(libgl, 'glColor3b');
  1484. glColor3d := GetProc(libgl, 'glColor3d');
  1485. glColor3f := GetProc(libgl, 'glColor3f');
  1486. glColor3i := GetProc(libgl, 'glColor3i');
  1487. glColor3s := GetProc(libgl, 'glColor3s');
  1488. glColor3ub := GetProc(libgl, 'glColor3ub');
  1489. glColor3ui := GetProc(libgl, 'glColor3ui');
  1490. glColor3us := GetProc(libgl, 'glColor3us');
  1491. glColor4b := GetProc(libgl, 'glColor4b');
  1492. glColor4d := GetProc(libgl, 'glColor4d');
  1493. glColor4f := GetProc(libgl, 'glColor4f');
  1494. glColor4i := GetProc(libgl, 'glColor4i');
  1495. glColor4s := GetProc(libgl, 'glColor4s');
  1496. glColor4ub := GetProc(libgl, 'glColor4ub');
  1497. glColor4ui := GetProc(libgl, 'glColor4ui');
  1498. glColor4us := GetProc(libgl, 'glColor4us');
  1499. glColor3bv := GetProc(libgl, 'glColor3bv');
  1500. glColor3dv := GetProc(libgl, 'glColor3dv');
  1501. glColor3fv := GetProc(libgl, 'glColor3fv');
  1502. glColor3iv := GetProc(libgl, 'glColor3iv');
  1503. glColor3sv := GetProc(libgl, 'glColor3sv');
  1504. glColor3ubv := GetProc(libgl, 'glColor3ubv');
  1505. glColor3uiv := GetProc(libgl, 'glColor3uiv');
  1506. glColor3usv := GetProc(libgl, 'glColor3usv');
  1507. glColor4bv := GetProc(libgl, 'glColor4bv');
  1508. glColor4dv := GetProc(libgl, 'glColor4dv');
  1509. glColor4fv := GetProc(libgl, 'glColor4fv');
  1510. glColor4iv := GetProc(libgl, 'glColor4iv');
  1511. glColor4sv := GetProc(libgl, 'glColor4sv');
  1512. glColor4ubv := GetProc(libgl, 'glColor4ubv');
  1513. glColor4uiv := GetProc(libgl, 'glColor4uiv');
  1514. glColor4usv := GetProc(libgl, 'glColor4usv');
  1515. glTexCoord1d := GetProc(libgl, 'glTexCoord1d');
  1516. glTexCoord1f := GetProc(libgl, 'glTexCoord1f');
  1517. glTexCoord1i := GetProc(libgl, 'glTexCoord1i');
  1518. glTexCoord1s := GetProc(libgl, 'glTexCoord1s');
  1519. glTexCoord2d := GetProc(libgl, 'glTexCoord2d');
  1520. glTexCoord2f := GetProc(libgl, 'glTexCoord2f');
  1521. glTexCoord2i := GetProc(libgl, 'glTexCoord2i');
  1522. glTexCoord2s := GetProc(libgl, 'glTexCoord2s');
  1523. glTexCoord3d := GetProc(libgl, 'glTexCoord3d');
  1524. glTexCoord3f := GetProc(libgl, 'glTexCoord3f');
  1525. glTexCoord3i := GetProc(libgl, 'glTexCoord3i');
  1526. glTexCoord3s := GetProc(libgl, 'glTexCoord3s');
  1527. glTexCoord4d := GetProc(libgl, 'glTexCoord4d');
  1528. glTexCoord4f := GetProc(libgl, 'glTexCoord4f');
  1529. glTexCoord4i := GetProc(libgl, 'glTexCoord4i');
  1530. glTexCoord4s := GetProc(libgl, 'glTexCoord4s');
  1531. glTexCoord1dv := GetProc(libgl, 'glTexCoord1dv');
  1532. glTexCoord1fv := GetProc(libgl, 'glTexCoord1fv');
  1533. glTexCoord1iv := GetProc(libgl, 'glTexCoord1iv');
  1534. glTexCoord1sv := GetProc(libgl, 'glTexCoord1sv');
  1535. glTexCoord2dv := GetProc(libgl, 'glTexCoord2dv');
  1536. glTexCoord2fv := GetProc(libgl, 'glTexCoord2fv');
  1537. glTexCoord2iv := GetProc(libgl, 'glTexCoord2iv');
  1538. glTexCoord2sv := GetProc(libgl, 'glTexCoord2sv');
  1539. glTexCoord3dv := GetProc(libgl, 'glTexCoord3dv');
  1540. glTexCoord3fv := GetProc(libgl, 'glTexCoord3fv');
  1541. glTexCoord3iv := GetProc(libgl, 'glTexCoord3iv');
  1542. glTexCoord3sv := GetProc(libgl, 'glTexCoord3sv');
  1543. glTexCoord4dv := GetProc(libgl, 'glTexCoord4dv');
  1544. glTexCoord4fv := GetProc(libgl, 'glTexCoord4fv');
  1545. glTexCoord4iv := GetProc(libgl, 'glTexCoord4iv');
  1546. glTexCoord4sv := GetProc(libgl, 'glTexCoord4sv');
  1547. glRasterPos2d := GetProc(libgl, 'glRasterPos2d');
  1548. glRasterPos2f := GetProc(libgl, 'glRasterPos2f');
  1549. glRasterPos2i := GetProc(libgl, 'glRasterPos2i');
  1550. glRasterPos2s := GetProc(libgl, 'glRasterPos2s');
  1551. glRasterPos3d := GetProc(libgl, 'glRasterPos3d');
  1552. glRasterPos3f := GetProc(libgl, 'glRasterPos3f');
  1553. glRasterPos3i := GetProc(libgl, 'glRasterPos3i');
  1554. glRasterPos3s := GetProc(libgl, 'glRasterPos3s');
  1555. glRasterPos4d := GetProc(libgl, 'glRasterPos4d');
  1556. glRasterPos4f := GetProc(libgl, 'glRasterPos4f');
  1557. glRasterPos4i := GetProc(libgl, 'glRasterPos4i');
  1558. glRasterPos4s := GetProc(libgl, 'glRasterPos4s');
  1559. glRasterPos2dv := GetProc(libgl, 'glRasterPos2dv');
  1560. glRasterPos2fv := GetProc(libgl, 'glRasterPos2fv');
  1561. glRasterPos2iv := GetProc(libgl, 'glRasterPos2iv');
  1562. glRasterPos2sv := GetProc(libgl, 'glRasterPos2sv');
  1563. glRasterPos3dv := GetProc(libgl, 'glRasterPos3dv');
  1564. glRasterPos3fv := GetProc(libgl, 'glRasterPos3fv');
  1565. glRasterPos3iv := GetProc(libgl, 'glRasterPos3iv');
  1566. glRasterPos3sv := GetProc(libgl, 'glRasterPos3sv');
  1567. glRasterPos4dv := GetProc(libgl, 'glRasterPos4dv');
  1568. glRasterPos4fv := GetProc(libgl, 'glRasterPos4fv');
  1569. glRasterPos4iv := GetProc(libgl, 'glRasterPos4iv');
  1570. glRasterPos4sv := GetProc(libgl, 'glRasterPos4sv');
  1571. glRectd := GetProc(libgl, 'glRectd');
  1572. glRectf := GetProc(libgl, 'glRectf');
  1573. glRecti := GetProc(libgl, 'glRecti');
  1574. glRects := GetProc(libgl, 'glRects');
  1575. glRectdv := GetProc(libgl, 'glRectdv');
  1576. glRectfv := GetProc(libgl, 'glRectfv');
  1577. glRectiv := GetProc(libgl, 'glRectiv');
  1578. glRectsv := GetProc(libgl, 'glRectsv');
  1579. // Lighting
  1580. glShadeModel := GetProc(libgl, 'glShadeModel');
  1581. glLightf := GetProc(libgl, 'glLightf');
  1582. glLighti := GetProc(libgl, 'glLighti');
  1583. glLightfv := GetProc(libgl, 'glLightfv');
  1584. glLightiv := GetProc(libgl, 'glLightiv');
  1585. glGetLightfv := GetProc(libgl, 'glGetLightfv');
  1586. glGetLightiv := GetProc(libgl, 'glGetLightiv');
  1587. glLightModelf := GetProc(libgl, 'glLightModelf');
  1588. glLightModeli := GetProc(libgl, 'glLightModeli');
  1589. glLightModelfv := GetProc(libgl, 'glLightModelfv');
  1590. glLightModeliv := GetProc(libgl, 'glLightModeliv');
  1591. glMaterialf := GetProc(libgl, 'glMaterialf');
  1592. glMateriali := GetProc(libgl, 'glMateriali');
  1593. glMaterialfv := GetProc(libgl, 'glMaterialfv');
  1594. glMaterialiv := GetProc(libgl, 'glMaterialiv');
  1595. glGetMaterialfv := GetProc(libgl, 'glGetMaterialfv');
  1596. glGetMaterialiv := GetProc(libgl, 'glGetMaterialiv');
  1597. glColorMaterial := GetProc(libgl, 'glColorMaterial');
  1598. // Raster Functions
  1599. glPixelZoom := GetProc(libgl, 'glPixelZoom');
  1600. glPixelStoref := GetProc(libgl, 'glPixelStoref');
  1601. glPixelStorei := GetProc(libgl, 'glPixelStorei');
  1602. glPixelTransferf := GetProc(libgl, 'glPixelTransferf');
  1603. glPixelTransferi := GetProc(libgl, 'glPixelTransferi');
  1604. glPixelMapfv := GetProc(libgl, 'glPixelMapfv');
  1605. glPixelMapuiv := GetProc(libgl, 'glPixelMapuiv');
  1606. glPixelMapusv := GetProc(libgl, 'glPixelMapusv');
  1607. glGetPixelMapfv := GetProc(libgl, 'glGetPixelMapfv');
  1608. glGetPixelMapuiv := GetProc(libgl, 'glGetPixelMapuiv');
  1609. glGetPixelMapusv := GetProc(libgl, 'glGetPixelMapusv');
  1610. glBitmap := GetProc(libgl, 'glBitmap');
  1611. glReadPixels := GetProc(libgl, 'glReadPixels');
  1612. glDrawPixels := GetProc(libgl, 'glDrawPixels');
  1613. glCopyPixels := GetProc(libgl, 'glCopyPixels');
  1614. // Stenciling
  1615. glStencilFunc := GetProc(libgl, 'glStencilFunc');
  1616. glStencilMask := GetProc(libgl, 'glStencilMask');
  1617. glStencilOp := GetProc(libgl, 'glStencilOp');
  1618. glClearStencil := GetProc(libgl, 'glClearStencil');
  1619. // Texture Mapping
  1620. glTexGend := GetProc(libgl, 'glTexGend');
  1621. glTexGenf := GetProc(libgl, 'glTexGenf');
  1622. glTexGeni := GetProc(libgl, 'glTexGeni');
  1623. glTexGendv := GetProc(libgl, 'glTexGendv');
  1624. glTexGenfv := GetProc(libgl, 'glTexGenfv');
  1625. glTexGeniv := GetProc(libgl, 'glTexGeniv');
  1626. glGetTexGendv := GetProc(libgl, 'glGetTexGendv');
  1627. glGetTexGenfv := GetProc(libgl, 'glGetTexGenfv');
  1628. glGetTexGeniv := GetProc(libgl, 'glGetTexGeniv');
  1629. glTexEnvf := GetProc(libgl, 'glTexEnvf');
  1630. glTexEnvi := GetProc(libgl, 'glTexEnvi');
  1631. glTexEnvfv := GetProc(libgl, 'glTexEnvfv');
  1632. glTexEnviv := GetProc(libgl, 'glTexEnviv');
  1633. glGetTexEnvfv := GetProc(libgl, 'glGetTexEnvfv');
  1634. glGetTexEnviv := GetProc(libgl, 'glGetTexEnviv');
  1635. glTexParameterf := GetProc(libgl, 'glTexParameterf');
  1636. glTexParameteri := GetProc(libgl, 'glTexParameteri');
  1637. glTexParameterfv := GetProc(libgl, 'glTexParameterfv');
  1638. glTexParameteriv := GetProc(libgl, 'glTexParameteriv');
  1639. glGetTexParameterfv := GetProc(libgl, 'glGetTexParameterfv');
  1640. glGetTexParameteriv := GetProc(libgl, 'glGetTexParameteriv');
  1641. glGetTexLevelParameterfv := GetProc(libgl, 'glGetTexLevelParameterfv');
  1642. glGetTexLevelParameteriv := GetProc(libgl, 'glGetTexLevelParameteriv');
  1643. glTexImage1D := GetProc(libgl, 'glTexImage1D');
  1644. glTexImage2D := GetProc(libgl, 'glTexImage2D');
  1645. glGetTexImage := GetProc(libgl, 'glGetTexImage');
  1646. // Evaluators
  1647. glMap1d := GetProc(libgl, 'glMap1d');
  1648. glMap1f := GetProc(libgl, 'glMap1f');
  1649. glMap2d := GetProc(libgl, 'glMap2d');
  1650. glMap2f := GetProc(libgl, 'glMap2f');
  1651. glGetMapdv := GetProc(libgl, 'glGetMapdv');
  1652. glGetMapfv := GetProc(libgl, 'glGetMapfv');
  1653. glGetMapiv := GetProc(libgl, 'glGetMapiv');
  1654. glEvalCoord1d := GetProc(libgl, 'glEvalCoord1d');
  1655. glEvalCoord1f := GetProc(libgl, 'glEvalCoord1f');
  1656. glEvalCoord1dv := GetProc(libgl, 'glEvalCoord1dv');
  1657. glEvalCoord1fv := GetProc(libgl, 'glEvalCoord1fv');
  1658. glEvalCoord2d := GetProc(libgl, 'glEvalCoord2d');
  1659. glEvalCoord2f := GetProc(libgl, 'glEvalCoord2f');
  1660. glEvalCoord2dv := GetProc(libgl, 'glEvalCoord2dv');
  1661. glEvalCoord2fv := GetProc(libgl, 'glEvalCoord2fv');
  1662. glMapGrid1d := GetProc(libgl, 'glMapGrid1d');
  1663. glMapGrid1f := GetProc(libgl, 'glMapGrid1f');
  1664. glMapGrid2d := GetProc(libgl, 'glMapGrid2d');
  1665. glMapGrid2f := GetProc(libgl, 'glMapGrid2f');
  1666. glEvalPoint1 := GetProc(libgl, 'glEvalPoint1');
  1667. glEvalPoint2 := GetProc(libgl, 'glEvalPoint2');
  1668. glEvalMesh1 := GetProc(libgl, 'glEvalMesh1');
  1669. glEvalMesh2 := GetProc(libgl, 'glEvalMesh2');
  1670. // Fog
  1671. glFogf := GetProc(libgl, 'glFogf');
  1672. glFogi := GetProc(libgl, 'glFogi');
  1673. glFogfv := GetProc(libgl, 'glFogfv');
  1674. glFogiv := GetProc(libgl, 'glFogiv');
  1675. // Selection and Feedback
  1676. glFeedbackBuffer := GetProc(libgl, 'glFeedbackBuffer');
  1677. glPassThrough := GetProc(libgl, 'glPassThrough');
  1678. glSelectBuffer := GetProc(libgl, 'glSelectBuffer');
  1679. glInitNames := GetProc(libgl, 'glInitNames');
  1680. glLoadName := GetProc(libgl, 'glLoadName');
  1681. glPushName := GetProc(libgl, 'glPushName');
  1682. glPopName := GetProc(libgl, 'glPopName');
  1683. {$endif GL1_0}
  1684. {$ifdef GL1_1}
  1685. // Miscellaneous
  1686. glEnableClientState := GetProc(libgl, 'glEnableClientState');
  1687. glDisableClientState := GetProc(libgl, 'glDisableClientState');
  1688. glPushClientAttrib := GetProc(libgl, 'glPushClientAttrib');
  1689. glPopClientAttrib := GetProc(libgl, 'glPopClientAttrib');
  1690. // Drawing Functions
  1691. glIndexub := GetProc(libgl, 'glIndexub');
  1692. glIndexubv := GetProc(libgl, 'glIndexubv');
  1693. // Vertex Arrays
  1694. glVertexPointer := GetProc(libgl, 'glVertexPointer');
  1695. glNormalPointer := GetProc(libgl, 'glNormalPointer');
  1696. glColorPointer := GetProc(libgl, 'glColorPointer');
  1697. glIndexPointer := GetProc(libgl, 'glIndexPointer');
  1698. glTexCoordPointer := GetProc(libgl, 'glTexCoordPointer');
  1699. glEdgeFlagPointer := GetProc(libgl, 'glEdgeFlagPointer');
  1700. glGetPointerv := GetProc(libgl, 'glGetPointerv');
  1701. glArrayElement := GetProc(libgl, 'glArrayElement');
  1702. glDrawArrays := GetProc(libgl, 'glDrawArrays');
  1703. glDrawElements := GetProc(libgl, 'glDrawElements');
  1704. glInterleavedArrays := GetProc(libgl, 'glInterleavedArrays');
  1705. // Texture Mapping
  1706. glGenTextures := GetProc(libgl, 'glGenTextures');
  1707. glDeleteTextures := GetProc(libgl, 'glDeleteTextures');
  1708. glBindTexture := GetProc(libgl, 'glBindTexture');
  1709. glPrioritizeTextures := GetProc(libgl, 'glPrioritizeTextures');
  1710. glAreTexturesResident := GetProc(libgl, 'glAreTexturesResident');
  1711. glIsTexture := GetProc(libgl, 'glIsTexture');
  1712. glTexSubImage1D := GetProc(libgl, 'glTexSubImage1D');
  1713. glTexSubImage2D := GetProc(libgl, 'glTexSubImage2D');
  1714. glCopyTexImage1D := GetProc(libgl, 'glCopyTexImage1D');
  1715. glCopyTexImage2D := GetProc(libgl, 'glCopyTexImage2D');
  1716. glCopyTexSubImage1D := GetProc(libgl, 'glCopyTexSubImage1D');
  1717. glCopyTexSubImage2D := GetProc(libgl, 'glCopyTexSubImage2D');
  1718. {$endif GL1_1}
  1719. {$ifdef GL1_2}
  1720. glDrawRangeElements := GetProc(libgl, 'glDrawRangeElements');
  1721. glTexImage3D := GetProc(libgl, 'glTexImage3D');
  1722. glTexSubImage3D := GetProc(libgl, 'glTexSubImage3D');
  1723. glCopyTexSubImage3D := GetProc(libgl, 'glCopyTexSubImage3D');
  1724. {$endif GL1_2}
  1725. {$ifdef EXTENSIONS}
  1726. // === 1.0 Extensions ===
  1727. // GL_EXT_blend_minmax
  1728. glBlendEquationEXT := GetProc(libgl, 'glBlendEquationEXT');
  1729. // GL_EXT_blend_color
  1730. glBlendColorEXT := GetProc(libgl, 'glBlendColorEXT');
  1731. // GL_EXT_polygon_offset
  1732. glPolygonOffsetEXT := GetProc(libgl, 'glPolygonOffsetEXT');
  1733. // GL_EXT_vertex_array
  1734. glVertexPointerEXT := GetProc(libgl, 'glVertexPointerEXT');
  1735. glNormalPointerEXT := GetProc(libgl, 'glNormalPointerEXT');
  1736. glColorPointerEXT := GetProc(libgl, 'glColorPointerEXT');
  1737. glIndexPointerEXT := GetProc(libgl, 'glIndexPointerEXT');
  1738. glTexCoordPointerEXT := GetProc(libgl, 'glTexCoordPointerEXT');
  1739. glEdgeFlagPointerEXT := GetProc(libgl, 'glEdgeFlagPointerEXT');
  1740. glGetPointervEXT := GetProc(libgl, 'glGetPointervEXT');
  1741. glArrayElementEXT := GetProc(libgl, 'glArrayElementEXT');
  1742. glDrawArraysEXT := GetProc(libgl, 'glDrawArraysEXT');
  1743. // GL_EXT_texture_object
  1744. glGenTexturesEXT := GetProc(libgl, 'glGenTexturesEXT');
  1745. glDeleteTexturesEXT := GetProc(libgl, 'glDeleteTexturesEXT');
  1746. glBindTextureEXT := GetProc(libgl, 'glBindTextureEXT');
  1747. glPrioritizeTexturesEXT := GetProc(libgl, 'glPrioritizeTexturesEXT');
  1748. glAreTexturesResidentEXT := GetProc(libgl, 'glAreTexturesResidentEXT');
  1749. glIsTextureEXT := GetProc(libgl, 'glIsTextureEXT');
  1750. // GL_EXT_texture3D
  1751. glTexImage3DEXT := GetProc(libgl, 'glTexImage3DEXT');
  1752. glTexSubImage3DEXT := GetProc(libgl, 'glTexSubImage3DEXT');
  1753. glCopyTexSubImage3DEXT := GetProc(libgl, 'glCopyTexSubImage3DEXT');
  1754. // GL_EXT_color_table
  1755. glColorTableEXT := GetProc(libgl, 'glColorTableEXT');
  1756. glColorSubTableEXT := GetProc(libgl, 'glColorSubTableEXT');
  1757. glGetColorTableEXT := GetProc(libgl, 'glGetColorTableEXT');
  1758. glGetColorTableParameterfvEXT := GetProc(libgl, 'glGetColorTableParameterfvEXT');
  1759. glGetColorTableParameterivEXT := GetProc(libgl, 'glGetColorTableParameterivEXT');
  1760. {$endif EXTENSIONS}
  1761. {$ifdef SGI_EXTENSIONS}
  1762. // GL_SGIS_multitexture
  1763. glMultiTexCoord1dSGIS := GetProc(libgl, 'glMultiTexCoord1dSGIS');
  1764. glMultiTexCoord1dvSGIS := GetProc(libgl, 'glMultiTexCoord1dvSGIS');
  1765. glMultiTexCoord1fSGIS := GetProc(libgl, 'glMultiTexCoord1fSGIS');
  1766. glMultiTexCoord1fvSGIS := GetProc(libgl, 'glMultiTexCoord1fvSGIS');
  1767. glMultiTexCoord1iSGIS := GetProc(libgl, 'glMultiTexCoord1iSGIS');
  1768. glMultiTexCoord1ivSGIS := GetProc(libgl, 'glMultiTexCoord1ivSGIS');
  1769. glMultiTexCoord1sSGIS := GetProc(libgl, 'glMultiTexCoord1sSGIS');
  1770. glMultiTexCoord1svSGIS := GetProc(libgl, 'glMultiTexCoord1svSGIS');
  1771. glMultiTexCoord2dSGIS := GetProc(libgl, 'glMultiTexCoord2dSGIS');
  1772. glMultiTexCoord2dvSGIS := GetProc(libgl, 'glMultiTexCoord2dvSGIS');
  1773. glMultiTexCoord2fSGIS := GetProc(libgl, 'glMultiTexCoord2fSGIS');
  1774. glMultiTexCoord2fvSGIS := GetProc(libgl, 'glMultiTexCoord2fvSGIS');
  1775. glMultiTexCoord2iSGIS := GetProc(libgl, 'glMultiTexCoord2iSGIS');
  1776. glMultiTexCoord2ivSGIS := GetProc(libgl, 'glMultiTexCoord2ivSGIS');
  1777. glMultiTexCoord2sSGIS := GetProc(libgl, 'glMultiTexCoord2sSGIS');
  1778. glMultiTexCoord2svSGIS := GetProc(libgl, 'glMultiTexCoord2svSGIS');
  1779. glMultiTexCoord3dSGIS := GetProc(libgl, 'glMultiTexCoord3dSGIS');
  1780. glMultiTexCoord3dvSGIS := GetProc(libgl, 'glMultiTexCoord3dvSGIS');
  1781. glMultiTexCoord3fSGIS := GetProc(libgl, 'glMultiTexCoord3fSGIS');
  1782. glMultiTexCoord3fvSGIS := GetProc(libgl, 'glMultiTexCoord3fvSGIS');
  1783. glMultiTexCoord3iSGIS := GetProc(libgl, 'glMultiTexCoord3iSGIS');
  1784. glMultiTexCoord3ivSGIS := GetProc(libgl, 'glMultiTexCoord3ivSGIS');
  1785. glMultiTexCoord3sSGIS := GetProc(libgl, 'glMultiTexCoord3sSGIS');
  1786. glMultiTexCoord3svSGIS := GetProc(libgl, 'glMultiTexCoord3svSGIS');
  1787. glMultiTexCoord4dSGIS := GetProc(libgl, 'glMultiTexCoord4dSGIS');
  1788. glMultiTexCoord4dvSGIS := GetProc(libgl, 'glMultiTexCoord4dvSGIS');
  1789. glMultiTexCoord4fSGIS := GetProc(libgl, 'glMultiTexCoord4fSGIS');
  1790. glMultiTexCoord4fvSGIS := GetProc(libgl, 'glMultiTexCoord4fvSGIS');
  1791. glMultiTexCoord4iSGIS := GetProc(libgl, 'glMultiTexCoord4iSGIS');
  1792. glMultiTexCoord4ivSGIS := GetProc(libgl, 'glMultiTexCoord4ivSGIS');
  1793. glMultiTexCoord4sSGIS := GetProc(libgl, 'glMultiTexCoord4sSGIS');
  1794. glMultiTexCoord4svSGIS := GetProc(libgl, 'glMultiTexCoord4svSGIS');
  1795. glMultiTexCoordPointerSGIS := GetProc(libgl, 'glMultiTexCoordPointerSGIS');
  1796. glSelectTextureSGIS := GetProc(libgl, 'glSelectTextureSGIS');
  1797. glSelectTextureCoordSetSGIS := GetProc(libgl, 'glSelectTextureCoordSetSGIS');
  1798. // GL_EXT_multitexture
  1799. glMultiTexCoord1dEXT := GetProc(libgl, 'glMultiTexCoord1dEXT');
  1800. glMultiTexCoord1dvEXT := GetProc(libgl, 'glMultiTexCoord1dvEXT');
  1801. glMultiTexCoord1fEXT := GetProc(libgl, 'glMultiTexCoord1fEXT');
  1802. glMultiTexCoord1fvEXT := GetProc(libgl, 'glMultiTexCoord1fvEXT');
  1803. glMultiTexCoord1iEXT := GetProc(libgl, 'glMultiTexCoord1iEXT');
  1804. glMultiTexCoord1ivEXT := GetProc(libgl, 'glMultiTexCoord1ivEXT');
  1805. glMultiTexCoord1sEXT := GetProc(libgl, 'glMultiTexCoord1sEXT');
  1806. glMultiTexCoord1svEXT := GetProc(libgl, 'glMultiTexCoord1svEXT');
  1807. glMultiTexCoord2dEXT := GetProc(libgl, 'glMultiTexCoord2dEXT');
  1808. glMultiTexCoord2dvEXT := GetProc(libgl, 'glMultiTexCoord2dvEXT');
  1809. glMultiTexCoord2fEXT := GetProc(libgl, 'glMultiTexCoord2fEXT');
  1810. glMultiTexCoord2fvEXT := GetProc(libgl, 'glMultiTexCoord2fvEXT');
  1811. glMultiTexCoord2iEXT := GetProc(libgl, 'glMultiTexCoord2iEXT');
  1812. glMultiTexCoord2ivEXT := GetProc(libgl, 'glMultiTexCoord2ivEXT');
  1813. glMultiTexCoord2sEXT := GetProc(libgl, 'glMultiTexCoord2sEXT');
  1814. glMultiTexCoord2svEXT := GetProc(libgl, 'glMultiTexCoord2svEXT');
  1815. glMultiTexCoord3dEXT := GetProc(libgl, 'glMultiTexCoord3dEXT');
  1816. glMultiTexCoord3dvEXT := GetProc(libgl, 'glMultiTexCoord3dvEXT');
  1817. glMultiTexCoord3fEXT := GetProc(libgl, 'glMultiTexCoord3fEXT');
  1818. glMultiTexCoord3fvEXT := GetProc(libgl, 'glMultiTexCoord3fvEXT');
  1819. glMultiTexCoord3iEXT := GetProc(libgl, 'glMultiTexCoord3iEXT');
  1820. glMultiTexCoord3ivEXT := GetProc(libgl, 'glMultiTexCoord3ivEXT');
  1821. glMultiTexCoord3sEXT := GetProc(libgl, 'glMultiTexCoord3sEXT');
  1822. glMultiTexCoord3svEXT := GetProc(libgl, 'glMultiTexCoord3svEXT');
  1823. glMultiTexCoord4dEXT := GetProc(libgl, 'glMultiTexCoord4dEXT');
  1824. glMultiTexCoord4dvEXT := GetProc(libgl, 'glMultiTexCoord4dvEXT');
  1825. glMultiTexCoord4fEXT := GetProc(libgl, 'glMultiTexCoord4fEXT');
  1826. glMultiTexCoord4fvEXT := GetProc(libgl, 'glMultiTexCoord4fvEXT');
  1827. glMultiTexCoord4iEXT := GetProc(libgl, 'glMultiTexCoord4iEXT');
  1828. glMultiTexCoord4ivEXT := GetProc(libgl, 'glMultiTexCoord4ivEXT');
  1829. glMultiTexCoord4sEXT := GetProc(libgl, 'glMultiTexCoord4sEXT');
  1830. glMultiTexCoord4svEXT := GetProc(libgl, 'glMultiTexCoord4svEXT');
  1831. glInterleavedTextureCoordSetsEXT := GetProc(libgl, 'glInterleavedTextureCoordSetsEXT');
  1832. glSelectTextureEXT := GetProc(libgl, 'glSelectTextureEXT');
  1833. glSelectTextureCoordSetEXT := GetProc(libgl, 'glSelectTextureCoordSetEXT');
  1834. glSelectTextureTransformEXT := GetProc(libgl, 'glSelectTextureTransformEXT');
  1835. // GL_EXT_point_parameters
  1836. glPointParameterfEXT := GetProc(libgl, 'glPointParameterfEXT');
  1837. glPointParameterfvEXT := GetProc(libgl, 'glPointParameterfvEXT');
  1838. {$endif SGI_EXTENSIONS}
  1839. {$ifdef MESA}
  1840. // GL_MESA_window_pos
  1841. glWindowPos2iMESA := GetProc(libgl, 'glWindowPos2iMESA');
  1842. glWindowPos2sMESA := GetProc(libgl, 'glWindowPos2sMESA');
  1843. glWindowPos2fMESA := GetProc(libgl, 'glWindowPos2fMESA');
  1844. glWindowPos2dMESA := GetProc(libgl, 'glWindowPos2dMESA');
  1845. glWindowPos2ivMESA := GetProc(libgl, 'glWindowPos2ivMESA');
  1846. glWindowPos2svMESA := GetProc(libgl, 'glWindowPos2svMESA');
  1847. glWindowPos2fvMESA := GetProc(libgl, 'glWindowPos2fvMESA');
  1848. glWindowPos2dvMESA := GetProc(libgl, 'glWindowPos2dvMESA');
  1849. glWindowPos3iMESA := GetProc(libgl, 'glWindowPos3iMESA');
  1850. glWindowPos3sMESA := GetProc(libgl, 'glWindowPos3sMESA');
  1851. glWindowPos3fMESA := GetProc(libgl, 'glWindowPos3fMESA');
  1852. glWindowPos3dMESA := GetProc(libgl, 'glWindowPos3dMESA');
  1853. glWindowPos3ivMESA := GetProc(libgl, 'glWindowPos3ivMESA');
  1854. glWindowPos3svMESA := GetProc(libgl, 'glWindowPos3svMESA');
  1855. glWindowPos3fvMESA := GetProc(libgl, 'glWindowPos3fvMESA');
  1856. glWindowPos3dvMESA := GetProc(libgl, 'glWindowPos3dvMESA');
  1857. glWindowPos4iMESA := GetProc(libgl, 'glWindowPos4iMESA');
  1858. glWindowPos4sMESA := GetProc(libgl, 'glWindowPos4sMESA');
  1859. glWindowPos4fMESA := GetProc(libgl, 'glWindowPos4fMESA');
  1860. glWindowPos4dMESA := GetProc(libgl, 'glWindowPos4dMESA');
  1861. glWindowPos4ivMESA := GetProc(libgl, 'glWindowPos4ivMESA');
  1862. glWindowPos4svMESA := GetProc(libgl, 'glWindowPos4svMESA');
  1863. glWindowPos4fvMESA := GetProc(libgl, 'glWindowPos4fvMESA');
  1864. glWindowPos4dvMESA := GetProc(libgl, 'glWindowPos4dvMESA');
  1865. // GL_MESA_resize_buffers
  1866. glResizeBuffersMESA := GetProc(libgl, 'glResizeBuffersMESA');
  1867. {$endif MESA}
  1868. GLInitialized := True;
  1869. Result := True;
  1870. end;
  1871. function InitGL: Boolean;
  1872. begin
  1873. Result := InitGLFromLibrary('libGL.so') or
  1874. InitGLFromLibrary('libGL.so.1') or
  1875. InitGLFromLibrary('libMesaGL.so') or
  1876. InitGLFromLibrary('libMesaGL.so.3');
  1877. end;
  1878. initialization
  1879. InitGL;
  1880. finalization
  1881. if Assigned(libGL) then dlclose(libGL);
  1882. end.
  1883. {
  1884. $Log$
  1885. Revision 1.5 2000-10-01 22:17:58 peter
  1886. * new bounce demo
  1887. Revision 1.4.2.1 2000/10/01 22:12:27 peter
  1888. * new demo
  1889. Revision 1.1 2000/07/13 06:34:17 michael
  1890. + Initial import
  1891. Revision 1.2 2000/05/31 00:34:28 alex
  1892. made templates work
  1893. }
  1894. {
  1895. $Log$
  1896. Revision 1.5 2000-10-01 22:17:58 peter
  1897. * new bounce demo
  1898. Revision 1.4.2.1 2000/10/01 22:12:27 peter
  1899. * new demo
  1900. }