mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-07 21:50:14 +02:00
+ MorphOS support added to standard units, hope i didn't broke something else
git-svn-id: trunk@1790 -
This commit is contained in:
parent
4d52b9c7bf
commit
131520c36b
@ -48,7 +48,11 @@ Abstract:
|
||||
{$DEFINE extdecl := stdcall}
|
||||
{$ELSE}
|
||||
{$DEFINE extdecl := cdecl}
|
||||
{$LINKLIB c}
|
||||
{$IFDEF MorphOS}
|
||||
{$DEFINE GL_UNIT}
|
||||
{$ELSE}
|
||||
{$LINKLIB c}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
unit GL;
|
||||
@ -60,11 +64,17 @@ uses
|
||||
{$IFDEF Win32}
|
||||
Windows
|
||||
{$ELSE Win32}
|
||||
{$IFDEF MorphOS}
|
||||
TinyGL
|
||||
{$ELSE MorphOS}
|
||||
DLLFuncs
|
||||
{$ENDIF MorphOS}
|
||||
{$ENDIF Win32};
|
||||
|
||||
{$IFNDEF MORPHOS}
|
||||
var
|
||||
LibGL: THandle;
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
type
|
||||
GLenum = Cardinal; PGLenum = ^GLenum;
|
||||
@ -1161,6 +1171,13 @@ const
|
||||
|
||||
{******************************************************************************}
|
||||
|
||||
{$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}
|
||||
var
|
||||
glAccum: procedure(op: GLenum; value: GLfloat); extdecl;
|
||||
glAlphaFunc: procedure(func: GLenum; ref: GLclampf); extdecl;
|
||||
@ -1501,6 +1518,7 @@ var
|
||||
{$IFDEF Win32}
|
||||
ChoosePixelFormat: function(DC: HDC; p2: PPixelFormatDescriptor): Integer; extdecl;
|
||||
{$ENDIF}
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
type
|
||||
// EXT_vertex_array
|
||||
@ -1543,9 +1561,21 @@ implementation
|
||||
function WinChoosePixelFormat(DC: HDC; p2: PPixelFormatDescriptor): Integer; extdecl; external 'gdi32' name 'ChoosePixelFormat';
|
||||
{$endif}
|
||||
|
||||
{$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}
|
||||
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
procedure FreeOpenGL;
|
||||
begin
|
||||
{$IFDEF MORPHOS}
|
||||
|
||||
// MorphOS's GL will closed down by TinyGL unit, nothing is needed here.
|
||||
|
||||
{$ELSE MORPHOS}
|
||||
@glAccum := nil;
|
||||
@glAlphaFunc := nil;
|
||||
@glAreTexturesResident := nil;
|
||||
@ -1887,10 +1917,15 @@ begin
|
||||
{$ENDIF}
|
||||
|
||||
FreeLibrary(LibGL);
|
||||
|
||||
{$ENDIF MORPHOS}
|
||||
end;
|
||||
|
||||
procedure LoadOpenGL(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 = '';
|
||||
|
||||
@ -2256,8 +2291,8 @@ begin
|
||||
raise Exception.Create('Unable to select pixel format');
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
end;
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
initialization
|
||||
|
||||
@ -2271,7 +2306,11 @@ initialization
|
||||
{$ifdef darwin}
|
||||
LoadOpenGL('/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib');
|
||||
{$ELSE}
|
||||
{$IFDEF MorphOS}
|
||||
InitTinyGLLibrary;
|
||||
{$ELSE}
|
||||
LoadOpenGL('libGL.so.1');
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
{$ENDIF}
|
||||
|
||||
|
@ -60,6 +60,10 @@ Abstract:
|
||||
{$DEFINE extdecl := cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF MORPHOS}
|
||||
{$DEFINE GLU_UNIT}
|
||||
{$ENDIF}
|
||||
|
||||
unit GLu;
|
||||
|
||||
interface
|
||||
@ -69,8 +73,12 @@ uses
|
||||
{$IFDEF Win32}
|
||||
Windows,
|
||||
{$ELSE}
|
||||
{$IFDEF MORPHOS}
|
||||
TinyGL,
|
||||
{$ELSE}
|
||||
DLLFuncs,
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
GL;
|
||||
|
||||
type
|
||||
@ -82,6 +90,24 @@ type
|
||||
T4fArray = array [0..3] of GLfloat;
|
||||
PPointer = ^Pointer;
|
||||
|
||||
type
|
||||
GLUnurbs = record end; PGLUnurbs = ^GLUnurbs;
|
||||
GLUquadric = record end; PGLUquadric = ^GLUquadric;
|
||||
GLUtesselator = record end; PGLUtesselator = ^GLUtesselator;
|
||||
|
||||
// backwards compatibility:
|
||||
GLUnurbsObj = GLUnurbs; PGLUnurbsObj = PGLUnurbs;
|
||||
GLUquadricObj = GLUquadric; PGLUquadricObj = PGLUquadric;
|
||||
GLUtesselatorObj = GLUtesselator; PGLUtesselatorObj = PGLUtesselator;
|
||||
GLUtriangulatorObj = GLUtesselator; PGLUtriangulatorObj = PGLUtesselator;
|
||||
|
||||
{$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}
|
||||
var
|
||||
gluErrorString: function(errCode: GLenum): PChar; extdecl;
|
||||
gluErrorUnicodeStringEXT: function(errCode: GLenum): PWideChar; extdecl;
|
||||
@ -96,17 +122,6 @@ var
|
||||
gluBuild1DMipmaps: function(target: GLenum; components, width: GLint; format, atype: GLenum; const data: Pointer): Integer; extdecl;
|
||||
gluBuild2DMipmaps: function(target: GLenum; components, width, height: GLint; format, atype: GLenum; const data: Pointer): Integer; extdecl;
|
||||
|
||||
type
|
||||
GLUnurbs = record end; PGLUnurbs = ^GLUnurbs;
|
||||
GLUquadric = record end; PGLUquadric = ^GLUquadric;
|
||||
GLUtesselator = record end; PGLUtesselator = ^GLUtesselator;
|
||||
|
||||
// backwards compatibility:
|
||||
GLUnurbsObj = GLUnurbs; PGLUnurbsObj = PGLUnurbs;
|
||||
GLUquadricObj = GLUquadric; PGLUquadricObj = PGLUquadric;
|
||||
GLUtesselatorObj = GLUtesselator; PGLUtesselatorObj = PGLUtesselator;
|
||||
GLUtriangulatorObj = GLUtesselator; PGLUtriangulatorObj = PGLUtesselator;
|
||||
|
||||
var
|
||||
gluNewQuadric: function: PGLUquadric; extdecl;
|
||||
gluDeleteQuadric: procedure(state: PGLUquadric); extdecl;
|
||||
@ -145,6 +160,7 @@ var
|
||||
gluNurbsProperty: procedure(nobj: PGLUnurbs; aproperty: GLenum; value: GLfloat); extdecl;
|
||||
gluGetNurbsProperty: procedure(nobj: PGLUnurbs; aproperty: GLenum; value: PGLfloat); extdecl;
|
||||
gluNurbsCallback: procedure(nobj: PGLUnurbs; which: GLenum; fn: TCallBack); extdecl;
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
(**** Callback function prototypes ****)
|
||||
|
||||
@ -368,12 +384,24 @@ procedure FreeGLu;
|
||||
|
||||
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: THandle;
|
||||
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
procedure FreeGLu;
|
||||
begin
|
||||
|
||||
{$IFDEF MORPHOS}
|
||||
// MorphOS's GL will closed down by TinyGL unit, nothing is needed here.
|
||||
{$ELSE MORPHOS}
|
||||
@gluErrorString := nil;
|
||||
@gluErrorUnicodeStringEXT := nil;
|
||||
@gluGetString := nil;
|
||||
@ -428,10 +456,15 @@ begin
|
||||
@gluEndPolygon := nil;
|
||||
|
||||
FreeLibrary(hDLL);
|
||||
|
||||
{$ENDIF MORPHOS}
|
||||
end;
|
||||
|
||||
procedure LoadGLu(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 = '';
|
||||
|
||||
@ -505,6 +538,7 @@ begin
|
||||
raise Exception.Create('Could not load ' + MethodName + ' from ' + dll);
|
||||
end;
|
||||
end;
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
initialization
|
||||
|
||||
@ -514,7 +548,9 @@ initialization
|
||||
{$ifdef darwin}
|
||||
LoadGLu('/System/Library/Frameworks/OpenGL.framework/Libraries/libGLU.dylib');
|
||||
{$else}
|
||||
{$ifndef MorphOS}
|
||||
LoadGLu('libGLU.so.1');
|
||||
{$endif}
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
|
||||
|
@ -13,6 +13,10 @@
|
||||
{$DEFINE extdecl := cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF MORPHOS}
|
||||
{$DEFINE GLUT_UNIT}
|
||||
{$ENDIF}
|
||||
|
||||
unit Glut;
|
||||
|
||||
// Copyright (c) Mark J. Kilgard, 1994, 1995, 1996. */
|
||||
@ -34,8 +38,12 @@ uses
|
||||
{$IFDEF Win32}
|
||||
Windows,
|
||||
{$ELSE}
|
||||
{$IFDEF MORPHOS}
|
||||
TinyGL,
|
||||
{$ELSE}
|
||||
DLLFuncs,
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
GL;
|
||||
|
||||
type
|
||||
@ -276,6 +284,13 @@ const
|
||||
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}
|
||||
var
|
||||
// GLUT initialization sub-API.
|
||||
glutInit: procedure(argcp: PInteger; argv: PPChar); extdecl;
|
||||
@ -421,17 +436,29 @@ var
|
||||
glutEnterGameMode : function : integer; extdecl;
|
||||
glutLeaveGameMode : procedure; extdecl;
|
||||
glutGameModeGet : function (mode : GLenum) : integer; extdecl;
|
||||
{$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: THandle;
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
procedure FreeGlut;
|
||||
begin
|
||||
{$IFDEF MORPHOS}
|
||||
// MorphOS's GL will closed down by TinyGL unit, nothing is needed here.
|
||||
{$ELSE MORPHOS}
|
||||
|
||||
FreeLibrary(hDLL);
|
||||
|
||||
@ -549,9 +576,15 @@ begin
|
||||
@glutEnterGameMode := nil;
|
||||
@glutLeaveGameMode := nil;
|
||||
@glutGameModeGet := nil;
|
||||
{$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 = '';
|
||||
|
||||
@ -686,6 +719,7 @@ begin
|
||||
raise Exception.Create('Could not load ' + MethodName + ' from ' + dll);
|
||||
end;
|
||||
end;
|
||||
{$ENDIF MORPHOS}
|
||||
|
||||
initialization
|
||||
|
||||
@ -695,7 +729,9 @@ initialization
|
||||
{$ifdef darwin}
|
||||
LoadGlut('/System/Library/Frameworks/GLUT.framework/GLUT');
|
||||
{$else}
|
||||
{$IFNDEF MORPHOS}
|
||||
LoadGlut('libglut.so.3');
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
{$ENDIF}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user