macglu.pas 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618
  1. {
  2. Copyright: (c) 1999-2008 Apple Inc. All rights reserved.
  3. }
  4. { Pascal Translation: Gorazd Krosl, <[email protected]>, October 2009 }
  5. {
  6. Modified for use with Free Pascal
  7. Version 308
  8. Please report any bugs to <[email protected]>
  9. }
  10. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  11. {$mode macpas}
  12. {$packenum 1}
  13. {$macro on}
  14. {$inline on}
  15. {$calling mwpascal}
  16. unit macglu;
  17. interface
  18. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  19. {$setc GAP_INTERFACES_VERSION := $0308}
  20. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  21. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  22. {$endc}
  23. {$ifc defined CPUPOWERPC and defined CPUI386}
  24. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  25. {$endc}
  26. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  27. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  28. {$endc}
  29. {$ifc not defined __ppc__ and defined CPUPOWERPC32}
  30. {$setc __ppc__ := 1}
  31. {$elsec}
  32. {$setc __ppc__ := 0}
  33. {$endc}
  34. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  35. {$setc __ppc64__ := 1}
  36. {$elsec}
  37. {$setc __ppc64__ := 0}
  38. {$endc}
  39. {$ifc not defined __i386__ and defined CPUI386}
  40. {$setc __i386__ := 1}
  41. {$elsec}
  42. {$setc __i386__ := 0}
  43. {$endc}
  44. {$ifc not defined __x86_64__ and defined CPUX86_64}
  45. {$setc __x86_64__ := 1}
  46. {$elsec}
  47. {$setc __x86_64__ := 0}
  48. {$endc}
  49. {$ifc not defined __arm__ and defined CPUARM}
  50. {$setc __arm__ := 1}
  51. {$elsec}
  52. {$setc __arm__ := 0}
  53. {$endc}
  54. {$ifc not defined __arm64__ and defined CPUAARCH64}
  55. {$setc __arm64__ := 1}
  56. {$elsec}
  57. {$setc __arm64__ := 0}
  58. {$endc}
  59. {$ifc defined cpu64}
  60. {$setc __LP64__ := 1}
  61. {$elsec}
  62. {$setc __LP64__ := 0}
  63. {$endc}
  64. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  65. {$error Conflicting definitions for __ppc__ and __i386__}
  66. {$endc}
  67. {$ifc defined __ppc__ and __ppc__}
  68. {$setc TARGET_CPU_PPC := TRUE}
  69. {$setc TARGET_CPU_PPC64 := FALSE}
  70. {$setc TARGET_CPU_X86 := FALSE}
  71. {$setc TARGET_CPU_X86_64 := FALSE}
  72. {$setc TARGET_CPU_ARM := FALSE}
  73. {$setc TARGET_CPU_ARM64 := FALSE}
  74. {$setc TARGET_OS_MAC := TRUE}
  75. {$setc TARGET_OS_IPHONE := FALSE}
  76. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  77. {$setc TARGET_OS_EMBEDDED := FALSE}
  78. {$elifc defined __ppc64__ and __ppc64__}
  79. {$setc TARGET_CPU_PPC := FALSE}
  80. {$setc TARGET_CPU_PPC64 := TRUE}
  81. {$setc TARGET_CPU_X86 := FALSE}
  82. {$setc TARGET_CPU_X86_64 := FALSE}
  83. {$setc TARGET_CPU_ARM := FALSE}
  84. {$setc TARGET_CPU_ARM64 := FALSE}
  85. {$setc TARGET_OS_MAC := TRUE}
  86. {$setc TARGET_OS_IPHONE := FALSE}
  87. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  88. {$setc TARGET_OS_EMBEDDED := FALSE}
  89. {$elifc defined __i386__ and __i386__}
  90. {$setc TARGET_CPU_PPC := FALSE}
  91. {$setc TARGET_CPU_PPC64 := FALSE}
  92. {$setc TARGET_CPU_X86 := TRUE}
  93. {$setc TARGET_CPU_X86_64 := FALSE}
  94. {$setc TARGET_CPU_ARM := FALSE}
  95. {$setc TARGET_CPU_ARM64 := FALSE}
  96. {$ifc defined(iphonesim)}
  97. {$setc TARGET_OS_MAC := FALSE}
  98. {$setc TARGET_OS_IPHONE := TRUE}
  99. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  100. {$elsec}
  101. {$setc TARGET_OS_MAC := TRUE}
  102. {$setc TARGET_OS_IPHONE := FALSE}
  103. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  104. {$endc}
  105. {$setc TARGET_OS_EMBEDDED := FALSE}
  106. {$elifc defined __x86_64__ and __x86_64__}
  107. {$setc TARGET_CPU_PPC := FALSE}
  108. {$setc TARGET_CPU_PPC64 := FALSE}
  109. {$setc TARGET_CPU_X86 := FALSE}
  110. {$setc TARGET_CPU_X86_64 := TRUE}
  111. {$setc TARGET_CPU_ARM := FALSE}
  112. {$setc TARGET_CPU_ARM64 := FALSE}
  113. {$ifc defined(iphonesim)}
  114. {$setc TARGET_OS_MAC := FALSE}
  115. {$setc TARGET_OS_IPHONE := TRUE}
  116. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  117. {$elsec}
  118. {$setc TARGET_OS_MAC := TRUE}
  119. {$setc TARGET_OS_IPHONE := FALSE}
  120. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  121. {$endc}
  122. {$setc TARGET_OS_EMBEDDED := FALSE}
  123. {$elifc defined __arm__ and __arm__}
  124. {$setc TARGET_CPU_PPC := FALSE}
  125. {$setc TARGET_CPU_PPC64 := FALSE}
  126. {$setc TARGET_CPU_X86 := FALSE}
  127. {$setc TARGET_CPU_X86_64 := FALSE}
  128. {$setc TARGET_CPU_ARM := TRUE}
  129. {$setc TARGET_CPU_ARM64 := FALSE}
  130. { will require compiler define when/if other Apple devices with ARM cpus ship }
  131. {$setc TARGET_OS_MAC := FALSE}
  132. {$setc TARGET_OS_IPHONE := TRUE}
  133. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  134. {$setc TARGET_OS_EMBEDDED := TRUE}
  135. {$elifc defined __arm64__ and __arm64__}
  136. {$setc TARGET_CPU_PPC := FALSE}
  137. {$setc TARGET_CPU_PPC64 := FALSE}
  138. {$setc TARGET_CPU_X86 := FALSE}
  139. {$setc TARGET_CPU_X86_64 := FALSE}
  140. {$setc TARGET_CPU_ARM := FALSE}
  141. {$setc TARGET_CPU_ARM64 := TRUE}
  142. { will require compiler define when/if other Apple devices with ARM cpus ship }
  143. {$setc TARGET_OS_MAC := FALSE}
  144. {$setc TARGET_OS_IPHONE := TRUE}
  145. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  146. {$setc TARGET_OS_EMBEDDED := TRUE}
  147. {$elsec}
  148. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
  149. {$endc}
  150. {$ifc defined __LP64__ and __LP64__ }
  151. {$setc TARGET_CPU_64 := TRUE}
  152. {$elsec}
  153. {$setc TARGET_CPU_64 := FALSE}
  154. {$endc}
  155. {$ifc defined FPC_BIG_ENDIAN}
  156. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  157. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  158. {$elifc defined FPC_LITTLE_ENDIAN}
  159. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  160. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  161. {$elsec}
  162. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  163. {$endc}
  164. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  165. {$setc CALL_NOT_IN_CARBON := FALSE}
  166. {$setc OLDROUTINENAMES := FALSE}
  167. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  168. {$setc OPAQUE_UPP_TYPES := TRUE}
  169. {$setc OTCARBONAPPLICATION := TRUE}
  170. {$setc OTKERNEL := FALSE}
  171. {$setc PM_USE_SESSION_APIS := TRUE}
  172. {$setc TARGET_API_MAC_CARBON := TRUE}
  173. {$setc TARGET_API_MAC_OS8 := FALSE}
  174. {$setc TARGET_API_MAC_OSX := TRUE}
  175. {$setc TARGET_CARBON := TRUE}
  176. {$setc TARGET_CPU_68K := FALSE}
  177. {$setc TARGET_CPU_MIPS := FALSE}
  178. {$setc TARGET_CPU_SPARC := FALSE}
  179. {$setc TARGET_OS_UNIX := FALSE}
  180. {$setc TARGET_OS_WIN32 := FALSE}
  181. {$setc TARGET_RT_MAC_68881 := FALSE}
  182. {$setc TARGET_RT_MAC_CFM := FALSE}
  183. {$setc TARGET_RT_MAC_MACHO := TRUE}
  184. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  185. {$setc TYPE_BOOL := FALSE}
  186. {$setc TYPE_EXTENDED := FALSE}
  187. {$setc TYPE_LONGLONG := TRUE}
  188. uses MacTypes, macgl;
  189. {$endc} {not MACOSALLINCLUDE}
  190. {$ifc TARGET_OS_MAC}
  191. {$ALIGN POWER}
  192. {***********************************************************}
  193. { Extensions }
  194. const
  195. GLU_EXT_object_space_tess = 1;
  196. const
  197. GLU_EXT_nurbs_tessellator = 1;
  198. { Boolean }
  199. const
  200. GLU_FALSE = 0;
  201. const
  202. GLU_TRUE = 1;
  203. { Version }
  204. {$definec GLU_VERSION_1_1 TRUE}
  205. {$definec GLU_VERSION_1_2 TRUE}
  206. {$definec GLU_VERSION_1_3 TRUE}
  207. { StringName }
  208. const
  209. GLU_VERSION = 100800;
  210. const
  211. GLU_EXTENSIONS = 100801;
  212. { ErrorCode }
  213. const
  214. GLU_INVALID_ENUM = 100900;
  215. const
  216. GLU_INVALID_VALUE = 100901;
  217. const
  218. GLU_OUT_OF_MEMORY = 100902;
  219. const
  220. GLU_INCOMPATIBLE_GL_VERSION = 100903;
  221. const
  222. GLU_INVALID_OPERATION = 100904;
  223. { NurbsDisplay }
  224. { GLU_FILL }
  225. const
  226. GLU_OUTLINE_POLYGON = 100240;
  227. const
  228. GLU_OUTLINE_PATCH = 100241;
  229. { NurbsCallback }
  230. const
  231. GLU_NURBS_ERROR = 100103;
  232. const
  233. GLU_ERROR = 100103;
  234. const
  235. GLU_NURBS_BEGIN = 100164;
  236. const
  237. GLU_NURBS_BEGIN_EXT = 100164;
  238. const
  239. GLU_NURBS_VERTEX = 100165;
  240. const
  241. GLU_NURBS_VERTEX_EXT = 100165;
  242. const
  243. GLU_NURBS_NORMAL = 100166;
  244. const
  245. GLU_NURBS_NORMAL_EXT = 100166;
  246. const
  247. GLU_NURBS_COLOR = 100167;
  248. const
  249. GLU_NURBS_COLOR_EXT = 100167;
  250. const
  251. GLU_NURBS_TEXTURE_COORD = 100168;
  252. const
  253. GLU_NURBS_TEX_COORD_EXT = 100168;
  254. const
  255. GLU_NURBS_END = 100169;
  256. const
  257. GLU_NURBS_END_EXT = 100169;
  258. const
  259. GLU_NURBS_BEGIN_DATA = 100170;
  260. const
  261. GLU_NURBS_BEGIN_DATA_EXT = 100170;
  262. const
  263. GLU_NURBS_VERTEX_DATA = 100171;
  264. const
  265. GLU_NURBS_VERTEX_DATA_EXT = 100171;
  266. const
  267. GLU_NURBS_NORMAL_DATA = 100172;
  268. const
  269. GLU_NURBS_NORMAL_DATA_EXT = 100172;
  270. const
  271. GLU_NURBS_COLOR_DATA = 100173;
  272. const
  273. GLU_NURBS_COLOR_DATA_EXT = 100173;
  274. const
  275. GLU_NURBS_TEXTURE_COORD_DATA = 100174;
  276. const
  277. GLU_NURBS_TEX_COORD_DATA_EXT = 100174;
  278. const
  279. GLU_NURBS_END_DATA = 100175;
  280. const
  281. GLU_NURBS_END_DATA_EXT = 100175;
  282. { NurbsError }
  283. const GLU_NURBS_ERROR1 = 100251; { spline order un-supported }
  284. const GLU_NURBS_ERROR2 = 100252; { too few knots }
  285. const GLU_NURBS_ERROR3 = 100253; { valid knot range is empty }
  286. const GLU_NURBS_ERROR4 = 100254; { decreasing knot sequence }
  287. const GLU_NURBS_ERROR5 = 100255; { knot multiplicity > spline order }
  288. const GLU_NURBS_ERROR6 = 100256; { endcurve() must follow bgncurve() }
  289. const GLU_NURBS_ERROR7 = 100257; { bgncurve() must precede endcurve() }
  290. const GLU_NURBS_ERROR8 = 100258; { ctrlarray or knot vector is NULL }
  291. const GLU_NURBS_ERROR9 = 100259; { can't draw pwlcurves }
  292. const GLU_NURBS_ERROR10 = 100260; { missing gluNurbsCurve() }
  293. const GLU_NURBS_ERROR11 = 100261; { missing gluNurbsSurface() }
  294. const GLU_NURBS_ERROR12 = 100262; { endtrim() must precede endsurface() }
  295. const GLU_NURBS_ERROR13 = 100263; { bgnsurface() must precede endsurface() }
  296. const GLU_NURBS_ERROR14 = 100264; { curve of improper type passed as trim curve }
  297. const GLU_NURBS_ERROR15 = 100265; { bgnsurface() must precede bgntrim() }
  298. const GLU_NURBS_ERROR16 = 100266; { endtrim() must follow bgntrim() }
  299. const GLU_NURBS_ERROR17 = 100267; { bgntrim() must precede endtrim()}
  300. const GLU_NURBS_ERROR18 = 100268; { invalid or missing trim curve}
  301. const GLU_NURBS_ERROR19 = 100269; { bgntrim() must precede pwlcurve() }
  302. const GLU_NURBS_ERROR20 = 100270; { pwlcurve referenced twice}
  303. const GLU_NURBS_ERROR21 = 100271; { pwlcurve and nurbscurve mixed }
  304. const GLU_NURBS_ERROR22 = 100272; { improper usage of trim data type }
  305. const GLU_NURBS_ERROR23 = 100273; { nurbscurve referenced twice }
  306. const GLU_NURBS_ERROR24 = 100274; { nurbscurve and pwlcurve mixed }
  307. const GLU_NURBS_ERROR25 = 100275; { nurbssurface referenced twice }
  308. const GLU_NURBS_ERROR26 = 100276; { invalid property }
  309. const GLU_NURBS_ERROR27 = 100277; { endsurface() must follow bgnsurface() }
  310. const GLU_NURBS_ERROR28 = 100278; { intersecting or misoriented trim curves }
  311. const GLU_NURBS_ERROR29 = 100279; { intersecting trim curves }
  312. const GLU_NURBS_ERROR30 = 100280; { UNUSED }
  313. const GLU_NURBS_ERROR31 = 100281; { unconnected trim curves }
  314. const GLU_NURBS_ERROR32 = 100282; { unknown knot error }
  315. const GLU_NURBS_ERROR33 = 100283; { negative vertex count encountered }
  316. const GLU_NURBS_ERROR34 = 100284; { negative byte-stride }
  317. const GLU_NURBS_ERROR35 = 100285; { unknown type descriptor }
  318. const GLU_NURBS_ERROR36 = 100286; { null control point reference }
  319. const GLU_NURBS_ERROR37 = 100287; { duplicate point on pwlcurve }
  320. { NurbsProperty }
  321. const
  322. GLU_AUTO_LOAD_MATRIX = 100200;
  323. const
  324. GLU_CULLING = 100201;
  325. const
  326. GLU_SAMPLING_TOLERANCE = 100203;
  327. const
  328. GLU_DISPLAY_MODE = 100204;
  329. const
  330. GLU_PARAMETRIC_TOLERANCE = 100202;
  331. const
  332. GLU_SAMPLING_METHOD = 100205;
  333. const
  334. GLU_U_STEP = 100206;
  335. const
  336. GLU_V_STEP = 100207;
  337. const
  338. GLU_NURBS_MODE = 100160;
  339. const
  340. GLU_NURBS_MODE_EXT = 100160;
  341. const
  342. GLU_NURBS_TESSELLATOR = 100161;
  343. const
  344. GLU_NURBS_TESSELLATOR_EXT = 100161;
  345. const
  346. GLU_NURBS_RENDERER = 100162;
  347. const
  348. GLU_NURBS_RENDERER_EXT = 100162;
  349. { NurbsSampling }
  350. const
  351. GLU_OBJECT_PARAMETRIC_ERROR = 100208;
  352. const
  353. GLU_OBJECT_PARAMETRIC_ERROR_EXT = 100208;
  354. const
  355. GLU_OBJECT_PATH_LENGTH = 100209;
  356. const
  357. GLU_OBJECT_PATH_LENGTH_EXT = 100209;
  358. const
  359. GLU_PATH_LENGTH = 100215;
  360. const
  361. GLU_PARAMETRIC_ERROR = 100216;
  362. const
  363. GLU_DOMAIN_DISTANCE = 100217;
  364. { NurbsTrim }
  365. const
  366. GLU_MAP1_TRIM_2 = 100210;
  367. const
  368. GLU_MAP1_TRIM_3 = 100211;
  369. { QuadricDrawStyle }
  370. const
  371. GLU_POINT = 100010;
  372. const
  373. GLU_LINE = 100011;
  374. const
  375. GLU_FILL = 100012;
  376. const
  377. GLU_SILHOUETTE = 100013;
  378. { QuadricCallback }
  379. { GLU_ERROR }
  380. { QuadricNormal }
  381. const
  382. GLU_SMOOTH = 100000;
  383. const
  384. GLU_FLAT = 100001;
  385. const
  386. GLU_NONE = 100002;
  387. { QuadricOrientation }
  388. const
  389. GLU_OUTSIDE = 100020;
  390. const
  391. GLU_INSIDE = 100021;
  392. { TessCallback }
  393. const
  394. GLU_TESS_BEGIN = 100100;
  395. const
  396. GLU_BEGIN = 100100;
  397. const
  398. GLU_TESS_VERTEX = 100101;
  399. const
  400. GLU_VERTEX = 100101;
  401. const
  402. GLU_TESS_END = 100102;
  403. const
  404. GLU_END = 100102;
  405. const
  406. GLU_TESS_ERROR = 100103;
  407. const
  408. GLU_TESS_EDGE_FLAG = 100104;
  409. const
  410. GLU_EDGE_FLAG = 100104;
  411. const
  412. GLU_TESS_COMBINE = 100105;
  413. const
  414. GLU_TESS_BEGIN_DATA = 100106;
  415. const
  416. GLU_TESS_VERTEX_DATA = 100107;
  417. const
  418. GLU_TESS_END_DATA = 100108;
  419. const
  420. GLU_TESS_ERROR_DATA = 100109;
  421. const
  422. GLU_TESS_EDGE_FLAG_DATA = 100110;
  423. const
  424. GLU_TESS_COMBINE_DATA = 100111;
  425. { TessContour }
  426. const
  427. GLU_CW = 100120;
  428. const
  429. GLU_CCW = 100121;
  430. const
  431. GLU_INTERIOR = 100122;
  432. const
  433. GLU_EXTERIOR = 100123;
  434. const
  435. GLU_UNKNOWN = 100124;
  436. { TessProperty }
  437. const
  438. GLU_TESS_WINDING_RULE = 100140;
  439. const
  440. GLU_TESS_BOUNDARY_ONLY = 100141;
  441. const
  442. GLU_TESS_TOLERANCE = 100142;
  443. { TessError }
  444. const
  445. GLU_TESS_ERROR1 = 100151;
  446. const
  447. GLU_TESS_ERROR2 = 100152;
  448. const
  449. GLU_TESS_ERROR3 = 100153;
  450. const
  451. GLU_TESS_ERROR4 = 100154;
  452. const
  453. GLU_TESS_ERROR5 = 100155;
  454. const
  455. GLU_TESS_ERROR6 = 100156;
  456. const
  457. GLU_TESS_ERROR7 = 100157;
  458. const
  459. GLU_TESS_ERROR8 = 100158;
  460. const
  461. GLU_TESS_MISSING_BEGIN_POLYGON = 100151;
  462. const
  463. GLU_TESS_MISSING_BEGIN_CONTOUR = 100152;
  464. const
  465. GLU_TESS_MISSING_END_POLYGON = 100153;
  466. const
  467. GLU_TESS_MISSING_END_CONTOUR = 100154;
  468. const
  469. GLU_TESS_COORD_TOO_LARGE = 100155;
  470. const
  471. GLU_TESS_NEED_COMBINE_CALLBACK = 100156;
  472. { TessWinding }
  473. const
  474. GLU_TESS_WINDING_ODD = 100130;
  475. const
  476. GLU_TESS_WINDING_NONZERO = 100131;
  477. const
  478. GLU_TESS_WINDING_POSITIVE = 100132;
  479. const
  480. GLU_TESS_WINDING_NEGATIVE = 100133;
  481. const
  482. GLU_TESS_WINDING_ABS_GEQ_TWO = 100134;
  483. {***********************************************************}
  484. { Same as in opengl FPC package }
  485. type
  486. GLUnurbs = record end;
  487. PGLUnurbs = ^GLUnurbs;
  488. GLUquadric = record end;
  489. PGLUquadric = ^GLUquadric;
  490. GLUtesselator = record end;
  491. PGLUtesselator = ^GLUtesselator;
  492. GLUnurbsObj = GLUnurbs;
  493. PGLUnurbsObj = PGLUnurbs;
  494. GLUquadricObj = GLUquadric;
  495. PGLUquadricObj = PGLUquadric;
  496. GLUtesselatorObj = GLUtesselator;
  497. PGLUtesselatorObj = PGLUtesselator;
  498. GLUtriangulatorObj = GLUtesselator;
  499. PGLUtriangulatorObj = PGLUtesselator;
  500. const GLU_TESS_MAX_COORD = 1.0e150;
  501. procedure gluBeginCurve( nurb: PGLUnurbs ); external name '_gluBeginCurve';
  502. procedure gluBeginPolygon( tess: PGLUtesselator ); external name '_gluBeginPolygon';
  503. procedure gluBeginSurface( nurb: PGLUnurbs ); external name '_gluBeginSurface';
  504. procedure gluBeginTrim( nurb: PGLUnurbs ); external name '_gluBeginTrim';
  505. function gluBuild1DMipmapLevels( target: GLenum; internalFormat: GLint; width: GLsizei; format: GLenum; typ: GLenum; level: GLint; base: GLint; max: GLint; data: {const} UnivPtr ): GLint; external name '_gluBuild1DMipmapLevels';
  506. function gluBuild1DMipmaps( target: GLenum; internalFormat: GLint; width: GLsizei; format: GLenum; typ: GLenum; data: {const} UnivPtr ): GLint; external name '_gluBuild1DMipmaps';
  507. function gluBuild2DMipmapLevels( target: GLenum; internalFormat: GLint; width: GLsizei; height: GLsizei; format: GLenum; typ: GLenum; level: GLint; base: GLint; max: GLint; data: {const} UnivPtr ): GLint; external name '_gluBuild2DMipmapLevels';
  508. function gluBuild2DMipmaps( target: GLenum; internalFormat: GLint; width: GLsizei; height: GLsizei; format: GLenum; typ: GLenum; data: {const} UnivPtr ): GLint; external name '_gluBuild2DMipmaps';
  509. function gluBuild3DMipmapLevels( target: GLenum; internalFormat: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; typ: GLenum; level: GLint; base: GLint; max: GLint; data: {const} UnivPtr ): GLint; external name '_gluBuild3DMipmapLevels';
  510. function gluBuild3DMipmaps( target: GLenum; internalFormat: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; typ: GLenum; data: {const} UnivPtr ): GLint; external name '_gluBuild3DMipmaps';
  511. function gluCheckExtension( const extName: PChar; const extString: PChar ): GLboolean; external name '_gluCheckExtension';
  512. procedure gluCylinder( quad: PGLUquadric; base: GLdouble; top: GLdouble; height: GLdouble; slices: GLint; stacks: GLint ); external name '_gluCylinder';
  513. procedure gluDeleteNurbsRenderer( nurb: PGLUnurbs ); external name '_gluDeleteNurbsRenderer';
  514. procedure gluDeleteQuadric( quad: PGLUquadric ); external name '_gluDeleteQuadric';
  515. procedure gluDeleteTess( tess: PGLUtesselator ); external name '_gluDeleteTess';
  516. procedure gluDisk( quad: PGLUquadric; inner: GLdouble; outer: GLdouble; slices: GLint; loops: GLint ); external name '_gluDisk';
  517. procedure gluEndCurve( nurb: PGLUnurbs ); external name '_gluEndCurve';
  518. procedure gluEndPolygon( tess: PGLUtesselator ); external name '_gluEndPolygon';
  519. procedure gluEndSurface( nurb: PGLUnurbs ); external name '_gluEndSurface';
  520. procedure gluEndTrim( nurb: PGLUnurbs ); external name '_gluEndTrim';
  521. function gluErrorString( error: GLenum ): PChar; external name '_gluErrorString';
  522. procedure gluGetNurbsProperty( nurb: pGLUnurbs; property: GLenum; data: PGLfloat ); external name '_gluGetNurbsProperty';
  523. function gluGetString( name: GLenum ): PChar; external name '_gluGetString';
  524. procedure gluGetTessProperty( tess: PGLUtesselator; which: GLenum; data: PGLdouble ); external name '_gluGetTessProperty';
  525. procedure gluLoadSamplingMatrices( nurb: PGLUnurbs; const model: PGLfloat; const perspective: PGLfloat; const view: PGLint ); external name '_gluLoadSamplingMatrices';
  526. procedure gluLookAt( eyeX: GLdouble; eyeY: GLdouble; eyeZ: GLdouble; centerX: GLdouble; centerY: GLdouble; centerZ: GLdouble; upX: GLdouble; upY: GLdouble; upZ: GLdouble ); external name '_gluLookAt';
  527. function gluNewNurbsRenderer: PGLUnurbs; external name '_gluNewNurbsRenderer';
  528. function gluNewQuadric: PGLUquadric; external name '_gluNewQuadric';
  529. function gluNewTess: PGLUtesselator; external name '_gluNewTess';
  530. procedure gluNextContour( tess: PGLUtesselator; typ: GLenum ); external name '_gluNextContour';
  531. type
  532. GLUCallBackFunc = procedure;
  533. procedure gluNurbsCallback(nurb : PGLUnurbs; which : GLenum; CallBackFunc : GLUCallBackFunc); external name '_gluNurbsCallback';
  534. procedure gluNurbsCallbackData( nurb: PGLUnurbs; userData: UnivPtr ); external name '_gluNurbsCallbackData';
  535. procedure gluNurbsCallbackDataEXT( nurb: PGLUnurbs; userData: UnivPtr ); external name '_gluNurbsCallbackDataEXT';
  536. procedure gluNurbsCurve( nurb: PGLUnurbs; knotCount: GLint; knots: PGLfloat; stride: GLint; control: PGLfloat; order: GLint; typ: GLenum ); external name '_gluNurbsCurve';
  537. procedure gluNurbsProperty( nurb: PGLUnurbs; property: GLenum; value: GLfloat ); external name '_gluNurbsProperty';
  538. procedure gluNurbsSurface( nurb: PGLUnurbs; sKnotCount: GLint; sKnots: PGLfloat; tKnotCount: GLint; tKnots: PGLfloat; sStride: GLint; tStride: GLint; control: PGLfloat; sOrder: GLint; tOrder: GLint; typ: GLenum ); external name '_gluNurbsSurface';
  539. procedure gluOrtho2D( left: GLdouble; right: GLdouble; bottom: GLdouble; top: GLdouble ); external name '_gluOrtho2D';
  540. procedure gluPartialDisk( quad: PGLUquadric; inner: GLdouble; outer: GLdouble; slices: GLint; loops: GLint; start: GLdouble; sweep: GLdouble ); external name '_gluPartialDisk';
  541. procedure gluPerspective( fovy: GLdouble; aspect: GLdouble; zNear: GLdouble; zFar: GLdouble ); external name '_gluPerspective';
  542. procedure gluPickMatrix( x: GLdouble; y: GLdouble; delX: GLdouble; delY: GLdouble; viewport: PGLint ); external name '_gluPickMatrix';
  543. function gluProject( objX: GLdouble; objY: GLdouble; objZ: GLdouble; const model: PGLdouble; const proj: PGLdouble; const view: PGLint; winX: PGLdouble; winY: PGLdouble; winZ: PGLdouble ): GLint; external name '_gluProject';
  544. procedure gluPwlCurve( nurb: PGLUnurbs; count: GLint; data: PGLfloat; stride: GLint; typ: GLenum ); external name '_gluPwlCurve';
  545. procedure gluQuadricCallback(quad : PGLUquadric; which : GLenum; CallBackFunc : GLUCallBackFunc); external name '_gluQuadricCallback';
  546. procedure gluQuadricDrawStyle( quad: PGLUquadric; draw: GLenum ); external name '_gluQuadricDrawStyle';
  547. procedure gluQuadricNormals( quad: PGLUquadric; normal: GLenum ); external name '_gluQuadricNormals';
  548. procedure gluQuadricOrientation( quad: PGLUquadric; orientation: GLenum ); external name '_gluQuadricOrientation';
  549. procedure gluQuadricTexture( quad: PGLUquadric; texture: GLboolean ); external name '_gluQuadricTexture';
  550. function gluScaleImage( format: GLenum; wIn: GLsizei; hIn: GLsizei; typeIn: GLenum; dataIn: {const} UnivPtr; wOut: GLsizei; hOut: GLsizei; typeOut: GLenum; dataOut: UnivPtr ): GLint; external name '_gluScaleImage';
  551. procedure gluSphere( quad: PGLUquadric; radius: GLdouble; slices: GLint; stacks: GLint ); external name '_gluSphere';
  552. procedure gluTessBeginContour( tess: PGLUtesselator ); external name '_gluTessBeginContour';
  553. procedure gluTessBeginPolygon( tess: PGLUtesselator; data: UnivPtr ); external name '_gluTessBeginPolygon';
  554. procedure gluTessCallback(tess : PGLUtesselator; which : GLenum; CallBackFunc : GLUCallBackFunc); external name '_gluTessCallback';
  555. procedure gluTessEndContour( tess: PGLUtesselator ); external name '_gluTessEndContour';
  556. procedure gluTessEndPolygon( tess: PGLUtesselator ); external name '_gluTessEndPolygon';
  557. procedure gluTessNormal( tess: PGLUtesselator; valueX: GLdouble; valueY: GLdouble; valueZ: GLdouble ); external name '_gluTessNormal';
  558. procedure gluTessProperty( tess: PGLUtesselator; which: GLenum; data: GLdouble ); external name '_gluTessProperty';
  559. procedure gluTessVertex( tess: PGLUtesselator; location: PGLdouble; data: UnivPtr ); external name '_gluTessVertex';
  560. function gluUnProject( winX: GLdouble; winY: GLdouble; winZ: GLdouble; const model: PGLdouble; const proj: PGLdouble; const view: PGLint; objX: PGLdouble; objY: PGLdouble; objZ: PGLdouble ): GLint; external name '_gluUnProject';
  561. function gluUnProject4( winX: GLdouble; winY: GLdouble; winZ: GLdouble; clipW: GLdouble; const model: PGLdouble; const proj: PGLdouble; const view: PGLint; nearPlane: GLdouble; farPlane: GLdouble; objX: PGLdouble; objY: PGLdouble; objZ: PGLdouble; objW: PGLdouble ): GLint; external name '_gluUnProject4';
  562. {$endc} {TARGET_OS_MAC}
  563. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  564. end.
  565. {$endc} {not MACOSALLINCLUDE}