{$MODE delphi} unit GLUT; interface {$MACRO ON} {$IFDEF Win32} {$DEFINE glut_dll := } {$DEFINE gldecl := stdcall;} {$DEFINE extdecl := stdcall;} uses windows, GL; {$ELSE} {$MESSAGE Unsupported platform.} {$ENDIF} function InitGLUTFromLibrary(libname: PChar): Boolean; // determines automatically which library to use: function InitGLUT: Boolean; var GLUTDumpUnresolvedFunctions, GLUTInitialized: Boolean; %GLUTDeclsIF var %GLUTProcsPD implementation type HInstance = LongWord; var libGLUT: HInstance; function GetProc(handle: HInstance; name: PChar): Pointer; begin Result := GetProcAddress(handle, name); if (Result = nil) and GLUTDumpUnresolvedFunctions then WriteLn('Unresolved: ', name); end; function InitGLUTFromLibrary(libname: PChar): Boolean; begin Result := False; libGLUT := LoadLibrary(libname); if libGLUT = 0 then exit; %GLUTProcsPL GLUTInitialized := True; Result := True; end; function InitGLUT: Boolean; begin Result := InitGLUTFromLibrary('glut32.dll'); end; initialization InitGLUT; finalization if libGLUT <> 0 then FreeLibrary(libGLUT); end.