gl.pp 105 KB

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