12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102 |
- { Adaption of the delphi3d.net OpenGL units to FreePascal
- Sebastian Guenther ([email protected]) in 2002
- These units are free to use
- 19.6.07 : Added GLUT_EXCLUSIVE_FPUMODE to allow for
- unsafe glut-libs, that don't handle FPU-exceptions in
- a compatible way. Jan Bruns ([email protected])
- }
- {$MACRO ON}
- {$MODE Delphi}
- {$IFDEF Windows}
- {$DEFINE extdecl := stdcall}
- {$ELSE}
- {$DEFINE extdecl := cdecl}
- {$ENDIF}
- {$IFDEF CPU86}
- {$DEFINE GLUT_EXCLUSIVE_FPUMODE}
- {$DEFINE mode_inline := register} //inine or local-calling
- {$ENDIF}
- {$IFDEF MORPHOS}
- {$INLINE ON}
- {$DEFINE GLUT_UNIT}
- {$ENDIF}
- unit Glut;
- // Copyright (c) Mark J. Kilgard, 1994, 1995, 1996. */
- (* This program is freely distributable without licensing fees and is
- provided without guarantee or warrantee expressed or implied. This
- program is -not- in the public domain. *)
- {******************************************************************************}
- { Converted to Delphi by Tom Nuydens ([email protected]) }
- { Contributions by Igor Karpov ([email protected]) }
- { For the latest updates, visit Delphi3D: http://www.delphi3d.net }
- {******************************************************************************}
- interface
- uses
- SysUtils,
- {$IFDEF Windows}
- Windows, dynlibs,
- {$ELSE}
- {$IFDEF MORPHOS}
- TinyGL,
- {$ELSE}
- dynlibs,
- {$ENDIF}
- {$ENDIF}
- {$IFDEF GLUT_EXCLUSIVE_FPUMODE}
- math,
- {$ENDIF}
- GL;
- type
- PInteger = ^Integer;
- PPChar = ^PChar;
- TGlutVoidCallback = procedure; cdecl;
- TGlut1IntCallback = procedure(value: Integer); cdecl;
- TGlut2IntCallback = procedure(v1, v2: Integer); cdecl;
- TGlut3IntCallback = procedure(v1, v2, v3: Integer); cdecl;
- TGlut4IntCallback = procedure(v1, v2, v3, v4: Integer); cdecl;
- TGlut1Char2IntCallback = procedure(c: Byte; v1, v2: Integer); cdecl;
- TGlut1UInt3IntCallback = procedure(u: Cardinal; v1, v2, v3: Integer); cdecl;
- const
- GLUT_API_VERSION = 3;
- GLUT_XLIB_IMPLEMENTATION = 12;
- // Display mode bit masks.
- GLUT_RGB = 0;
- GLUT_RGBA = GLUT_RGB;
- GLUT_INDEX = 1;
- GLUT_SINGLE = 0;
- GLUT_DOUBLE = 2;
- GLUT_ACCUM = 4;
- GLUT_ALPHA = 8;
- GLUT_DEPTH = 16;
- GLUT_STENCIL = 32;
- GLUT_MULTISAMPLE = 128;
- GLUT_STEREO = 256;
- GLUT_LUMINANCE = 512;
- // Mouse buttons.
- GLUT_LEFT_BUTTON = 0;
- GLUT_MIDDLE_BUTTON = 1;
- GLUT_RIGHT_BUTTON = 2;
- // Mouse button state.
- GLUT_DOWN = 0;
- GLUT_UP = 1;
- // function keys
- GLUT_KEY_F1 = 1;
- GLUT_KEY_F2 = 2;
- GLUT_KEY_F3 = 3;
- GLUT_KEY_F4 = 4;
- GLUT_KEY_F5 = 5;
- GLUT_KEY_F6 = 6;
- GLUT_KEY_F7 = 7;
- GLUT_KEY_F8 = 8;
- GLUT_KEY_F9 = 9;
- GLUT_KEY_F10 = 10;
- GLUT_KEY_F11 = 11;
- GLUT_KEY_F12 = 12;
- // directional keys
- GLUT_KEY_LEFT = 100;
- GLUT_KEY_UP = 101;
- GLUT_KEY_RIGHT = 102;
- GLUT_KEY_DOWN = 103;
- GLUT_KEY_PAGE_UP = 104;
- GLUT_KEY_PAGE_DOWN = 105;
- GLUT_KEY_HOME = 106;
- GLUT_KEY_END = 107;
- GLUT_KEY_INSERT = 108;
- // Entry/exit state.
- GLUT_LEFT = 0;
- GLUT_ENTERED = 1;
- // Menu usage state.
- GLUT_MENU_NOT_IN_USE = 0;
- GLUT_MENU_IN_USE = 1;
- // Visibility state.
- GLUT_NOT_VISIBLE = 0;
- GLUT_VISIBLE = 1;
- // Window status state.
- GLUT_HIDDEN = 0;
- GLUT_FULLY_RETAINED = 1;
- GLUT_PARTIALLY_RETAINED = 2;
- GLUT_FULLY_COVERED = 3;
- // Color index component selection values.
- GLUT_RED = 0;
- GLUT_GREEN = 1;
- GLUT_BLUE = 2;
- // Layers for use.
- GLUT_NORMAL = 0;
- GLUT_OVERLAY = 1;
- {$ifdef Windows}
- // Stroke font constants (use these in GLUT program).
- GLUT_STROKE_ROMAN = Pointer(0);
- GLUT_STROKE_MONO_ROMAN = Pointer(1);
- // Bitmap font constants (use these in GLUT program).
- GLUT_BITMAP_9_BY_15 = Pointer(2);
- GLUT_BITMAP_8_BY_13 = Pointer(3);
- GLUT_BITMAP_TIMES_ROMAN_10 = Pointer(4);
- GLUT_BITMAP_TIMES_ROMAN_24 = Pointer(5);
- GLUT_BITMAP_HELVETICA_10 = Pointer(6);
- GLUT_BITMAP_HELVETICA_12 = Pointer(7);
- GLUT_BITMAP_HELVETICA_18 = Pointer(8);
- {$else Windows}
- var
- // Stroke font constants (use these in GLUT program).
- GLUT_STROKE_ROMAN : Pointer;
- GLUT_STROKE_MONO_ROMAN : Pointer;
- // Bitmap font constants (use these in GLUT program).
- GLUT_BITMAP_9_BY_15 : Pointer;
- GLUT_BITMAP_8_BY_13 : Pointer;
- GLUT_BITMAP_TIMES_ROMAN_10 : Pointer;
- GLUT_BITMAP_TIMES_ROMAN_24 : Pointer;
- GLUT_BITMAP_HELVETICA_10 : Pointer;
- GLUT_BITMAP_HELVETICA_12 : Pointer;
- GLUT_BITMAP_HELVETICA_18 : Pointer;
- const
- {$endif Windows}
- // glutGet parameters.
- GLUT_WINDOW_X = 100;
- GLUT_WINDOW_Y = 101;
- GLUT_WINDOW_WIDTH = 102;
- GLUT_WINDOW_HEIGHT = 103;
- GLUT_WINDOW_BUFFER_SIZE = 104;
- GLUT_WINDOW_STENCIL_SIZE = 105;
- GLUT_WINDOW_DEPTH_SIZE = 106;
- GLUT_WINDOW_RED_SIZE = 107;
- GLUT_WINDOW_GREEN_SIZE = 108;
- GLUT_WINDOW_BLUE_SIZE = 109;
- GLUT_WINDOW_ALPHA_SIZE = 110;
- GLUT_WINDOW_ACCUM_RED_SIZE = 111;
- GLUT_WINDOW_ACCUM_GREEN_SIZE = 112;
- GLUT_WINDOW_ACCUM_BLUE_SIZE = 113;
- GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114;
- GLUT_WINDOW_DOUBLEBUFFER = 115;
- GLUT_WINDOW_RGBA = 116;
- GLUT_WINDOW_PARENT = 117;
- GLUT_WINDOW_NUM_CHILDREN = 118;
- GLUT_WINDOW_COLORMAP_SIZE = 119;
- GLUT_WINDOW_NUM_SAMPLES = 120;
- GLUT_WINDOW_STEREO = 121;
- GLUT_WINDOW_CURSOR = 122;
- GLUT_SCREEN_WIDTH = 200;
- GLUT_SCREEN_HEIGHT = 201;
- GLUT_SCREEN_WIDTH_MM = 202;
- GLUT_SCREEN_HEIGHT_MM = 203;
- GLUT_MENU_NUM_ITEMS = 300;
- GLUT_DISPLAY_MODE_POSSIBLE = 400;
- GLUT_INIT_WINDOW_X = 500;
- GLUT_INIT_WINDOW_Y = 501;
- GLUT_INIT_WINDOW_WIDTH = 502;
- GLUT_INIT_WINDOW_HEIGHT = 503;
- GLUT_INIT_DISPLAY_MODE = 504;
- GLUT_ELAPSED_TIME = 700;
- GLUT_WINDOW_FORMAT_ID = 123;
- // glutDeviceGet parameters.
- GLUT_HAS_KEYBOARD = 600;
- GLUT_HAS_MOUSE = 601;
- GLUT_HAS_SPACEBALL = 602;
- GLUT_HAS_DIAL_AND_BUTTON_BOX = 603;
- GLUT_HAS_TABLET = 604;
- GLUT_NUM_MOUSE_BUTTONS = 605;
- GLUT_NUM_SPACEBALL_BUTTONS = 606;
- GLUT_NUM_BUTTON_BOX_BUTTONS = 607;
- GLUT_NUM_DIALS = 608;
- GLUT_NUM_TABLET_BUTTONS = 609;
- GLUT_DEVICE_IGNORE_KEY_REPEAT = 610;
- GLUT_DEVICE_KEY_REPEAT = 611;
- GLUT_HAS_JOYSTICK = 612;
- GLUT_OWNS_JOYSTICK = 613;
- GLUT_JOYSTICK_BUTTONS = 614;
- GLUT_JOYSTICK_AXES = 615;
- GLUT_JOYSTICK_POLL_RATE = 616;
- // glutLayerGet parameters.
- GLUT_OVERLAY_POSSIBLE = 800;
- GLUT_LAYER_IN_USE = 801;
- GLUT_HAS_OVERLAY = 802;
- GLUT_TRANSPARENT_INDEX = 803;
- GLUT_NORMAL_DAMAGED = 804;
- GLUT_OVERLAY_DAMAGED = 805;
- // glutVideoResizeGet parameters.
- GLUT_VIDEO_RESIZE_POSSIBLE = 900;
- GLUT_VIDEO_RESIZE_IN_USE = 901;
- GLUT_VIDEO_RESIZE_X_DELTA = 902;
- GLUT_VIDEO_RESIZE_Y_DELTA = 903;
- GLUT_VIDEO_RESIZE_WIDTH_DELTA = 904;
- GLUT_VIDEO_RESIZE_HEIGHT_DELTA = 905;
- GLUT_VIDEO_RESIZE_X = 906;
- GLUT_VIDEO_RESIZE_Y = 907;
- GLUT_VIDEO_RESIZE_WIDTH = 908;
- GLUT_VIDEO_RESIZE_HEIGHT = 909;
- // glutGetModifiers return mask.
- GLUT_ACTIVE_SHIFT = 1;
- GLUT_ACTIVE_CTRL = 2;
- GLUT_ACTIVE_ALT = 4;
- // glutSetCursor parameters.
- // Basic arrows.
- GLUT_CURSOR_RIGHT_ARROW = 0;
- GLUT_CURSOR_LEFT_ARROW = 1;
- // Symbolic cursor shapes.
- GLUT_CURSOR_INFO = 2;
- GLUT_CURSOR_DESTROY = 3;
- GLUT_CURSOR_HELP = 4;
- GLUT_CURSOR_CYCLE = 5;
- GLUT_CURSOR_SPRAY = 6;
- GLUT_CURSOR_WAIT = 7;
- GLUT_CURSOR_TEXT = 8;
- GLUT_CURSOR_CROSSHAIR = 9;
- // Directional cursors.
- GLUT_CURSOR_UP_DOWN = 10;
- GLUT_CURSOR_LEFT_RIGHT = 11;
- // Sizing cursors.
- GLUT_CURSOR_TOP_SIDE = 12;
- GLUT_CURSOR_BOTTOM_SIDE = 13;
- GLUT_CURSOR_LEFT_SIDE = 14;
- GLUT_CURSOR_RIGHT_SIDE = 15;
- GLUT_CURSOR_TOP_LEFT_CORNER = 16;
- GLUT_CURSOR_TOP_RIGHT_CORNER = 17;
- GLUT_CURSOR_BOTTOM_RIGHT_CORNER = 18;
- GLUT_CURSOR_BOTTOM_LEFT_CORNER = 19;
- // Inherit from parent window.
- GLUT_CURSOR_INHERIT = 100;
- // Blank cursor.
- GLUT_CURSOR_NONE = 101;
- // Fullscreen crosshair (if available).
- GLUT_CURSOR_FULL_CROSSHAIR = 102;
- // GLUT device control sub-API.
- // glutSetKeyRepeat modes.
- GLUT_KEY_REPEAT_OFF = 0;
- GLUT_KEY_REPEAT_ON = 1;
- GLUT_KEY_REPEAT_DEFAULT = 2;
- // Joystick button masks.
- GLUT_JOYSTICK_BUTTON_A = 1;
- GLUT_JOYSTICK_BUTTON_B = 2;
- GLUT_JOYSTICK_BUTTON_C = 4;
- GLUT_JOYSTICK_BUTTON_D = 8;
- // GLUT game mode sub-API.
- // glutGameModeGet.
- GLUT_GAME_MODE_ACTIVE = 0;
- GLUT_GAME_MODE_POSSIBLE = 1;
- GLUT_GAME_MODE_WIDTH = 2;
- GLUT_GAME_MODE_HEIGHT = 3;
- GLUT_GAME_MODE_PIXEL_DEPTH = 4;
- GLUT_GAME_MODE_REFRESH_RATE = 5;
- GLUT_GAME_MODE_DISPLAY_CHANGED = 6;
- {$IFDEF MORPHOS}
- { MorphOS GL works differently due to different dynamic-library handling on Amiga-like }
- { systems, so its headers are included here. }
- {$INCLUDE tinyglh.inc}
- {$ELSE MORPHOS}
- {$IFDEF GLUT_EXCLUSIVE_FPUMODE}
- var
- OLD_glutInit:procedure(argcp: PInteger; argv: PPChar); extdecl;
- OLD_glutInitDisplayMode:procedure(mode: Word); extdecl;
- OLD_glutInitDisplayString:procedure(const str: PChar); extdecl;
- OLD_glutInitWindowPosition:procedure(x, y: Integer); extdecl;
- OLD_glutInitWindowSize:procedure(width, height: Integer); extdecl;
- OLD_glutMainLoop:procedure; extdecl;
- OLD_glutCreateWindow:function(const title: PChar): Integer; extdecl;
- OLD_glutCreateSubWindow:function(win, x, y, width, height: Integer): Integer; extdecl;
- OLD_glutDestroyWindow:procedure(win: Integer); extdecl;
- OLD_glutPostRedisplay:procedure; extdecl;
- OLD_glutPostWindowRedisplay:procedure(win: Integer); extdecl;
- OLD_glutSwapBuffers:procedure; extdecl;
- OLD_glutGetWindow:function: Integer; extdecl;
- OLD_glutSetWindow:procedure(win: Integer); extdecl;
- OLD_glutSetWindowTitle:procedure(const title: PChar); extdecl;
- OLD_glutSetIconTitle:procedure(const title: PChar); extdecl;
- OLD_glutPositionWindow:procedure(x, y: Integer); extdecl;
- OLD_glutReshapeWindow:procedure(width, height: Integer); extdecl;
- OLD_glutPopWindow:procedure; extdecl;
- OLD_glutPushWindow:procedure; extdecl;
- OLD_glutIconifyWindow:procedure; extdecl;
- OLD_glutShowWindow:procedure; extdecl;
- OLD_glutHideWindow:procedure; extdecl;
- OLD_glutFullScreen:procedure; extdecl;
- OLD_glutSetCursor:procedure(cursor: Integer); extdecl;
- OLD_glutWarpPointer:procedure(x, y: Integer); extdecl;
- OLD_glutEstablishOverlay:procedure; extdecl;
- OLD_glutRemoveOverlay:procedure; extdecl;
- OLD_glutUseLayer:procedure(layer: GLenum); extdecl;
- OLD_glutPostOverlayRedisplay:procedure; extdecl;
- OLD_glutPostWindowOverlayRedisplay:procedure(win: Integer); extdecl;
- OLD_glutShowOverlay:procedure; extdecl;
- OLD_glutHideOverlay:procedure; extdecl;
- OLD_glutCreateMenu:function(callback: TGlut1IntCallback): Integer; extdecl;
- OLD_glutDestroyMenu:procedure(menu: Integer); extdecl;
- OLD_glutGetMenu:function: Integer; extdecl;
- OLD_glutSetMenu:procedure(menu: Integer); extdecl;
- OLD_glutAddMenuEntry:procedure(const caption: PChar; value: Integer); extdecl;
- OLD_glutAddSubMenu:procedure(const caption: PChar; submenu: Integer); extdecl;
- OLD_glutChangeToMenuEntry:procedure(item: Integer; const caption: PChar; value: Integer); extdecl;
- OLD_glutChangeToSubMenu:procedure(item: Integer; const caption: PChar; submenu: Integer); extdecl;
- OLD_glutRemoveMenuItem:procedure(item: Integer); extdecl;
- OLD_glutAttachMenu:procedure(button: Integer); extdecl;
- OLD_glutDetachMenu:procedure(button: Integer); extdecl;
- OLD_glutDisplayFunc:procedure(f: TGlutVoidCallback); extdecl;
- OLD_glutReshapeFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutKeyboardFunc:procedure(f: TGlut1Char2IntCallback); extdecl;
- OLD_glutMouseFunc:procedure(f: TGlut4IntCallback); extdecl;
- OLD_glutMotionFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutPassiveMotionFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutEntryFunc:procedure(f: TGlut1IntCallback); extdecl;
- OLD_glutVisibilityFunc:procedure(f: TGlut1IntCallback); extdecl;
- OLD_glutIdleFunc:procedure(f: TGlutVoidCallback); extdecl;
- OLD_glutTimerFunc:procedure(millis: Word; f: TGlut1IntCallback; value: Integer); extdecl;
- OLD_glutMenuStateFunc:procedure(f: TGlut1IntCallback); extdecl;
- OLD_glutSpecialFunc:procedure(f: TGlut3IntCallback); extdecl;
- OLD_glutSpaceballMotionFunc:procedure(f: TGlut3IntCallback); extdecl;
- OLD_glutSpaceballRotateFunc:procedure(f: TGlut3IntCallback); extdecl;
- OLD_glutSpaceballButtonFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutButtonBoxFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutDialsFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutTabletMotionFunc:procedure(f: TGlut2IntCallback); extdecl;
- OLD_glutTabletButtonFunc:procedure(f: TGlut4IntCallback); extdecl;
- OLD_glutMenuStatusFunc:procedure(f: TGlut3IntCallback); extdecl;
- OLD_glutOverlayDisplayFunc:procedure(f:TGlutVoidCallback); extdecl;
- OLD_glutWindowStatusFunc:procedure(f: TGlut1IntCallback); extdecl;
- OLD_glutKeyboardUpFunc:procedure(f: TGlut1Char2IntCallback); extdecl;
- OLD_glutSpecialUpFunc:procedure(f: TGlut3IntCallback); extdecl;
- OLD_glutJoystickFunc:procedure(f: TGlut1UInt3IntCallback; pollInterval: Integer); extdecl;
- OLD_glutSetColor:procedure(cell: Integer; red, green, blue: GLfloat); extdecl;
- OLD_glutGetColor:function(ndx, component: Integer): GLfloat; extdecl;
- OLD_glutCopyColormap:procedure(win: Integer); extdecl;
- OLD_glutGet:function(t: GLenum): Integer; extdecl;
- OLD_glutDeviceGet:function(t: GLenum): Integer; extdecl;
- OLD_glutExtensionSupported:function(const name: PChar): Integer; extdecl;
- OLD_glutGetModifiers:function: Integer; extdecl;
- OLD_glutLayerGet:function(t: GLenum): Integer; extdecl;
- OLD_glutBitmapCharacter:procedure(font : pointer; character: Integer); extdecl;
- OLD_glutBitmapWidth:function(font : pointer; character: Integer): Integer; extdecl;
- OLD_glutStrokeCharacter:procedure(font : pointer; character: Integer); extdecl;
- OLD_glutStrokeWidth:function(font : pointer; character: Integer): Integer; extdecl;
- OLD_glutBitmapLength:function(font: pointer; const str: PChar): Integer; extdecl;
- OLD_glutStrokeLength:function(font: pointer; const str: PChar): Integer; extdecl;
- OLD_glutWireSphere:procedure(radius: GLdouble; slices, stacks: GLint); extdecl;
- OLD_glutSolidSphere:procedure(radius: GLdouble; slices, stacks: GLint); extdecl;
- OLD_glutWireCone:procedure(base, height: GLdouble; slices, stacks: GLint); extdecl;
- OLD_glutSolidCone:procedure(base, height: GLdouble; slices, stacks: GLint); extdecl;
- OLD_glutWireCube:procedure(size: GLdouble); extdecl;
- OLD_glutSolidCube:procedure(size: GLdouble); extdecl;
- OLD_glutWireTorus:procedure(innerRadius, outerRadius: GLdouble; sides, rings: GLint); extdecl;
- OLD_glutSolidTorus:procedure(innerRadius, outerRadius: GLdouble; sides, rings: GLint); extdecl;
- OLD_glutWireDodecahedron:procedure; extdecl;
- OLD_glutSolidDodecahedron:procedure; extdecl;
- OLD_glutWireTeapot:procedure(size: GLdouble); extdecl;
- OLD_glutSolidTeapot:procedure(size: GLdouble); extdecl;
- OLD_glutWireOctahedron:procedure; extdecl;
- OLD_glutSolidOctahedron:procedure; extdecl;
- OLD_glutWireTetrahedron:procedure; extdecl;
- OLD_glutSolidTetrahedron:procedure; extdecl;
- OLD_glutWireIcosahedron:procedure; extdecl;
- OLD_glutSolidIcosahedron:procedure; extdecl;
- OLD_glutVideoResizeGet:function(param: GLenum): Integer; extdecl;
- OLD_glutSetupVideoResizing:procedure; extdecl;
- OLD_glutStopVideoResizing:procedure; extdecl;
- OLD_glutVideoResize:procedure(x, y, width, height: Integer); extdecl;
- OLD_glutVideoPan:procedure(x, y, width, height: Integer); extdecl;
- OLD_glutReportErrors:procedure; extdecl;
- OLD_glutIgnoreKeyRepeat:procedure(ignore: Integer); extdecl;
- OLD_glutSetKeyRepeat:procedure(repeatMode: Integer); extdecl;
- OLD_glutForceJoystickFunc:procedure; extdecl;
- OLD_glutGameModeString:procedure(const AString : PChar); extdecl;
- OLD_glutEnterGameMode:function: integer; extdecl;
- OLD_glutLeaveGameMode:procedure; extdecl;
- OLD_glutGameModeGet:function(mode : GLenum): integer; extdecl;
- procedure glutInit(argcp: PInteger; argv: PPChar); mode_inline;
- procedure glutInitDisplayMode(mode: Word); mode_inline;
- procedure glutInitDisplayString(const str: PChar); mode_inline;
- procedure glutInitWindowPosition(x, y: Integer); mode_inline;
- procedure glutInitWindowSize(width, height: Integer); mode_inline;
- procedure glutMainLoop; mode_inline;
- function glutCreateWindow(const title: PChar): Integer; mode_inline;
- function glutCreateSubWindow(win, x, y, width, height: Integer): Integer; mode_inline;
- procedure glutDestroyWindow(win: Integer); mode_inline;
- procedure glutPostRedisplay; mode_inline;
- procedure glutPostWindowRedisplay(win: Integer); mode_inline;
- procedure glutSwapBuffers; mode_inline;
- function glutGetWindow: Integer; mode_inline;
- procedure glutSetWindow(win: Integer); mode_inline;
- procedure glutSetWindowTitle(const title: PChar); mode_inline;
- procedure glutSetIconTitle(const title: PChar); mode_inline;
- procedure glutPositionWindow(x, y: Integer); mode_inline;
- procedure glutReshapeWindow(width, height: Integer); mode_inline;
- procedure glutPopWindow; mode_inline;
- procedure glutPushWindow; mode_inline;
- procedure glutIconifyWindow; mode_inline;
- procedure glutShowWindow; mode_inline;
- procedure glutHideWindow; mode_inline;
- procedure glutFullScreen; mode_inline;
- procedure glutSetCursor(cursor: Integer); mode_inline;
- procedure glutWarpPointer(x, y: Integer); mode_inline;
- procedure glutEstablishOverlay; mode_inline;
- procedure glutRemoveOverlay; mode_inline;
- procedure glutUseLayer(layer: GLenum); mode_inline;
- procedure glutPostOverlayRedisplay; mode_inline;
- procedure glutPostWindowOverlayRedisplay(win: Integer); mode_inline;
- procedure glutShowOverlay; mode_inline;
- procedure glutHideOverlay; mode_inline;
- function glutCreateMenu(callback: TGlut1IntCallback): Integer; mode_inline;
- procedure glutDestroyMenu(menu: Integer); mode_inline;
- function glutGetMenu: Integer; mode_inline;
- procedure glutSetMenu(menu: Integer); mode_inline;
- procedure glutAddMenuEntry(const caption: PChar; value: Integer); mode_inline;
- procedure glutAddSubMenu(const caption: PChar; submenu: Integer); mode_inline;
- procedure glutChangeToMenuEntry(item: Integer; const caption: PChar; value: Integer); mode_inline;
- procedure glutChangeToSubMenu(item: Integer; const caption: PChar; submenu: Integer); mode_inline;
- procedure glutRemoveMenuItem(item: Integer); mode_inline;
- procedure glutAttachMenu(button: Integer); mode_inline;
- procedure glutDetachMenu(button: Integer); mode_inline;
- procedure glutDisplayFunc(f: TGlutVoidCallback); mode_inline;
- procedure glutReshapeFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutKeyboardFunc(f: TGlut1Char2IntCallback); mode_inline;
- procedure glutMouseFunc(f: TGlut4IntCallback); mode_inline;
- procedure glutMotionFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutPassiveMotionFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutEntryFunc(f: TGlut1IntCallback); mode_inline;
- procedure glutVisibilityFunc(f: TGlut1IntCallback); mode_inline;
- procedure glutIdleFunc(f: TGlutVoidCallback); mode_inline;
- procedure glutTimerFunc(millis: Word; f: TGlut1IntCallback; value: Integer); mode_inline;
- procedure glutMenuStateFunc(f: TGlut1IntCallback); mode_inline;
- procedure glutSpecialFunc(f: TGlut3IntCallback); mode_inline;
- procedure glutSpaceballMotionFunc(f: TGlut3IntCallback); mode_inline;
- procedure glutSpaceballRotateFunc(f: TGlut3IntCallback); mode_inline;
- procedure glutSpaceballButtonFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutButtonBoxFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutDialsFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutTabletMotionFunc(f: TGlut2IntCallback); mode_inline;
- procedure glutTabletButtonFunc(f: TGlut4IntCallback); mode_inline;
- procedure glutMenuStatusFunc(f: TGlut3IntCallback); mode_inline;
- procedure glutOverlayDisplayFunc(f:TGlutVoidCallback); mode_inline;
- procedure glutWindowStatusFunc(f: TGlut1IntCallback); mode_inline;
- procedure glutKeyboardUpFunc(f: TGlut1Char2IntCallback); mode_inline;
- procedure glutSpecialUpFunc(f: TGlut3IntCallback); mode_inline;
- procedure glutJoystickFunc(f: TGlut1UInt3IntCallback; pollInterval: Integer); mode_inline;
- procedure glutSetColor(cell: Integer; red, green, blue: GLfloat); mode_inline;
- function glutGetColor(ndx, component: Integer): GLfloat; mode_inline;
- procedure glutCopyColormap(win: Integer); mode_inline;
- function glutGet(t: GLenum): Integer; mode_inline;
- function glutDeviceGet(t: GLenum): Integer; mode_inline;
- function glutExtensionSupported(const name: PChar): Integer; mode_inline;
- function glutGetModifiers: Integer; mode_inline;
- function glutLayerGet(t: GLenum): Integer; mode_inline;
- procedure glutBitmapCharacter(font : pointer; character: Integer); mode_inline;
- function glutBitmapWidth(font : pointer; character: Integer): Integer; mode_inline;
- procedure glutStrokeCharacter(font : pointer; character: Integer); mode_inline;
- function glutStrokeWidth(font : pointer; character: Integer): Integer; mode_inline;
- function glutBitmapLength(font: pointer; const str: PChar): Integer; mode_inline;
- function glutStrokeLength(font: pointer; const str: PChar): Integer; mode_inline;
- procedure glutWireSphere(radius: GLdouble; slices, stacks: GLint); mode_inline;
- procedure glutSolidSphere(radius: GLdouble; slices, stacks: GLint); mode_inline;
- procedure glutWireCone(base, height: GLdouble; slices, stacks: GLint); mode_inline;
- procedure glutSolidCone(base, height: GLdouble; slices, stacks: GLint); mode_inline;
- procedure glutWireCube(size: GLdouble); mode_inline;
- procedure glutSolidCube(size: GLdouble); mode_inline;
- procedure glutWireTorus(innerRadius, outerRadius: GLdouble; sides, rings: GLint); mode_inline;
- procedure glutSolidTorus(innerRadius, outerRadius: GLdouble; sides, rings: GLint); mode_inline;
- procedure glutWireDodecahedron; mode_inline;
- procedure glutSolidDodecahedron; mode_inline;
- procedure glutWireTeapot(size: GLdouble); mode_inline;
- procedure glutSolidTeapot(size: GLdouble); mode_inline;
- procedure glutWireOctahedron; mode_inline;
- procedure glutSolidOctahedron; mode_inline;
- procedure glutWireTetrahedron; mode_inline;
- procedure glutSolidTetrahedron; mode_inline;
- procedure glutWireIcosahedron; mode_inline;
- procedure glutSolidIcosahedron; mode_inline;
- function glutVideoResizeGet(param: GLenum): Integer; mode_inline;
- procedure glutSetupVideoResizing; mode_inline;
- procedure glutStopVideoResizing; mode_inline;
- procedure glutVideoResize(x, y, width, height: Integer); mode_inline;
- procedure glutVideoPan(x, y, width, height: Integer); mode_inline;
- procedure glutReportErrors; mode_inline;
- procedure glutIgnoreKeyRepeat(ignore: Integer); mode_inline;
- procedure glutSetKeyRepeat(repeatMode: Integer); mode_inline;
- procedure glutForceJoystickFunc; mode_inline;
- procedure glutGameModeString(const AString : PChar); mode_inline;
- function glutEnterGameMode: integer; mode_inline;
- procedure glutLeaveGameMode; mode_inline;
- function glutGameModeGet(mode : GLenum): integer; mode_inline;
- {$ELSE GLUT_EXCLUSIVE_FPUMODE}
- var
- // GLUT initialization sub-API.
- glutInit: procedure(argcp: PInteger; argv: PPChar); extdecl;
- glutInitDisplayMode: procedure(mode: Word); extdecl;
- glutInitDisplayString: procedure(const str: PChar); extdecl;
- glutInitWindowPosition: procedure(x, y: Integer); extdecl;
- glutInitWindowSize: procedure(width, height: Integer); extdecl;
- glutMainLoop: procedure; extdecl;
- // GLUT window sub-API.
- glutCreateWindow: function(const title: PChar): Integer; extdecl;
- glutCreateSubWindow: function(win, x, y, width, height: Integer): Integer; extdecl;
- glutDestroyWindow: procedure(win: Integer); extdecl;
- glutPostRedisplay: procedure; extdecl;
- glutPostWindowRedisplay: procedure(win: Integer); extdecl;
- glutSwapBuffers: procedure; extdecl;
- glutGetWindow: function: Integer; extdecl;
- glutSetWindow: procedure(win: Integer); extdecl;
- glutSetWindowTitle: procedure(const title: PChar); extdecl;
- glutSetIconTitle: procedure(const title: PChar); extdecl;
- glutPositionWindow: procedure(x, y: Integer); extdecl;
- glutReshapeWindow: procedure(width, height: Integer); extdecl;
- glutPopWindow: procedure; extdecl;
- glutPushWindow: procedure; extdecl;
- glutIconifyWindow: procedure; extdecl;
- glutShowWindow: procedure; extdecl;
- glutHideWindow: procedure; extdecl;
- glutFullScreen: procedure; extdecl;
- glutSetCursor: procedure(cursor: Integer); extdecl;
- glutWarpPointer: procedure(x, y: Integer); extdecl;
- // GLUT overlay sub-API.
- glutEstablishOverlay: procedure; extdecl;
- glutRemoveOverlay: procedure; extdecl;
- glutUseLayer: procedure(layer: GLenum); extdecl;
- glutPostOverlayRedisplay: procedure; extdecl;
- glutPostWindowOverlayRedisplay: procedure(win: Integer); extdecl;
- glutShowOverlay: procedure; extdecl;
- glutHideOverlay: procedure; extdecl;
- // GLUT menu sub-API.
- glutCreateMenu: function(callback: TGlut1IntCallback): Integer; extdecl;
- glutDestroyMenu: procedure(menu: Integer); extdecl;
- glutGetMenu: function: Integer; extdecl;
- glutSetMenu: procedure(menu: Integer); extdecl;
- glutAddMenuEntry: procedure(const caption: PChar; value: Integer); extdecl;
- glutAddSubMenu: procedure(const caption: PChar; submenu: Integer); extdecl;
- glutChangeToMenuEntry: procedure(item: Integer; const caption: PChar; value: Integer); extdecl;
- glutChangeToSubMenu: procedure(item: Integer; const caption: PChar; submenu: Integer); extdecl;
- glutRemoveMenuItem: procedure(item: Integer); extdecl;
- glutAttachMenu: procedure(button: Integer); extdecl;
- glutDetachMenu: procedure(button: Integer); extdecl;
- // GLUT window callback sub-API.
- glutDisplayFunc: procedure(f: TGlutVoidCallback); extdecl;
- glutReshapeFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutKeyboardFunc: procedure(f: TGlut1Char2IntCallback); extdecl;
- glutMouseFunc: procedure(f: TGlut4IntCallback); extdecl;
- glutMotionFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutPassiveMotionFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutEntryFunc: procedure(f: TGlut1IntCallback); extdecl;
- glutVisibilityFunc: procedure(f: TGlut1IntCallback); extdecl;
- glutIdleFunc: procedure(f: TGlutVoidCallback); extdecl;
- glutTimerFunc: procedure(millis: Word; f: TGlut1IntCallback; value: Integer); extdecl;
- glutMenuStateFunc: procedure(f: TGlut1IntCallback); extdecl;
- glutSpecialFunc: procedure(f: TGlut3IntCallback); extdecl;
- glutSpaceballMotionFunc: procedure(f: TGlut3IntCallback); extdecl;
- glutSpaceballRotateFunc: procedure(f: TGlut3IntCallback); extdecl;
- glutSpaceballButtonFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutButtonBoxFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutDialsFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutTabletMotionFunc: procedure(f: TGlut2IntCallback); extdecl;
- glutTabletButtonFunc: procedure(f: TGlut4IntCallback); extdecl;
- glutMenuStatusFunc: procedure(f: TGlut3IntCallback); extdecl;
- glutOverlayDisplayFunc: procedure(f:TGlutVoidCallback); extdecl;
- glutWindowStatusFunc: procedure(f: TGlut1IntCallback); extdecl;
- glutKeyboardUpFunc: procedure(f: TGlut1Char2IntCallback); extdecl;
- glutSpecialUpFunc: procedure(f: TGlut3IntCallback); extdecl;
- glutJoystickFunc: procedure(f: TGlut1UInt3IntCallback; pollInterval: Integer); extdecl;
- // GLUT color index sub-API.
- glutSetColor: procedure(cell: Integer; red, green, blue: GLfloat); extdecl;
- glutGetColor: function(ndx, component: Integer): GLfloat; extdecl;
- glutCopyColormap: procedure(win: Integer); extdecl;
- // GLUT state retrieval sub-API.
- glutGet: function(t: GLenum): Integer; extdecl;
- glutDeviceGet: function(t: GLenum): Integer; extdecl;
- // GLUT extension support sub-API
- glutExtensionSupported: function(const name: PChar): Integer; extdecl;
- glutGetModifiers: function: Integer; extdecl;
- glutLayerGet: function(t: GLenum): Integer; extdecl;
- // GLUT font sub-API
- glutBitmapCharacter: procedure(font : pointer; character: Integer); extdecl;
- glutBitmapWidth: function(font : pointer; character: Integer): Integer; extdecl;
- glutStrokeCharacter: procedure(font : pointer; character: Integer); extdecl;
- glutStrokeWidth: function(font : pointer; character: Integer): Integer; extdecl;
- glutBitmapLength: function(font: pointer; const str: PChar): Integer; extdecl;
- glutStrokeLength: function(font: pointer; const str: PChar): Integer; extdecl;
- // GLUT pre-built models sub-API
- glutWireSphere: procedure(radius: GLdouble; slices, stacks: GLint); extdecl;
- glutSolidSphere: procedure(radius: GLdouble; slices, stacks: GLint); extdecl;
- glutWireCone: procedure(base, height: GLdouble; slices, stacks: GLint); extdecl;
- glutSolidCone: procedure(base, height: GLdouble; slices, stacks: GLint); extdecl;
- glutWireCube: procedure(size: GLdouble); extdecl;
- glutSolidCube: procedure(size: GLdouble); extdecl;
- glutWireTorus: procedure(innerRadius, outerRadius: GLdouble; sides, rings: GLint); extdecl;
- glutSolidTorus: procedure(innerRadius, outerRadius: GLdouble; sides, rings: GLint); extdecl;
- glutWireDodecahedron: procedure; extdecl;
- glutSolidDodecahedron: procedure; extdecl;
- glutWireTeapot: procedure(size: GLdouble); extdecl;
- glutSolidTeapot: procedure(size: GLdouble); extdecl;
- glutWireOctahedron: procedure; extdecl;
- glutSolidOctahedron: procedure; extdecl;
- glutWireTetrahedron: procedure; extdecl;
- glutSolidTetrahedron: procedure; extdecl;
- glutWireIcosahedron: procedure; extdecl;
- glutSolidIcosahedron: procedure; extdecl;
- // GLUT video resize sub-API.
- glutVideoResizeGet: function(param: GLenum): Integer; extdecl;
- glutSetupVideoResizing: procedure; extdecl;
- glutStopVideoResizing: procedure; extdecl;
- glutVideoResize: procedure(x, y, width, height: Integer); extdecl;
- glutVideoPan: procedure(x, y, width, height: Integer); extdecl;
- // GLUT debugging sub-API.
- glutReportErrors: procedure; extdecl;
- // GLUT device control sub-API.
- glutIgnoreKeyRepeat: procedure(ignore: Integer); extdecl;
- glutSetKeyRepeat: procedure(repeatMode: Integer); extdecl;
- glutForceJoystickFunc: procedure; extdecl;
- // GLUT game mode sub-API.
- //example glutGameModeString('1280x1024:32@75');
- glutGameModeString : procedure (const AString : PChar); extdecl;
- glutEnterGameMode : function : integer; extdecl;
- glutLeaveGameMode : procedure; extdecl;
- glutGameModeGet : function (mode : GLenum) : integer; extdecl;
- {$ENDIF GLUT_EXCLUSIVE_FPUMODE}
- {$ENDIF MORPHOS}
- procedure LoadGlut(const dll: String);
- procedure FreeGlut;
- implementation
- {$IFDEF MORPHOS}
- { MorphOS GL works differently due to different dynamic-library handling on Amiga-like }
- { systems, so its functions are included here. }
- {$INCLUDE tinygl.inc}
- {$ELSE MORPHOS}
- var
- hDLL: TLibHandle;
- {$ENDIF MORPHOS}
- procedure FreeGlut;
- begin
- {$IFDEF MORPHOS}
- // MorphOS's GL will closed down by TinyGL unit, nothing is needed here.
- {$ELSE MORPHOS}
- if (hDLL <> 0) then
- FreeLibrary(hDLL);
- {$IFDEF GLUT_EXCLUSIVE_FPUMODE}
- @OLD_glutInit := nil;
- @OLD_glutInitDisplayMode := nil;
- @OLD_glutInitDisplayString := nil;
- @OLD_glutInitWindowPosition := nil;
- @OLD_glutInitWindowSize := nil;
- @OLD_glutMainLoop := nil;
- @OLD_glutCreateWindow := nil;
- @OLD_glutCreateSubWindow := nil;
- @OLD_glutDestroyWindow := nil;
- @OLD_glutPostRedisplay := nil;
- @OLD_glutPostWindowRedisplay := nil;
- @OLD_glutSwapBuffers := nil;
- @OLD_glutGetWindow := nil;
- @OLD_glutSetWindow := nil;
- @OLD_glutSetWindowTitle := nil;
- @OLD_glutSetIconTitle := nil;
- @OLD_glutPositionWindow := nil;
- @OLD_glutReshapeWindow := nil;
- @OLD_glutPopWindow := nil;
- @OLD_glutPushWindow := nil;
- @OLD_glutIconifyWindow := nil;
- @OLD_glutShowWindow := nil;
- @OLD_glutHideWindow := nil;
- @OLD_glutFullScreen := nil;
- @OLD_glutSetCursor := nil;
- @OLD_glutWarpPointer := nil;
- @OLD_glutEstablishOverlay := nil;
- @OLD_glutRemoveOverlay := nil;
- @OLD_glutUseLayer := nil;
- @OLD_glutPostOverlayRedisplay := nil;
- @OLD_glutPostWindowOverlayRedisplay := nil;
- @OLD_glutShowOverlay := nil;
- @OLD_glutHideOverlay := nil;
- @OLD_glutCreateMenu := nil;
- @OLD_glutDestroyMenu := nil;
- @OLD_glutGetMenu := nil;
- @OLD_glutSetMenu := nil;
- @OLD_glutAddMenuEntry := nil;
- @OLD_glutAddSubMenu := nil;
- @OLD_glutChangeToMenuEntry := nil;
- @OLD_glutChangeToSubMenu := nil;
- @OLD_glutRemoveMenuItem := nil;
- @OLD_glutAttachMenu := nil;
- @OLD_glutDetachMenu := nil;
- @OLD_glutDisplayFunc := nil;
- @OLD_glutReshapeFunc := nil;
- @OLD_glutKeyboardFunc := nil;
- @OLD_glutMouseFunc := nil;
- @OLD_glutMotionFunc := nil;
- @OLD_glutPassiveMotionFunc := nil;
- @OLD_glutEntryFunc := nil;
- @OLD_glutVisibilityFunc := nil;
- @OLD_glutIdleFunc := nil;
- @OLD_glutTimerFunc := nil;
- @OLD_glutMenuStateFunc := nil;
- @OLD_glutSpecialFunc := nil;
- @OLD_glutSpaceballMotionFunc := nil;
- @OLD_glutSpaceballRotateFunc := nil;
- @OLD_glutSpaceballButtonFunc := nil;
- @OLD_glutButtonBoxFunc := nil;
- @OLD_glutDialsFunc := nil;
- @OLD_glutTabletMotionFunc := nil;
- @OLD_glutTabletButtonFunc := nil;
- @OLD_glutMenuStatusFunc := nil;
- @OLD_glutOverlayDisplayFunc := nil;
- @OLD_glutWindowStatusFunc := nil;
- @OLD_glutKeyboardUpFunc := nil;
- @OLD_glutSpecialUpFunc := nil;
- @OLD_glutJoystickFunc := nil;
- @OLD_glutSetColor := nil;
- @OLD_glutGetColor := nil;
- @OLD_glutCopyColormap := nil;
- @OLD_glutGet := nil;
- @OLD_glutDeviceGet := nil;
- @OLD_glutExtensionSupported := nil;
- @OLD_glutGetModifiers := nil;
- @OLD_glutLayerGet := nil;
- @OLD_glutBitmapCharacter := nil;
- @OLD_glutBitmapWidth := nil;
- @OLD_glutStrokeCharacter := nil;
- @OLD_glutStrokeWidth := nil;
- @OLD_glutBitmapLength := nil;
- @OLD_glutStrokeLength := nil;
- @OLD_glutWireSphere := nil;
- @OLD_glutSolidSphere := nil;
- @OLD_glutWireCone := nil;
- @OLD_glutSolidCone := nil;
- @OLD_glutWireCube := nil;
- @OLD_glutSolidCube := nil;
- @OLD_glutWireTorus := nil;
- @OLD_glutSolidTorus := nil;
- @OLD_glutWireDodecahedron := nil;
- @OLD_glutSolidDodecahedron := nil;
- @OLD_glutWireTeapot := nil;
- @OLD_glutSolidTeapot := nil;
- @OLD_glutWireOctahedron := nil;
- @OLD_glutSolidOctahedron := nil;
- @OLD_glutWireTetrahedron := nil;
- @OLD_glutSolidTetrahedron := nil;
- @OLD_glutWireIcosahedron := nil;
- @OLD_glutSolidIcosahedron := nil;
- @OLD_glutVideoResizeGet := nil;
- @OLD_glutSetupVideoResizing := nil;
- @OLD_glutStopVideoResizing := nil;
- @OLD_glutVideoResize := nil;
- @OLD_glutVideoPan := nil;
- @OLD_glutReportErrors := nil;
- @OLD_glutIgnoreKeyRepeat := nil;
- @OLD_glutSetKeyRepeat := nil;
- @OLD_glutForceJoystickFunc := nil;
- @OLD_glutGameModeString := nil;
- @OLD_glutEnterGameMode := nil;
- @OLD_glutLeaveGameMode := nil;
- @OLD_glutGameModeGet := nil;
- {$ELSE GLUT_EXCLUSIVE_FPUMODE}
- @glutInit := nil;
- @glutInitDisplayMode := nil;
- @glutInitDisplayString := nil;
- @glutInitWindowPosition := nil;
- @glutInitWindowSize := nil;
- @glutMainLoop := nil;
- @glutCreateWindow := nil;
- @glutCreateSubWindow := nil;
- @glutDestroyWindow := nil;
- @glutPostRedisplay := nil;
- @glutPostWindowRedisplay := nil;
- @glutSwapBuffers := nil;
- @glutGetWindow := nil;
- @glutSetWindow := nil;
- @glutSetWindowTitle := nil;
- @glutSetIconTitle := nil;
- @glutPositionWindow := nil;
- @glutReshapeWindow := nil;
- @glutPopWindow := nil;
- @glutPushWindow := nil;
- @glutIconifyWindow := nil;
- @glutShowWindow := nil;
- @glutHideWindow := nil;
- @glutFullScreen := nil;
- @glutSetCursor := nil;
- @glutWarpPointer := nil;
- @glutEstablishOverlay := nil;
- @glutRemoveOverlay := nil;
- @glutUseLayer := nil;
- @glutPostOverlayRedisplay := nil;
- @glutPostWindowOverlayRedisplay := nil;
- @glutShowOverlay := nil;
- @glutHideOverlay := nil;
- @glutCreateMenu := nil;
- @glutDestroyMenu := nil;
- @glutGetMenu := nil;
- @glutSetMenu := nil;
- @glutAddMenuEntry := nil;
- @glutAddSubMenu := nil;
- @glutChangeToMenuEntry := nil;
- @glutChangeToSubMenu := nil;
- @glutRemoveMenuItem := nil;
- @glutAttachMenu := nil;
- @glutDetachMenu := nil;
- @glutDisplayFunc := nil;
- @glutReshapeFunc := nil;
- @glutKeyboardFunc := nil;
- @glutMouseFunc := nil;
- @glutMotionFunc := nil;
- @glutPassiveMotionFunc := nil;
- @glutEntryFunc := nil;
- @glutVisibilityFunc := nil;
- @glutIdleFunc := nil;
- @glutTimerFunc := nil;
- @glutMenuStateFunc := nil;
- @glutSpecialFunc := nil;
- @glutSpaceballMotionFunc := nil;
- @glutSpaceballRotateFunc := nil;
- @glutSpaceballButtonFunc := nil;
- @glutButtonBoxFunc := nil;
- @glutDialsFunc := nil;
- @glutTabletMotionFunc := nil;
- @glutTabletButtonFunc := nil;
- @glutMenuStatusFunc := nil;
- @glutOverlayDisplayFunc := nil;
- @glutWindowStatusFunc := nil;
- @glutKeyboardUpFunc := nil;
- @glutSpecialUpFunc := nil;
- @glutJoystickFunc := nil;
- @glutSetColor := nil;
- @glutGetColor := nil;
- @glutCopyColormap := nil;
- @glutGet := nil;
- @glutDeviceGet := nil;
- @glutExtensionSupported := nil;
- @glutGetModifiers := nil;
- @glutLayerGet := nil;
- @glutBitmapCharacter := nil;
- @glutBitmapWidth := nil;
- @glutStrokeCharacter := nil;
- @glutStrokeWidth := nil;
- @glutBitmapLength := nil;
- @glutStrokeLength := nil;
- @glutWireSphere := nil;
- @glutSolidSphere := nil;
- @glutWireCone := nil;
- @glutSolidCone := nil;
- @glutWireCube := nil;
- @glutSolidCube := nil;
- @glutWireTorus := nil;
- @glutSolidTorus := nil;
- @glutWireDodecahedron := nil;
- @glutSolidDodecahedron := nil;
- @glutWireTeapot := nil;
- @glutSolidTeapot := nil;
- @glutWireOctahedron := nil;
- @glutSolidOctahedron := nil;
- @glutWireTetrahedron := nil;
- @glutSolidTetrahedron := nil;
- @glutWireIcosahedron := nil;
- @glutSolidIcosahedron := nil;
- @glutVideoResizeGet := nil;
- @glutSetupVideoResizing := nil;
- @glutStopVideoResizing := nil;
- @glutVideoResize := nil;
- @glutVideoPan := nil;
- @glutReportErrors := nil;
- @glutIgnoreKeyRepeat := nil;
- @glutSetKeyRepeat := nil;
- @glutForceJoystickFunc := nil;
- @glutGameModeString := nil;
- @glutEnterGameMode := nil;
- @glutLeaveGameMode := nil;
- @glutGameModeGet := nil;
- {$ENDIF GLUT_EXCLUSIVE_FPUMODE}
- {$ENDIF MORPHOS}
- end;
- procedure LoadGlut(const dll: String);
- {$IFDEF MORPHOS}
- begin
- // MorphOS's GL has own initialization in TinyGL unit, nothing is needed here.
- end;
- {$ELSE MORPHOS}
- var
- MethodName: string = '';
- function GetGLutProcAddress(Lib: PtrInt; ProcName: PChar): Pointer;
- begin
- MethodName:=ProcName;
- Result:=GetProcAddress(Lib, ProcName);
- end;
- begin
- FreeGlut;
- hDLL := LoadLibrary(PChar(dll));
- if hDLL = 0 then raise Exception.Create('Could not load Glut from ' + dll);
- try
- {$IFDEF GLUT_EXCLUSIVE_FPUMODE}
- @OLD_glutInit := GetGLutProcAddress(hDLL, 'glutInit');
- @OLD_glutInitDisplayMode := GetGLutProcAddress(hDLL, 'glutInitDisplayMode');
- @OLD_glutInitDisplayString := GetGLutProcAddress(hDLL, 'glutInitDisplayString');
- @OLD_glutInitWindowPosition := GetGLutProcAddress(hDLL, 'glutInitWindowPosition');
- @OLD_glutInitWindowSize := GetGLutProcAddress(hDLL, 'glutInitWindowSize');
- @OLD_glutMainLoop := GetGLutProcAddress(hDLL, 'glutMainLoop');
- @OLD_glutCreateWindow := GetGLutProcAddress(hDLL, 'glutCreateWindow');
- @OLD_glutCreateSubWindow := GetGLutProcAddress(hDLL, 'glutCreateSubWindow');
- @OLD_glutDestroyWindow := GetGLutProcAddress(hDLL, 'glutDestroyWindow');
- @OLD_glutPostRedisplay := GetGLutProcAddress(hDLL, 'glutPostRedisplay');
- @OLD_glutPostWindowRedisplay := GetGLutProcAddress(hDLL, 'glutPostWindowRedisplay');
- @OLD_glutSwapBuffers := GetGLutProcAddress(hDLL, 'glutSwapBuffers');
- @OLD_glutGetWindow := GetGLutProcAddress(hDLL, 'glutGetWindow');
- @OLD_glutSetWindow := GetGLutProcAddress(hDLL, 'glutSetWindow');
- @OLD_glutSetWindowTitle := GetGLutProcAddress(hDLL, 'glutSetWindowTitle');
- @OLD_glutSetIconTitle := GetGLutProcAddress(hDLL, 'glutSetIconTitle');
- @OLD_glutPositionWindow := GetGLutProcAddress(hDLL, 'glutPositionWindow');
- @OLD_glutReshapeWindow := GetGLutProcAddress(hDLL, 'glutReshapeWindow');
- @OLD_glutPopWindow := GetGLutProcAddress(hDLL, 'glutPopWindow');
- @OLD_glutPushWindow := GetGLutProcAddress(hDLL, 'glutPushWindow');
- @OLD_glutIconifyWindow := GetGLutProcAddress(hDLL, 'glutIconifyWindow');
- @OLD_glutShowWindow := GetGLutProcAddress(hDLL, 'glutShowWindow');
- @OLD_glutHideWindow := GetGLutProcAddress(hDLL, 'glutHideWindow');
- @OLD_glutFullScreen := GetGLutProcAddress(hDLL, 'glutFullScreen');
- @OLD_glutSetCursor := GetGLutProcAddress(hDLL, 'glutSetCursor');
- @OLD_glutWarpPointer := GetGLutProcAddress(hDLL, 'glutWarpPointer');
- @OLD_glutEstablishOverlay := GetGLutProcAddress(hDLL, 'glutEstablishOverlay');
- @OLD_glutRemoveOverlay := GetGLutProcAddress(hDLL, 'glutRemoveOverlay');
- @OLD_glutUseLayer := GetGLutProcAddress(hDLL, 'glutUseLayer');
- @OLD_glutPostOverlayRedisplay := GetGLutProcAddress(hDLL, 'glutPostOverlayRedisplay');
- @OLD_glutPostWindowOverlayRedisplay := GetGLutProcAddress(hDLL, 'glutPostWindowOverlayRedisplay');
- @OLD_glutShowOverlay := GetGLutProcAddress(hDLL, 'glutShowOverlay');
- @OLD_glutHideOverlay := GetGLutProcAddress(hDLL, 'glutHideOverlay');
- @OLD_glutCreateMenu := GetGLutProcAddress(hDLL, 'glutCreateMenu');
- @OLD_glutDestroyMenu := GetGLutProcAddress(hDLL, 'glutDestroyMenu');
- @OLD_glutGetMenu := GetGLutProcAddress(hDLL, 'glutGetMenu');
- @OLD_glutSetMenu := GetGLutProcAddress(hDLL, 'glutSetMenu');
- @OLD_glutAddMenuEntry := GetGLutProcAddress(hDLL, 'glutAddMenuEntry');
- @OLD_glutAddSubMenu := GetGLutProcAddress(hDLL, 'glutAddSubMenu');
- @OLD_glutChangeToMenuEntry := GetGLutProcAddress(hDLL, 'glutChangeToMenuEntry');
- @OLD_glutChangeToSubMenu := GetGLutProcAddress(hDLL, 'glutChangeToSubMenu');
- @OLD_glutRemoveMenuItem := GetGLutProcAddress(hDLL, 'glutRemoveMenuItem');
- @OLD_glutAttachMenu := GetGLutProcAddress(hDLL, 'glutAttachMenu');
- @OLD_glutDetachMenu := GetGLutProcAddress(hDLL, 'glutDetachMenu');
- @OLD_glutDisplayFunc := GetGLutProcAddress(hDLL, 'glutDisplayFunc');
- @OLD_glutReshapeFunc := GetGLutProcAddress(hDLL, 'glutReshapeFunc');
- @OLD_glutKeyboardFunc := GetGLutProcAddress(hDLL, 'glutKeyboardFunc');
- @OLD_glutMouseFunc := GetGLutProcAddress(hDLL, 'glutMouseFunc');
- @OLD_glutMotionFunc := GetGLutProcAddress(hDLL, 'glutMotionFunc');
- @OLD_glutPassiveMotionFunc := GetGLutProcAddress(hDLL, 'glutPassiveMotionFunc');
- @OLD_glutEntryFunc := GetGLutProcAddress(hDLL, 'glutEntryFunc');
- @OLD_glutVisibilityFunc := GetGLutProcAddress(hDLL, 'glutVisibilityFunc');
- @OLD_glutIdleFunc := GetGLutProcAddress(hDLL, 'glutIdleFunc');
- @OLD_glutTimerFunc := GetGLutProcAddress(hDLL, 'glutTimerFunc');
- @OLD_glutMenuStateFunc := GetGLutProcAddress(hDLL, 'glutMenuStateFunc');
- @OLD_glutSpecialFunc := GetGLutProcAddress(hDLL, 'glutSpecialFunc');
- @OLD_glutSpaceballMotionFunc := GetGLutProcAddress(hDLL, 'glutSpaceballMotionFunc');
- @OLD_glutSpaceballRotateFunc := GetGLutProcAddress(hDLL, 'glutSpaceballRotateFunc');
- @OLD_glutSpaceballButtonFunc := GetGLutProcAddress(hDLL, 'glutSpaceballButtonFunc');
- @OLD_glutButtonBoxFunc := GetGLutProcAddress(hDLL, 'glutButtonBoxFunc');
- @OLD_glutDialsFunc := GetGLutProcAddress(hDLL, 'glutDialsFunc');
- @OLD_glutTabletMotionFunc := GetGLutProcAddress(hDLL, 'glutTabletMotionFunc');
- @OLD_glutTabletButtonFunc := GetGLutProcAddress(hDLL, 'glutTabletButtonFunc');
- @OLD_glutMenuStatusFunc := GetGLutProcAddress(hDLL, 'glutMenuStatusFunc');
- @OLD_glutOverlayDisplayFunc := GetGLutProcAddress(hDLL, 'glutOverlayDisplayFunc');
- @OLD_glutWindowStatusFunc := GetGLutProcAddress(hDLL, 'glutWindowStatusFunc');
- @OLD_glutKeyboardUpFunc := GetGLutProcAddress(hDLL, 'glutKeyboardUpFunc');
- @OLD_glutSpecialUpFunc := GetGLutProcAddress(hDLL, 'glutSpecialUpFunc');
- @OLD_glutJoystickFunc := GetGLutProcAddress(hDLL, 'glutJoystickFunc');
- @OLD_glutSetColor := GetGLutProcAddress(hDLL, 'glutSetColor');
- @OLD_glutGetColor := GetGLutProcAddress(hDLL, 'glutGetColor');
- @OLD_glutCopyColormap := GetGLutProcAddress(hDLL, 'glutCopyColormap');
- @OLD_glutGet := GetGLutProcAddress(hDLL, 'glutGet');
- @OLD_glutDeviceGet := GetGLutProcAddress(hDLL, 'glutDeviceGet');
- @OLD_glutExtensionSupported := GetGLutProcAddress(hDLL, 'glutExtensionSupported');
- @OLD_glutGetModifiers := GetGLutProcAddress(hDLL, 'glutGetModifiers');
- @OLD_glutLayerGet := GetGLutProcAddress(hDLL, 'glutLayerGet');
- @OLD_glutBitmapCharacter := GetGLutProcAddress(hDLL, 'glutBitmapCharacter');
- @OLD_glutBitmapWidth := GetGLutProcAddress(hDLL, 'glutBitmapWidth');
- @OLD_glutStrokeCharacter := GetGLutProcAddress(hDLL, 'glutStrokeCharacter');
- @OLD_glutStrokeWidth := GetGLutProcAddress(hDLL, 'glutStrokeWidth');
- @OLD_glutBitmapLength := GetGLutProcAddress(hDLL, 'glutBitmapLength');
- @OLD_glutStrokeLength := GetGLutProcAddress(hDLL, 'glutStrokeLength');
- @OLD_glutWireSphere := GetGLutProcAddress(hDLL, 'glutWireSphere');
- @OLD_glutSolidSphere := GetGLutProcAddress(hDLL, 'glutSolidSphere');
- @OLD_glutWireCone := GetGLutProcAddress(hDLL, 'glutWireCone');
- @OLD_glutSolidCone := GetGLutProcAddress(hDLL, 'glutSolidCone');
- @OLD_glutWireCube := GetGLutProcAddress(hDLL, 'glutWireCube');
- @OLD_glutSolidCube := GetGLutProcAddress(hDLL, 'glutSolidCube');
- @OLD_glutWireTorus := GetGLutProcAddress(hDLL, 'glutWireTorus');
- @OLD_glutSolidTorus := GetGLutProcAddress(hDLL, 'glutSolidTorus');
- @OLD_glutWireDodecahedron := GetGLutProcAddress(hDLL, 'glutWireDodecahedron');
- @OLD_glutSolidDodecahedron := GetGLutProcAddress(hDLL, 'glutSolidDodecahedron');
- @OLD_glutWireTeapot := GetGLutProcAddress(hDLL, 'glutWireTeapot');
- @OLD_glutSolidTeapot := GetGLutProcAddress(hDLL, 'glutSolidTeapot');
- @OLD_glutWireOctahedron := GetGLutProcAddress(hDLL, 'glutWireOctahedron');
- @OLD_glutSolidOctahedron := GetGLutProcAddress(hDLL, 'glutSolidOctahedron');
- @OLD_glutWireTetrahedron := GetGLutProcAddress(hDLL, 'glutWireTetrahedron');
- @OLD_glutSolidTetrahedron := GetGLutProcAddress(hDLL, 'glutSolidTetrahedron');
- @OLD_glutWireIcosahedron := GetGLutProcAddress(hDLL, 'glutWireIcosahedron');
- @OLD_glutSolidIcosahedron := GetGLutProcAddress(hDLL, 'glutSolidIcosahedron');
- @OLD_glutVideoResizeGet := GetGLutProcAddress(hDLL, 'glutVideoResizeGet');
- @OLD_glutSetupVideoResizing := GetGLutProcAddress(hDLL, 'glutSetupVideoResizing');
- @OLD_glutStopVideoResizing := GetGLutProcAddress(hDLL, 'glutStopVideoResizing');
- @OLD_glutVideoResize := GetGLutProcAddress(hDLL, 'glutVideoResize');
- @OLD_glutVideoPan := GetGLutProcAddress(hDLL, 'glutVideoPan');
- @OLD_glutReportErrors := GetGLutProcAddress(hDLL, 'glutReportErrors');
- @OLD_glutIgnoreKeyRepeat := GetGLutProcAddress(hDLL, 'glutIgnoreKeyRepeat');
- @OLD_glutSetKeyRepeat := GetGLutProcAddress(hDLL, 'glutSetKeyRepeat');
- @OLD_glutForceJoystickFunc := GetGLutProcAddress(hDLL, 'glutForceJoystickFunc');
- @OLD_glutGameModeString := GetGLutProcAddress(hDLL, 'glutGameModeString');
- @OLD_glutEnterGameMode := GetGLutProcAddress(hDLL, 'glutEnterGameMode');
- @OLD_glutLeaveGameMode := GetGLutProcAddress(hDLL, 'glutLeaveGameMode');
- @OLD_glutGameModeGet := GetGLutProcAddress(hDLL, 'glutGameModeGet');
- {$ELSE GLUT_EXCLUSIVE_FPUMODE}
- @glutInit := GetGLutProcAddress(hDLL, 'glutInit');
- @glutInitDisplayMode := GetGLutProcAddress(hDLL, 'glutInitDisplayMode');
- @glutInitDisplayString := GetGLutProcAddress(hDLL, 'glutInitDisplayString');
- @glutInitWindowPosition := GetGLutProcAddress(hDLL, 'glutInitWindowPosition');
- @glutInitWindowSize := GetGLutProcAddress(hDLL, 'glutInitWindowSize');
- @glutMainLoop := GetGLutProcAddress(hDLL, 'glutMainLoop');
- @glutCreateWindow := GetGLutProcAddress(hDLL, 'glutCreateWindow');
- @glutCreateSubWindow := GetGLutProcAddress(hDLL, 'glutCreateSubWindow');
- @glutDestroyWindow := GetGLutProcAddress(hDLL, 'glutDestroyWindow');
- @glutPostRedisplay := GetGLutProcAddress(hDLL, 'glutPostRedisplay');
- @glutPostWindowRedisplay := GetGLutProcAddress(hDLL, 'glutPostWindowRedisplay');
- @glutSwapBuffers := GetGLutProcAddress(hDLL, 'glutSwapBuffers');
- @glutGetWindow := GetGLutProcAddress(hDLL, 'glutGetWindow');
- @glutSetWindow := GetGLutProcAddress(hDLL, 'glutSetWindow');
- @glutSetWindowTitle := GetGLutProcAddress(hDLL, 'glutSetWindowTitle');
- @glutSetIconTitle := GetGLutProcAddress(hDLL, 'glutSetIconTitle');
- @glutPositionWindow := GetGLutProcAddress(hDLL, 'glutPositionWindow');
- @glutReshapeWindow := GetGLutProcAddress(hDLL, 'glutReshapeWindow');
- @glutPopWindow := GetGLutProcAddress(hDLL, 'glutPopWindow');
- @glutPushWindow := GetGLutProcAddress(hDLL, 'glutPushWindow');
- @glutIconifyWindow := GetGLutProcAddress(hDLL, 'glutIconifyWindow');
- @glutShowWindow := GetGLutProcAddress(hDLL, 'glutShowWindow');
- @glutHideWindow := GetGLutProcAddress(hDLL, 'glutHideWindow');
- @glutFullScreen := GetGLutProcAddress(hDLL, 'glutFullScreen');
- @glutSetCursor := GetGLutProcAddress(hDLL, 'glutSetCursor');
- @glutWarpPointer := GetGLutProcAddress(hDLL, 'glutWarpPointer');
- @glutEstablishOverlay := GetGLutProcAddress(hDLL, 'glutEstablishOverlay');
- @glutRemoveOverlay := GetGLutProcAddress(hDLL, 'glutRemoveOverlay');
- @glutUseLayer := GetGLutProcAddress(hDLL, 'glutUseLayer');
- @glutPostOverlayRedisplay := GetGLutProcAddress(hDLL, 'glutPostOverlayRedisplay');
- @glutPostWindowOverlayRedisplay := GetGLutProcAddress(hDLL, 'glutPostWindowOverlayRedisplay');
- @glutShowOverlay := GetGLutProcAddress(hDLL, 'glutShowOverlay');
- @glutHideOverlay := GetGLutProcAddress(hDLL, 'glutHideOverlay');
- @glutCreateMenu := GetGLutProcAddress(hDLL, 'glutCreateMenu');
- @glutDestroyMenu := GetGLutProcAddress(hDLL, 'glutDestroyMenu');
- @glutGetMenu := GetGLutProcAddress(hDLL, 'glutGetMenu');
- @glutSetMenu := GetGLutProcAddress(hDLL, 'glutSetMenu');
- @glutAddMenuEntry := GetGLutProcAddress(hDLL, 'glutAddMenuEntry');
- @glutAddSubMenu := GetGLutProcAddress(hDLL, 'glutAddSubMenu');
- @glutChangeToMenuEntry := GetGLutProcAddress(hDLL, 'glutChangeToMenuEntry');
- @glutChangeToSubMenu := GetGLutProcAddress(hDLL, 'glutChangeToSubMenu');
- @glutRemoveMenuItem := GetGLutProcAddress(hDLL, 'glutRemoveMenuItem');
- @glutAttachMenu := GetGLutProcAddress(hDLL, 'glutAttachMenu');
- @glutDetachMenu := GetGLutProcAddress(hDLL, 'glutDetachMenu');
- @glutDisplayFunc := GetGLutProcAddress(hDLL, 'glutDisplayFunc');
- @glutReshapeFunc := GetGLutProcAddress(hDLL, 'glutReshapeFunc');
- @glutKeyboardFunc := GetGLutProcAddress(hDLL, 'glutKeyboardFunc');
- @glutMouseFunc := GetGLutProcAddress(hDLL, 'glutMouseFunc');
- @glutMotionFunc := GetGLutProcAddress(hDLL, 'glutMotionFunc');
- @glutPassiveMotionFunc := GetGLutProcAddress(hDLL, 'glutPassiveMotionFunc');
- @glutEntryFunc := GetGLutProcAddress(hDLL, 'glutEntryFunc');
- @glutVisibilityFunc := GetGLutProcAddress(hDLL, 'glutVisibilityFunc');
- @glutIdleFunc := GetGLutProcAddress(hDLL, 'glutIdleFunc');
- @glutTimerFunc := GetGLutProcAddress(hDLL, 'glutTimerFunc');
- @glutMenuStateFunc := GetGLutProcAddress(hDLL, 'glutMenuStateFunc');
- @glutSpecialFunc := GetGLutProcAddress(hDLL, 'glutSpecialFunc');
- @glutSpaceballMotionFunc := GetGLutProcAddress(hDLL, 'glutSpaceballMotionFunc');
- @glutSpaceballRotateFunc := GetGLutProcAddress(hDLL, 'glutSpaceballRotateFunc');
- @glutSpaceballButtonFunc := GetGLutProcAddress(hDLL, 'glutSpaceballButtonFunc');
- @glutButtonBoxFunc := GetGLutProcAddress(hDLL, 'glutButtonBoxFunc');
- @glutDialsFunc := GetGLutProcAddress(hDLL, 'glutDialsFunc');
- @glutTabletMotionFunc := GetGLutProcAddress(hDLL, 'glutTabletMotionFunc');
- @glutTabletButtonFunc := GetGLutProcAddress(hDLL, 'glutTabletButtonFunc');
- @glutMenuStatusFunc := GetGLutProcAddress(hDLL, 'glutMenuStatusFunc');
- @glutOverlayDisplayFunc := GetGLutProcAddress(hDLL, 'glutOverlayDisplayFunc');
- @glutWindowStatusFunc := GetGLutProcAddress(hDLL, 'glutWindowStatusFunc');
- @glutKeyboardUpFunc := GetGLutProcAddress(hDLL, 'glutKeyboardUpFunc');
- @glutSpecialUpFunc := GetGLutProcAddress(hDLL, 'glutSpecialUpFunc');
- @glutJoystickFunc := GetGLutProcAddress(hDLL, 'glutJoystickFunc');
- @glutSetColor := GetGLutProcAddress(hDLL, 'glutSetColor');
- @glutGetColor := GetGLutProcAddress(hDLL, 'glutGetColor');
- @glutCopyColormap := GetGLutProcAddress(hDLL, 'glutCopyColormap');
- @glutGet := GetGLutProcAddress(hDLL, 'glutGet');
- @glutDeviceGet := GetGLutProcAddress(hDLL, 'glutDeviceGet');
- @glutExtensionSupported := GetGLutProcAddress(hDLL, 'glutExtensionSupported');
- @glutGetModifiers := GetGLutProcAddress(hDLL, 'glutGetModifiers');
- @glutLayerGet := GetGLutProcAddress(hDLL, 'glutLayerGet');
- @glutBitmapCharacter := GetGLutProcAddress(hDLL, 'glutBitmapCharacter');
- @glutBitmapWidth := GetGLutProcAddress(hDLL, 'glutBitmapWidth');
- @glutStrokeCharacter := GetGLutProcAddress(hDLL, 'glutStrokeCharacter');
- @glutStrokeWidth := GetGLutProcAddress(hDLL, 'glutStrokeWidth');
- @glutBitmapLength := GetGLutProcAddress(hDLL, 'glutBitmapLength');
- @glutStrokeLength := GetGLutProcAddress(hDLL, 'glutStrokeLength');
- @glutWireSphere := GetGLutProcAddress(hDLL, 'glutWireSphere');
- @glutSolidSphere := GetGLutProcAddress(hDLL, 'glutSolidSphere');
- @glutWireCone := GetGLutProcAddress(hDLL, 'glutWireCone');
- @glutSolidCone := GetGLutProcAddress(hDLL, 'glutSolidCone');
- @glutWireCube := GetGLutProcAddress(hDLL, 'glutWireCube');
- @glutSolidCube := GetGLutProcAddress(hDLL, 'glutSolidCube');
- @glutWireTorus := GetGLutProcAddress(hDLL, 'glutWireTorus');
- @glutSolidTorus := GetGLutProcAddress(hDLL, 'glutSolidTorus');
- @glutWireDodecahedron := GetGLutProcAddress(hDLL, 'glutWireDodecahedron');
- @glutSolidDodecahedron := GetGLutProcAddress(hDLL, 'glutSolidDodecahedron');
- @glutWireTeapot := GetGLutProcAddress(hDLL, 'glutWireTeapot');
- @glutSolidTeapot := GetGLutProcAddress(hDLL, 'glutSolidTeapot');
- @glutWireOctahedron := GetGLutProcAddress(hDLL, 'glutWireOctahedron');
- @glutSolidOctahedron := GetGLutProcAddress(hDLL, 'glutSolidOctahedron');
- @glutWireTetrahedron := GetGLutProcAddress(hDLL, 'glutWireTetrahedron');
- @glutSolidTetrahedron := GetGLutProcAddress(hDLL, 'glutSolidTetrahedron');
- @glutWireIcosahedron := GetGLutProcAddress(hDLL, 'glutWireIcosahedron');
- @glutSolidIcosahedron := GetGLutProcAddress(hDLL, 'glutSolidIcosahedron');
- @glutVideoResizeGet := GetGLutProcAddress(hDLL, 'glutVideoResizeGet');
- @glutSetupVideoResizing := GetGLutProcAddress(hDLL, 'glutSetupVideoResizing');
- @glutStopVideoResizing := GetGLutProcAddress(hDLL, 'glutStopVideoResizing');
- @glutVideoResize := GetGLutProcAddress(hDLL, 'glutVideoResize');
- @glutVideoPan := GetGLutProcAddress(hDLL, 'glutVideoPan');
- @glutReportErrors := GetGLutProcAddress(hDLL, 'glutReportErrors');
- @glutIgnoreKeyRepeat := GetGLutProcAddress(hDLL, 'glutIgnoreKeyRepeat');
- @glutSetKeyRepeat := GetGLutProcAddress(hDLL, 'glutSetKeyRepeat');
- @glutForceJoystickFunc := GetGLutProcAddress(hDLL, 'glutForceJoystickFunc');
- @glutGameModeString := GetGLutProcAddress(hDLL, 'glutGameModeString');
- @glutEnterGameMode := GetGLutProcAddress(hDLL, 'glutEnterGameMode');
- @glutLeaveGameMode := GetGLutProcAddress(hDLL, 'glutLeaveGameMode');
- @glutGameModeGet := GetGLutProcAddress(hDLL, 'glutGameModeGet');
- {$ENDIF GLUT_EXCLUSIVE_FPUMODE}
- {$ifndef Windows}
- GLUT_STROKE_ROMAN := GetGLutProcAddress(hDll, 'glutStrokeRoman');
- GLUT_STROKE_MONO_ROMAN := GetGLutProcAddress(hDll,'glutStrokeMonoRoman');
- GLUT_BITMAP_9_BY_15 := GetGLutProcAddress(hDll, 'glutBitmap9By15');
- GLUT_BITMAP_8_BY_13 := GetGLutProcAddress(hDll, 'glutBitmap8By13');
- GLUT_BITMAP_TIMES_ROMAN_10 := GetGLutProcAddress(hDll, 'glutBitmapTimesRoman10');
- GLUT_BITMAP_TIMES_ROMAN_24 := GetGLutProcAddress(hDll, 'glutBitmapTimesRoman24');
- GLUT_BITMAP_HELVETICA_10 := GetGLutProcAddress(hDll, 'glutBitmapHelvetica10');
- GLUT_BITMAP_HELVETICA_12 := GetGLutProcAddress(hDll, 'glutBitmapHelvetica12');
- GLUT_BITMAP_HELVETICA_18 := GetGLutProcAddress(hDll, 'glutBitmapHelvetica18');
- {$endif Windows}
- except
- raise Exception.Create('Could not load ' + MethodName + ' from ' + dll);
- end;
- end;
- {$ENDIF MORPHOS}
- {$IFDEF GLUT_EXCLUSIVE_FPUMODE}
- VAR
- GLUT_EXCLUSIVE_glut_ExceptionMask : TFPUExceptionMask;
- GLUT_EXCLUSIVE_fpc__ExceptionMask : TFPUExceptionMask;
- GLUT_EXCLUSIVE_glut_PrecisionMode : TFPUPrecisionMode;
- GLUT_EXCLUSIVE_fpc__PrecisionMode : TFPUPrecisionMode;
- GLUT_EXCLUSIVE_glut_RoundMode : TFPURoundingMode;
- GLUT_EXCLUSIVE_fpc__RoundMode : TFPURoundingMode;
- PROCEDURE init_fpumode;
- BEGIN
- GLUT_EXCLUSIVE_glut_ExceptionMask := GetExceptionMask+[exDenormalized, exInvalidOp, exOverflow, exPrecision, exUnderflow, exZeroDivide];
- GLUT_EXCLUSIVE_glut_PrecisionMode := GetPrecisionMode;
- GLUT_EXCLUSIVE_glut_RoundMode := GetRoundMode;
- END;
- PROCEDURE switch_to_glut_fpumode; mode_inline;
- BEGIN
- GLUT_EXCLUSIVE_fpc__ExceptionMask := GetExceptionMask;
- GLUT_EXCLUSIVE_fpc__PrecisionMode := GetPrecisionMode;
- GLUT_EXCLUSIVE_fpc__RoundMode := GetRoundMode;
- SetExceptionMask(GLUT_EXCLUSIVE_glut_ExceptionMask);
- SetPrecisionMode(GLUT_EXCLUSIVE_glut_PrecisionMode);
- SetRoundMode(GLUT_EXCLUSIVE_glut_RoundMode);
- END;
- PROCEDURE switch_to_FPC_fpumode; mode_inline;
- BEGIN
- GLUT_EXCLUSIVE_glut_ExceptionMask := GetExceptionMask;
- GLUT_EXCLUSIVE_glut_PrecisionMode := GetPrecisionMode;
- GLUT_EXCLUSIVE_glut_RoundMode := GetRoundMode;
- SetExceptionMask(GLUT_EXCLUSIVE_fpc__ExceptionMask);
- SetPrecisionMode(GLUT_EXCLUSIVE_fpc__PrecisionMode);
- SetRoundMode(GLUT_EXCLUSIVE_fpc__RoundMode);
- END;
- procedure glutInit(argcp: PInteger; argv: PPChar);
- begin
- switch_to_glut_fpumode;
- OLD_glutInit(argcp,argv);
- switch_to_FPC_fpumode;
- end;
- procedure glutInitDisplayMode(mode: Word);
- begin
- switch_to_glut_fpumode;
- OLD_glutInitDisplayMode(mode);
- switch_to_FPC_fpumode;
- end;
- procedure glutInitDisplayString(const str: PChar);
- begin
- switch_to_glut_fpumode;
- OLD_glutInitDisplayString(str);
- switch_to_FPC_fpumode;
- end;
- procedure glutInitWindowPosition(x, y: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutInitWindowPosition(x,y);
- switch_to_FPC_fpumode;
- end;
- procedure glutInitWindowSize(width, height: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutInitWindowSize(width,height);
- switch_to_FPC_fpumode;
- end;
- procedure glutMainLoop;
- begin
- switch_to_glut_fpumode;
- OLD_glutMainLoop();
- switch_to_FPC_fpumode;
- end;
- function glutCreateWindow(const title: PChar): Integer;
- begin
- switch_to_glut_fpumode;
- glutCreateWindow := OLD_glutCreateWindow(title);
- switch_to_FPC_fpumode;
- end;
- function glutCreateSubWindow(win, x, y, width, height: Integer): Integer;
- begin
- switch_to_glut_fpumode;
- glutCreateSubWindow := OLD_glutCreateSubWindow(win,x,y,width,height);
- switch_to_FPC_fpumode;
- end;
- procedure glutDestroyWindow(win: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutDestroyWindow(win);
- switch_to_FPC_fpumode;
- end;
- procedure glutPostRedisplay;
- begin
- switch_to_glut_fpumode;
- OLD_glutPostRedisplay();
- switch_to_FPC_fpumode;
- end;
- procedure glutPostWindowRedisplay(win: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutPostWindowRedisplay(win);
- switch_to_FPC_fpumode;
- end;
- procedure glutSwapBuffers;
- begin
- switch_to_glut_fpumode;
- OLD_glutSwapBuffers();
- switch_to_FPC_fpumode;
- end;
- function glutGetWindow: Integer;
- begin
- switch_to_glut_fpumode;
- glutGetWindow := OLD_glutGetWindow();
- switch_to_FPC_fpumode;
- end;
- procedure glutSetWindow(win: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetWindow(win);
- switch_to_FPC_fpumode;
- end;
- procedure glutSetWindowTitle(const title: PChar);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetWindowTitle(title);
- switch_to_FPC_fpumode;
- end;
- procedure glutSetIconTitle(const title: PChar);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetIconTitle(title);
- switch_to_FPC_fpumode;
- end;
- procedure glutPositionWindow(x, y: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutPositionWindow(x,y);
- switch_to_FPC_fpumode;
- end;
- procedure glutReshapeWindow(width, height: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutReshapeWindow(width,height);
- switch_to_FPC_fpumode;
- end;
- procedure glutPopWindow;
- begin
- switch_to_glut_fpumode;
- OLD_glutPopWindow();
- switch_to_FPC_fpumode;
- end;
- procedure glutPushWindow;
- begin
- switch_to_glut_fpumode;
- OLD_glutPushWindow();
- switch_to_FPC_fpumode;
- end;
- procedure glutIconifyWindow;
- begin
- switch_to_glut_fpumode;
- OLD_glutIconifyWindow();
- switch_to_FPC_fpumode;
- end;
- procedure glutShowWindow;
- begin
- switch_to_glut_fpumode;
- OLD_glutShowWindow();
- switch_to_FPC_fpumode;
- end;
- procedure glutHideWindow;
- begin
- switch_to_glut_fpumode;
- OLD_glutHideWindow();
- switch_to_FPC_fpumode;
- end;
- procedure glutFullScreen;
- begin
- switch_to_glut_fpumode;
- OLD_glutFullScreen();
- switch_to_FPC_fpumode;
- end;
- procedure glutSetCursor(cursor: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetCursor(cursor);
- switch_to_FPC_fpumode;
- end;
- procedure glutWarpPointer(x, y: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutWarpPointer(x,y);
- switch_to_FPC_fpumode;
- end;
- procedure glutEstablishOverlay;
- begin
- switch_to_glut_fpumode;
- OLD_glutEstablishOverlay();
- switch_to_FPC_fpumode;
- end;
- procedure glutRemoveOverlay;
- begin
- switch_to_glut_fpumode;
- OLD_glutRemoveOverlay();
- switch_to_FPC_fpumode;
- end;
- procedure glutUseLayer(layer: GLenum);
- begin
- switch_to_glut_fpumode;
- OLD_glutUseLayer(layer);
- switch_to_FPC_fpumode;
- end;
- procedure glutPostOverlayRedisplay;
- begin
- switch_to_glut_fpumode;
- OLD_glutPostOverlayRedisplay();
- switch_to_FPC_fpumode;
- end;
- procedure glutPostWindowOverlayRedisplay(win: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutPostWindowOverlayRedisplay(win);
- switch_to_FPC_fpumode;
- end;
- procedure glutShowOverlay;
- begin
- switch_to_glut_fpumode;
- OLD_glutShowOverlay();
- switch_to_FPC_fpumode;
- end;
- procedure glutHideOverlay;
- begin
- switch_to_glut_fpumode;
- OLD_glutHideOverlay();
- switch_to_FPC_fpumode;
- end;
- function glutCreateMenu(callback: TGlut1IntCallback): Integer;
- begin
- switch_to_glut_fpumode;
- glutCreateMenu := OLD_glutCreateMenu(callback);
- switch_to_FPC_fpumode;
- end;
- procedure glutDestroyMenu(menu: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutDestroyMenu(menu);
- switch_to_FPC_fpumode;
- end;
- function glutGetMenu: Integer;
- begin
- switch_to_glut_fpumode;
- glutGetMenu := OLD_glutGetMenu();
- switch_to_FPC_fpumode;
- end;
- procedure glutSetMenu(menu: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetMenu(menu);
- switch_to_FPC_fpumode;
- end;
- procedure glutAddMenuEntry(const caption: PChar; value: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutAddMenuEntry(caption,value);
- switch_to_FPC_fpumode;
- end;
- procedure glutAddSubMenu(const caption: PChar; submenu: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutAddSubMenu(caption,submenu);
- switch_to_FPC_fpumode;
- end;
- procedure glutChangeToMenuEntry(item: Integer; const caption: PChar; value: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutChangeToMenuEntry(item,caption,value);
- switch_to_FPC_fpumode;
- end;
- procedure glutChangeToSubMenu(item: Integer; const caption: PChar; submenu: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutChangeToSubMenu(item,caption,submenu);
- switch_to_FPC_fpumode;
- end;
- procedure glutRemoveMenuItem(item: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutRemoveMenuItem(item);
- switch_to_FPC_fpumode;
- end;
- procedure glutAttachMenu(button: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutAttachMenu(button);
- switch_to_FPC_fpumode;
- end;
- procedure glutDetachMenu(button: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutDetachMenu(button);
- switch_to_FPC_fpumode;
- end;
- procedure glutDisplayFunc(f: TGlutVoidCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutDisplayFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutReshapeFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutReshapeFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutKeyboardFunc(f: TGlut1Char2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutKeyboardFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutMouseFunc(f: TGlut4IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutMouseFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutMotionFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutMotionFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutPassiveMotionFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutPassiveMotionFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutEntryFunc(f: TGlut1IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutEntryFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutVisibilityFunc(f: TGlut1IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutVisibilityFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutIdleFunc(f: TGlutVoidCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutIdleFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutTimerFunc(millis: Word; f: TGlut1IntCallback; value: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutTimerFunc(millis,f,value);
- switch_to_FPC_fpumode;
- end;
- procedure glutMenuStateFunc(f: TGlut1IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutMenuStateFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutSpecialFunc(f: TGlut3IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutSpecialFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutSpaceballMotionFunc(f: TGlut3IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutSpaceballMotionFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutSpaceballRotateFunc(f: TGlut3IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutSpaceballRotateFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutSpaceballButtonFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutSpaceballButtonFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutButtonBoxFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutButtonBoxFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutDialsFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutDialsFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutTabletMotionFunc(f: TGlut2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutTabletMotionFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutTabletButtonFunc(f: TGlut4IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutTabletButtonFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutMenuStatusFunc(f: TGlut3IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutMenuStatusFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutOverlayDisplayFunc(f:TGlutVoidCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutOverlayDisplayFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutWindowStatusFunc(f: TGlut1IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutWindowStatusFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutKeyboardUpFunc(f: TGlut1Char2IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutKeyboardUpFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutSpecialUpFunc(f: TGlut3IntCallback);
- begin
- switch_to_glut_fpumode;
- OLD_glutSpecialUpFunc(f);
- switch_to_FPC_fpumode;
- end;
- procedure glutJoystickFunc(f: TGlut1UInt3IntCallback; pollInterval: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutJoystickFunc(f,pollInterval);
- switch_to_FPC_fpumode;
- end;
- procedure glutSetColor(cell: Integer; red, green, blue: GLfloat);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetColor(cell,red,green,blue);
- switch_to_FPC_fpumode;
- end;
- function glutGetColor(ndx, component: Integer): GLfloat;
- begin
- switch_to_glut_fpumode;
- glutGetColor := OLD_glutGetColor(ndx,component);
- switch_to_FPC_fpumode;
- end;
- procedure glutCopyColormap(win: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutCopyColormap(win);
- switch_to_FPC_fpumode;
- end;
- function glutGet(t: GLenum): Integer;
- begin
- switch_to_glut_fpumode;
- glutGet := OLD_glutGet(t);
- switch_to_FPC_fpumode;
- end;
- function glutDeviceGet(t: GLenum): Integer;
- begin
- switch_to_glut_fpumode;
- glutDeviceGet := OLD_glutDeviceGet(t);
- switch_to_FPC_fpumode;
- end;
- function glutExtensionSupported(const name: PChar): Integer;
- begin
- switch_to_glut_fpumode;
- glutExtensionSupported := OLD_glutExtensionSupported(name);
- switch_to_FPC_fpumode;
- end;
- function glutGetModifiers: Integer;
- begin
- switch_to_glut_fpumode;
- glutGetModifiers := OLD_glutGetModifiers();
- switch_to_FPC_fpumode;
- end;
- function glutLayerGet(t: GLenum): Integer;
- begin
- switch_to_glut_fpumode;
- glutLayerGet := OLD_glutLayerGet(t);
- switch_to_FPC_fpumode;
- end;
- procedure glutBitmapCharacter(font : pointer; character: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutBitmapCharacter(font,character);
- switch_to_FPC_fpumode;
- end;
- function glutBitmapWidth(font : pointer; character: Integer): Integer;
- begin
- switch_to_glut_fpumode;
- glutBitmapWidth := OLD_glutBitmapWidth(font,character);
- switch_to_FPC_fpumode;
- end;
- procedure glutStrokeCharacter(font : pointer; character: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutStrokeCharacter(font,character);
- switch_to_FPC_fpumode;
- end;
- function glutStrokeWidth(font : pointer; character: Integer): Integer;
- begin
- switch_to_glut_fpumode;
- glutStrokeWidth := OLD_glutStrokeWidth(font,character);
- switch_to_FPC_fpumode;
- end;
- function glutBitmapLength(font: pointer; const str: PChar): Integer;
- begin
- switch_to_glut_fpumode;
- glutBitmapLength := OLD_glutBitmapLength(font,str);
- switch_to_FPC_fpumode;
- end;
- function glutStrokeLength(font: pointer; const str: PChar): Integer;
- begin
- switch_to_glut_fpumode;
- glutStrokeLength := OLD_glutStrokeLength(font,str);
- switch_to_FPC_fpumode;
- end;
- procedure glutWireSphere(radius: GLdouble; slices, stacks: GLint);
- begin
- switch_to_glut_fpumode;
- OLD_glutWireSphere(radius,slices,stacks);
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidSphere(radius: GLdouble; slices, stacks: GLint);
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidSphere(radius,slices,stacks);
- switch_to_FPC_fpumode;
- end;
- procedure glutWireCone(base, height: GLdouble; slices, stacks: GLint);
- begin
- switch_to_glut_fpumode;
- OLD_glutWireCone(base,height,slices,stacks);
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidCone(base, height: GLdouble; slices, stacks: GLint);
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidCone(base,height,slices,stacks);
- switch_to_FPC_fpumode;
- end;
- procedure glutWireCube(size: GLdouble);
- begin
- switch_to_glut_fpumode;
- OLD_glutWireCube(size);
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidCube(size: GLdouble);
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidCube(size);
- switch_to_FPC_fpumode;
- end;
- procedure glutWireTorus(innerRadius, outerRadius: GLdouble; sides, rings: GLint);
- begin
- switch_to_glut_fpumode;
- OLD_glutWireTorus(innerRadius,outerRadius,sides,rings);
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidTorus(innerRadius, outerRadius: GLdouble; sides, rings: GLint);
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidTorus(innerRadius,outerRadius,sides,rings);
- switch_to_FPC_fpumode;
- end;
- procedure glutWireDodecahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutWireDodecahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidDodecahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidDodecahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutWireTeapot(size: GLdouble);
- begin
- switch_to_glut_fpumode;
- OLD_glutWireTeapot(size);
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidTeapot(size: GLdouble);
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidTeapot(size);
- switch_to_FPC_fpumode;
- end;
- procedure glutWireOctahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutWireOctahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidOctahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidOctahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutWireTetrahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutWireTetrahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidTetrahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidTetrahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutWireIcosahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutWireIcosahedron();
- switch_to_FPC_fpumode;
- end;
- procedure glutSolidIcosahedron;
- begin
- switch_to_glut_fpumode;
- OLD_glutSolidIcosahedron();
- switch_to_FPC_fpumode;
- end;
- function glutVideoResizeGet(param: GLenum): Integer;
- begin
- switch_to_glut_fpumode;
- glutVideoResizeGet := OLD_glutVideoResizeGet(param);
- switch_to_FPC_fpumode;
- end;
- procedure glutSetupVideoResizing;
- begin
- switch_to_glut_fpumode;
- OLD_glutSetupVideoResizing();
- switch_to_FPC_fpumode;
- end;
- procedure glutStopVideoResizing;
- begin
- switch_to_glut_fpumode;
- OLD_glutStopVideoResizing();
- switch_to_FPC_fpumode;
- end;
- procedure glutVideoResize(x, y, width, height: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutVideoResize(x,y,width,height);
- switch_to_FPC_fpumode;
- end;
- procedure glutVideoPan(x, y, width, height: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutVideoPan(x,y,width,height);
- switch_to_FPC_fpumode;
- end;
- procedure glutReportErrors;
- begin
- switch_to_glut_fpumode;
- OLD_glutReportErrors();
- switch_to_FPC_fpumode;
- end;
- procedure glutIgnoreKeyRepeat(ignore: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutIgnoreKeyRepeat(ignore);
- switch_to_FPC_fpumode;
- end;
- procedure glutSetKeyRepeat(repeatMode: Integer);
- begin
- switch_to_glut_fpumode;
- OLD_glutSetKeyRepeat(repeatMode);
- switch_to_FPC_fpumode;
- end;
- procedure glutForceJoystickFunc;
- begin
- switch_to_glut_fpumode;
- OLD_glutForceJoystickFunc();
- switch_to_FPC_fpumode;
- end;
- procedure glutGameModeString(const AString : PChar);
- begin
- switch_to_glut_fpumode;
- OLD_glutGameModeString(AString);
- switch_to_FPC_fpumode;
- end;
- function glutEnterGameMode: integer;
- begin
- switch_to_glut_fpumode;
- glutEnterGameMode := OLD_glutEnterGameMode();
- switch_to_FPC_fpumode;
- end;
- procedure glutLeaveGameMode;
- begin
- switch_to_glut_fpumode;
- OLD_glutLeaveGameMode();
- switch_to_FPC_fpumode;
- end;
- function glutGameModeGet(mode : GLenum): integer;
- begin
- switch_to_glut_fpumode;
- glutGameModeGet := OLD_glutGameModeGet(mode);
- switch_to_FPC_fpumode;
- end;
- {$ENDIF GLUT_EXCLUSIVE_FPUMODE}
- initialization
- {$IFDEF GLUT_EXCLUSIVE_FPUMODE}
- init_fpumode;
- {$ENDIF GLUT_EXCLUSIVE_FPUMODE}
- {$IFDEF Windows}
- LoadGlut('glut32.dll');
- {$ELSE}
- {$ifdef darwin}
- LoadGlut('/System/Library/Frameworks/GLUT.framework/GLUT');
- {$else}
- {$IFNDEF MORPHOS}
- LoadGlut('libglut.so.3');
- {$ENDIF}
- {$endif}
- {$ENDIF}
- finalization
- FreeGlut;
- end.
|