mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-01 23:38:00 +01:00
* Some minor fixes (missing "const"s, changed some untyped "var" arguments to "const" arguments etc.)
122 lines
2.9 KiB
Smarty
122 lines
2.9 KiB
Smarty
{
|
|
$Id$
|
|
|
|
Translation of the GLUT 3.7 headers for Free Pascal, Linux version
|
|
Copyright (C) 1999-2000 Sebastian Guenther, sg@freepascal.org
|
|
|
|
|
|
Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998.
|
|
|
|
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.
|
|
}
|
|
|
|
|
|
unit GLUT;
|
|
|
|
{$MODE delphi}
|
|
|
|
interface
|
|
|
|
uses GL;
|
|
|
|
function InitGLUTFromLibrary(const libname: PChar): Boolean;
|
|
|
|
// determines automatically which library to use:
|
|
function InitGLUT: Boolean;
|
|
|
|
|
|
var
|
|
GLUTInitialized: Boolean;
|
|
|
|
{ Set the following value to True if you want to have a list of all
|
|
unresolved GLUT functions dumped to the console }
|
|
GLUTDumpUnresolvedFunctions: Boolean;
|
|
|
|
%GLUTDecls
|
|
|
|
{ The following stuff does not exist in the Win32 version: }
|
|
(* commented out because cvars don't work in Delphi mode...
|
|
// Stroke font opaque addresses (use constants instead in source code).
|
|
var
|
|
glutStrokeRoman, glutStrokeMonoRoman: Pointer; cvar; external;
|
|
|
|
// Stroke font constants (use these in GLUT program).
|
|
const
|
|
GLUT_STROKE_ROMAN = @glutStrokeRoman;
|
|
GLUT_STROKE_MONO_ROMAN = @glutStrokeMonoRoman;
|
|
|
|
// Bitmap font opaque addresses (use constants instead in source code).
|
|
var
|
|
glutBitmap9By15, glutBitmap8By13, glutBitmapTimesRoman10,
|
|
glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12,
|
|
glutBitmapHelvetica18: Pointer; cdecl; external;
|
|
|
|
// Bitmap font constants (use these in GLUT program).
|
|
const
|
|
GLUT_BITMAP_9_BY_15 = @glutBitmap9By15;
|
|
GLUT_BITMAP_8_BY_13 = @glutBitmap8By13;
|
|
GLUT_BITMAP_TIMES_ROMAN_10 = @glutBitmapTimesRoman10;
|
|
GLUT_BITMAP_TIMES_ROMAN_24 = @glutBitmapTimesRoman24;
|
|
GLUT_BITMAP_HELVETICA_10 = @glutBitmapHelvetica10;
|
|
GLUT_BITMAP_HELVETICA_12 = @glutBitmapHelvetica12;
|
|
GLUT_BITMAP_HELVETICA_18 = @glutBitmapHelvetica18;*)
|
|
|
|
%GLUTProcs1
|
|
|
|
|
|
implementation
|
|
|
|
{$LINKLIB Xmu}
|
|
|
|
function dlopen(const AFile: PChar; mode: LongInt): Pointer; external 'dl';
|
|
function dlclose(handle: Pointer): LongInt; external 'dl';
|
|
function dlsym(handle: Pointer; const name: PChar): Pointer; external 'dl';
|
|
|
|
function LoadLibrary(const name: PChar): Pointer;
|
|
begin
|
|
Result := dlopen(name, $101 {RTLD_GLOBAL or RTLD_LAZY});
|
|
end;
|
|
|
|
procedure FreeLibrary(handle: Pointer);
|
|
begin
|
|
dlclose(handle);
|
|
end;
|
|
|
|
function GetProc(handle: Pointer; const name: PChar): Pointer;
|
|
begin
|
|
Result := dlsym(handle, name);
|
|
if not Assigned(Result) and GLUTDumpUnresolvedFunctions then
|
|
WriteLn('Unresolved: ', name);
|
|
end;
|
|
|
|
var
|
|
libGLUT: Pointer;
|
|
|
|
function InitGLUTFromLibrary(const libname: PChar): Boolean;
|
|
begin
|
|
Result := False;
|
|
libGLUT := LoadLibrary(libname);
|
|
if not Assigned(libGLUT) then
|
|
exit;
|
|
|
|
%GLUTProcs2
|
|
|
|
GLUTInitialized := True;
|
|
Result := True;
|
|
end;
|
|
|
|
|
|
function InitGLUT: Boolean;
|
|
begin
|
|
Result := InitGLUTFromLibrary('libglut.so') or InitGLUTFromLibrary('libglut.so.3');
|
|
end;
|
|
|
|
|
|
|
|
finalization
|
|
if Assigned(libGLUT) then
|
|
FreeLibrary(libGLUT);
|
|
end.
|