glut.pp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. {
  2. $Id$
  3. Translation of the Mesa GLUT headers for FreePascal
  4. Linux Version, Copyright (C) 1999 Sebastian Guenther
  5. Mesa 3-D graphics library
  6. Version: 3.0
  7. Copyright (C) 1995-1998 Brian Paul
  8. This library is free software; you can redistribute it and/or
  9. modify it under the terms of the GNU Library General Public
  10. License as published by the Free Software Foundation; either
  11. version 2 of the License, or (at your option) any later version.
  12. This library is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. Library General Public License for more details.
  16. You should have received a copy of the GNU Library General Public
  17. License along with this library; if not, write to the Free
  18. Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. }
  20. {$MODE delphi}
  21. unit GLUT;
  22. interface
  23. {$MACRO ON}
  24. {$IFDEF Linux}
  25. {$DEFINE gldecl := cdecl;}
  26. {$DEFINE extdecl := cdecl;}
  27. uses GL;
  28. {$ELSE}
  29. {$MESSAGE Unsupported platform.}
  30. {$ENDIF}
  31. function InitGLUTFromLibrary(libname: PChar): Boolean;
  32. // determines automatically which library to use:
  33. function InitGLUT: Boolean;
  34. var
  35. GLUTDumpUnresolvedFunctions,
  36. GLUTInitialized: Boolean;
  37. const
  38. // Display mode bit masks
  39. GLUT_RGB = 0;
  40. GLUT_RGBA = GLUT_RGB;
  41. GLUT_INDEX = 1;
  42. GLUT_SINGLE = 0;
  43. GLUT_DOUBLE = 2;
  44. GLUT_ACCUM = 4;
  45. GLUT_ALPHA = 8;
  46. GLUT_DEPTH = 16;
  47. GLUT_STENCIL = 32;
  48. GLUT_MULTISAMPLE = 128;
  49. GLUT_STEREO = 256;
  50. GLUT_LUMINANCE = 512;
  51. // Mouse buttons
  52. GLUT_LEFT_BUTTON = 0;
  53. GLUT_MIDDLE_BUTTON = 1;
  54. GLUT_RIGHT_BUTTON = 2;
  55. // Mouse button state
  56. GLUT_DOWN = 0;
  57. GLUT_UP = 1;
  58. // Keys ###
  59. // Enter / exit state
  60. GLUT_LEFT = 0;
  61. GLUT_ENTERED = 1;
  62. // Menu usage state
  63. GLUT_MENU_NOT_IN_USE = 0;
  64. GLUT_MENU_IN_USE = 1;
  65. // Visibility state
  66. GLUT_NOT_VISIBLE = 0;
  67. GLUT_VISIBLE = 1;
  68. // Window status state
  69. GLUT_HIDDEN = 0;
  70. GLUT_FULLY_RETAINED = 1;
  71. GLUT_PARTIALLY_RETAINED = 2;
  72. GLUT_FULLY_COVERED = 3;
  73. // Color index component selection values
  74. GLUT_RED = 0;
  75. GLUT_GREEN = 1;
  76. GLUT_BLUE = 2;
  77. // Layers for use
  78. GLUT_NORMAL = 0;
  79. GLUT_OVERLAY = 1;
  80. // Bitmap stuff###
  81. // glutGet parameters
  82. GLUT_WINDOW_X = 100;
  83. GLUT_WINDOW_Y = 101;
  84. GLUT_WINDOW_WIDTH = 102;
  85. GLUT_WINDOW_HEIGHT = 103;
  86. GLUT_WINDOW_BUFFER_SIZE = 104;
  87. GLUT_WINDOW_STENCIL_SIZE = 105;
  88. GLUT_WINDOW_DEPTH_SIZE = 106;
  89. GLUT_WINDOW_RED_SIZE = 107;
  90. GLUT_WINDOW_GREEN_SIZE = 108;
  91. GLUT_WINDOW_BLUE_SIZE = 109;
  92. GLUT_WINDOW_ALPHA_SIZE = 110;
  93. GLUT_WINDOW_ACCUM_RED_SIZE = 111;
  94. GLUT_WINDOW_ACCUM_GREEN_SIZE = 112;
  95. GLUT_WINDOW_ACCUM_BLUE_SIZE = 113;
  96. GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114;
  97. GLUT_WINDOW_DOUBLEBUFFER = 115;
  98. GLUT_WINDOW_RGBA = 116;
  99. GLUT_WINDOW_PARENT = 117;
  100. GLUT_WINDOW_NUM_CHILDREN = 118;
  101. GLUT_WINDOW_COLORMAP_SIZE = 119;
  102. GLUT_WINDOW_NUM_SAMPLES = 120;
  103. GLUT_WINDOW_STEREO = 121;
  104. GLUT_WINDOW_CURSOR = 122;
  105. GLUT_SCREEN_WIDTH = 200;
  106. GLUT_SCREEN_HEIGHT = 201;
  107. GLUT_SCREEN_WIDTH_MM = 202;
  108. GLUT_SCREEN_HEIGHT_MM = 203;
  109. GLUT_MENU_NUM_ITEMS = 300;
  110. GLUT_DISPLAY_MODE_POSSIBLE = 400;
  111. GLUT_INIT_WINDOW_X = 500;
  112. GLUT_INIT_WINDOW_Y = 501;
  113. GLUT_INIT_WINDOW_WIDTH = 502;
  114. GLUT_INIT_WINDOW_HEIGHT = 503;
  115. GLUT_INIT_DISPLAY_MODE = 504;
  116. GLUT_ELAPSED_TIME = 700;
  117. GLUT_WINDOW_FORMAT_ID = 123;
  118. // glutDeviceGet parameters
  119. GLUT_HAS_KEYBOARD = 600;
  120. GLUT_HAS_MOUSE = 601;
  121. GLUT_HAS_SPACEBALL = 602;
  122. GLUT_HAS_DIAL_AND_BUTTON_BOX = 603;
  123. GLUT_HAS_TABLET = 604;
  124. GLUT_NUM_MOUSE_BUTTONS = 605;
  125. GLUT_NUM_SPACEBALL_BUTTONS = 606;
  126. GLUT_NUM_BUTTON_BOX_BUTTONS = 607;
  127. GLUT_NUM_DIALS = 608;
  128. GLUT_NUM_TABLET_BUTTONS = 609;
  129. GLUT_DEVICE_IGNORE_KEY_REPEAT = 610;
  130. GLUT_DEVICE_KEY_REPEAT = 611;
  131. GLUT_HAS_JOYSTICK = 612;
  132. GLUT_OWNS_JOYSTICK = 613;
  133. GLUT_JOYSTICK_BUTTONS = 614;
  134. GLUT_JOYSTICK_AXES = 615;
  135. GLUT_JOYSTICK_POLL_RATE = 616;
  136. // glutLayerGet parameters
  137. GLUT_OVERLAY_POSSIBLE = 800;
  138. GLUT_LAYER_IN_USE = 801;
  139. GLUT_HAS_OVERLAY = 802;
  140. GLUT_TRANSPARENT_INDEX = 803;
  141. GLUT_NORMAL_DAMAGED = 804;
  142. GLUT_OVERLAY_DAMAGED = 805;
  143. // glutVideoResizeGet parameters
  144. GLUT_VIDEO_RESIZE_POSSIBLE = 900;
  145. GLUT_VIDEO_RESIZE_IN_USE = 901;
  146. GLUT_VIDEO_RESIZE_X_DELTA = 902;
  147. GLUT_VIDEO_RESIZE_Y_DELTA = 903;
  148. GLUT_VIDEO_RESIZE_WIDTH_DELTA = 904;
  149. GLUT_VIDEO_RESIZE_HEIGHT_DELTA= 905;
  150. GLUT_VIDEO_RESIZE_X = 906;
  151. GLUT_VIDEO_RESIZE_Y = 907;
  152. GLUT_VIDEO_RESIZE_WIDTH = 908;
  153. GLUT_VIDEO_RESIZE_HEIGHT = 909;
  154. // glutGetModifiers return mask
  155. GLUT_ACTIVE_SHIFT = 1;
  156. GLUT_ACTIVE_CTRL = 2;
  157. GLUT_ACTIVE_ALT = 4;
  158. // Cursor stuff ###
  159. // GLUT window callback sub-API
  160. type
  161. TGlutDisplayFunc = procedure; extdecl
  162. TGlutReshapeFunc = procedure(width, height: Integer); extdecl
  163. TGlutTimerFunc = procedure(value: Integer); extdecl
  164. TGlutKeyboardFunc = procedure(key: char;x,y:Integer); extdecl
  165. TGlutIdleFunc = procedure; extdecl
  166. TGlutVisibilityFunc = procedure(state:Integer); extdecl
  167. // GLUT game mode sub-API
  168. {$ifdef GLUT_GAME}
  169. // glutGameModeGet
  170. const
  171. GLUT_GAME_MODE_ACTIVE = 0;
  172. GLUT_GAME_MODE_POSSIBLE = 1;
  173. GLUT_GAME_MODE_WIDTH = 2;
  174. GLUT_GAME_MODE_HEIGHT = 3;
  175. GLUT_GAME_MODE_PIXEL_DEPTH = 4;
  176. GLUT_GAME_MODE_REFRESH_RATE = 5;
  177. GLUT_GAME_MODE_DISPLAY_CHANGED= 6;
  178. {$endif GLUT_GAME}
  179. var
  180. // GLUT initialization sub-API
  181. glutInit: procedure(argcp: PInteger; argv: PPChar); cdecl;
  182. glutInitDisplayMode: procedure(mode: LongWord); cdecl;
  183. glutInitDisplayString: procedure(AString: PChar); cdecl;
  184. glutInitWindowPosition: procedure(x, y: Integer); cdecl;
  185. glutInitWindowSize: procedure(width, height: Integer); cdecl;
  186. glutMainLoop: procedure; cdecl;
  187. // GLUT window sub-API
  188. glutCreateWindow: function(title: PChar): Integer; cdecl;
  189. glutCreateSubWindow: function(win, x, y, width, height: Integer): Integer; cdecl;
  190. glutDestroyWindow: procedure(win: Integer); cdecl;
  191. glutPostRedisplay: procedure; cdecl;
  192. glutPostWindowRedisplay: procedure(win: Integer); cdecl;
  193. glutSwapBuffers: procedure; cdecl;
  194. glutGetWindow: function: Integer; cdecl;
  195. glutSetWindow: procedure(win: Integer); cdecl;
  196. glutSetWindowTitle: procedure(title: PChar); cdecl;
  197. glutSetIconTitle: procedure(title: PChar); cdecl;
  198. glutPositionWindow: procedure(x, y: Integer); cdecl;
  199. glutReshapeWindow: procedure(width, height: Integer); cdecl;
  200. glutPopWindow: procedure; cdecl;
  201. glutPushWindow: procedure; cdecl;
  202. glutIconifyWindow: procedure; cdecl;
  203. glutShowWindow: procedure; cdecl;
  204. glutHideWindow: procedure; cdecl;
  205. glutFullScreen: procedure; cdecl;
  206. glutSetCursor: procedure(cursor: Integer); cdecl;
  207. glutWarpPointer: procedure(x, y: Integer); cdecl;
  208. //overlays ###
  209. //menus ###
  210. // GLUT window callback sub-API
  211. glutDisplayFunc: procedure(func: TGlutDisplayFunc); cdecl;
  212. glutReshapeFunc: procedure(func: TGlutReshapeFunc); cdecl;
  213. glutTimerFunc: procedure(millis: LongWord; func: TGlutTimerFunc; value: longint); cdecl;
  214. glutKeyboardFunc : procedure(func: TGlutKeyboardFunc); cdecl;
  215. glutIdleFunc : procedure(func: TGlutIdleFunc); cdecl;
  216. glutVisibilityFunc : procedure(func: TGlutVisibilityFunc); cdecl;
  217. // GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK * func)(void));
  218. // GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK * func)(int width, int height));
  219. // GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
  220. // GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
  221. // GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  222. // GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  223. // GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK * func)(int state));
  224. // GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK * func)(int state));
  225. // GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK * func)(void));
  226. // GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK * func)(int value), int value);
  227. // GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK * func)(int state));
  228. // GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
  229. // GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
  230. // GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
  231. // GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK * func)(int button, int state));
  232. // GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK * func)(int button, int state));
  233. // GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK * func)(int dial, int value));
  234. // GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  235. // GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
  236. // GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK * func)(int status, int x, int y));
  237. // GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK * func)(void));
  238. // GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK * func)(int state));
  239. // GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
  240. // GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
  241. // GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK * func)(unsigned int buttonMask, int x, int y, int z), int pollInterval)
  242. // GLUT color index sub-API
  243. glutSetColor: procedure(index: Integer; red, green, blue: Single); cdecl;
  244. glutGetColor: function(ndx, component: Integer): Single; cdecl;
  245. glutCopyColormap: procedure(win: Integer); cdecl;
  246. // GLUT state retrieval sub-API
  247. glutGet: function(AType: GLEnum): Integer; cdecl;
  248. glutDeviceGet: function(AType: GLEnum): Integer; cdecl;
  249. glutExtensionSupported: function(name: PChar): Integer; cdecl;
  250. glutGetModifiers: function: Integer; cdecl;
  251. glutLayerGet: function(AType: GLEnum): Integer; cdecl;
  252. // fonts ###
  253. // pre-built models ###
  254. // video resize ###
  255. // debugging ###
  256. // device control ###
  257. // GLUT game mode sub-API
  258. {$ifdef GLUT_GAME}
  259. glutGameModeString: procedure(AString: PChar); cdecl;
  260. glutEnterGameMode: function: Integer; cdecl;
  261. glutLeaveGameMode: procedure; cdecl;
  262. glutGameModeGet: function(mode: GLEnum): Integer; cdecl;
  263. {$endif GLUT_GAME}
  264. implementation
  265. {$LINKLIB Xmu}
  266. function dlopen(AFile: PChar; mode: LongInt): Pointer; external 'dl';
  267. function dlclose(handle: Pointer): LongInt; external 'dl';
  268. function dlsym(handle: Pointer; name: PChar): Pointer; external 'dl';
  269. function LoadLibrary(name: PChar): Pointer;
  270. begin
  271. Result := dlopen(name, $101 {RTLD_GLOBAL or RTLD_LAZY});
  272. end;
  273. function GetProc(handle: Pointer; name: PChar): Pointer;
  274. begin
  275. Result := dlsym(handle, name);
  276. if (Result = nil) and GLUTDumpUnresolvedFunctions then
  277. WriteLn('Unresolved: ', name);
  278. end;
  279. var
  280. libGLUT: Pointer;
  281. function InitGLUTFromLibrary(libname: PChar): Boolean;
  282. begin
  283. Result := False;
  284. libGLUT := LoadLibrary(libname);
  285. if not Assigned(libGLUT) then exit;
  286. // GLUT initialization sub-API
  287. glutInit := GetProc(libglut, 'glutInit');
  288. glutInitDisplayMode := GetProc(libglut, 'glutInitDisplayMode');
  289. glutInitDisplayString := GetProc(libglut, 'glutInitDisplayString');
  290. glutInitWindowPosition := GetProc(libglut, 'glutInitWindowPosition');
  291. glutInitWindowSize := GetProc(libglut, 'glutInitWindowSize');
  292. glutMainLoop := GetProc(libglut, 'glutMainLoop');
  293. // GLUT window sub-API
  294. glutCreateWindow := GetProc(libglut, 'glutCreateWindow');
  295. glutCreateSubWindow := GetProc(libglut, 'glutCreateSubWindow');
  296. glutDestroyWindow := GetProc(libglut, 'glutDestroyWindow');
  297. glutPostRedisplay := GetProc(libglut, 'glutPostRedisplay');
  298. glutPostWindowRedisplay := GetProc(libglut, 'glutPostWindowRedisplay');
  299. glutSwapBuffers := GetProc(libglut, 'glutSwapBuffers');
  300. glutGetWindow := GetProc(libglut, 'glutGetWindow');
  301. glutSetWindow := GetProc(libglut, 'glutSetWindow');
  302. glutSetWindowTitle := GetProc(libglut, 'glutSetWindowTitle');
  303. glutSetIconTitle := GetProc(libglut, 'glutSetIconTitle');
  304. glutPositionWindow := GetProc(libglut, 'glutPositionWindow');
  305. glutReshapeWindow := GetProc(libglut, 'glutReshapeWindow');
  306. glutPopWindow := GetProc(libglut, 'glutPopWindow');
  307. glutPushWindow := GetProc(libglut, 'glutPushWindow');
  308. glutIconifyWindow := GetProc(libglut, 'glutIconifyWindow');
  309. glutShowWindow := GetProc(libglut, 'glutShowWindow');
  310. glutHideWindow := GetProc(libglut, 'glutHideWindow');
  311. glutFullScreen := GetProc(libglut, 'glutFullScreen');
  312. glutSetCursor := GetProc(libglut, 'glutSetCursor');
  313. glutWarpPointer := GetProc(libglut, 'glutWarpPointer');
  314. //overlays ###
  315. //menus ###
  316. // GLUT window callback sub-API
  317. glutDisplayFunc := GetProc(libglut, 'glutDisplayFunc');
  318. glutReshapeFunc := GetProc(libglut, 'glutReshapeFunc');
  319. glutTimerFunc := GetProc(libglut, 'glutTimerFunc');
  320. glutKeyboardFunc := GetProc(libglut, 'glutKeyboardFunc');
  321. glutIdleFunc := GetProc(libglut, 'glutIdleFunc');
  322. glutVisibilityFunc := GetProc(libglut, 'glutVisibilityFunc');
  323. // GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK * func)(void));
  324. // GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK * func)(int width, int height));
  325. // GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
  326. // GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
  327. // GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  328. // GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  329. // GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK * func)(int state));
  330. // GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK * func)(int state));
  331. // GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK * func)(void));
  332. // GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK * func)(int value), int value);
  333. // GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK * func)(int state));
  334. // GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
  335. // GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
  336. // GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
  337. // GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK * func)(int button, int state));
  338. // GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK * func)(int button, int state));
  339. // GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK * func)(int dial, int value));
  340. // GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  341. // GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
  342. // GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK * func)(int status, int x, int y));
  343. // GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK * func)(void));
  344. // GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK * func)(int state));
  345. // GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
  346. // GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
  347. // GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK * func)(unsigned int buttonMask, int x, int y, int z), int pollInterval)
  348. // GLUT color index sub-API
  349. glutSetColor := GetProc(libglut, 'glutSetColor');
  350. glutGetColor := GetProc(libglut, 'glutGetColor');
  351. glutCopyColormap := GetProc(libglut, 'glutCopyColormap');
  352. // GLUT state retrieval sub-API
  353. glutGet := GetProc(libglut, 'glutGet');
  354. glutDeviceGet := GetProc(libglut, 'glutDeviceGet');
  355. glutExtensionSupported := GetProc(libglut, 'glutExtensionSupported');
  356. glutGetModifiers := GetProc(libglut, 'glutGetModifiers');
  357. glutLayerGet := GetProc(libglut, 'glutLayerGet');
  358. // fonts ###
  359. // pre-built models ###
  360. // video resize ###
  361. // debugging ###
  362. // device control ###
  363. // GLUT game mode sub-API
  364. {$ifdef GLUT_GAME}
  365. glutGameModeString := GetProc(libglut, 'glutGameModeString');
  366. glutEnterGameMode := GetProc(libglut, 'glutEnterGameMode');
  367. glutLeaveGameMode := GetProc(libglut, 'glutLeaveGameMode');
  368. glutGameModeGet := GetProc(libglut, 'glutGameModeGet');
  369. {$endif GLUT_GAME}
  370. GLUTInitialized := True;
  371. Result := True;
  372. end;
  373. function InitGLUT: Boolean;
  374. begin
  375. Result := InitGLUTFromLibrary('libglut.so') or
  376. InitGLUTFromLibrary('libglut.so.3');
  377. end;
  378. initialization
  379. InitGLUT;
  380. finalization
  381. if Assigned(libGLUT) then dlClose(libGLUT);
  382. end.
  383. {
  384. $Log$
  385. Revision 1.5 2000-10-01 22:17:59 peter
  386. * new bounce demo
  387. Revision 1.4.2.1 2000/10/01 22:12:28 peter
  388. * new demo
  389. }