GLC_CONTEXT_VERSION_UNKNOWN = -1;
type
+{$IFNDEF fpc}
+ TThreadID = Cardinal;
+{$ENDIF}
+
TMultiSample = 1..high(byte);
TglcContextPixelFormatSettings = packed record
DoubleBuffered: boolean;
property PixelFormatSettings: TglcContextPixelFormatSettings read fPixelFormatSettings;
property VersionSettings: TglcContextVersionSettings read fVersionSettings;
- constructor Create(const aControl: TWinControl; const aPixelFormatSettings: TglcContextPixelFormatSettings); virtual; overload;
- constructor Create(const aControl: TWinControl; const aPixelFormatSettings: TglcContextPixelFormatSettings; const aVersionSettings: TglcContextVersionSettings); virtual; overload;
+ constructor Create(const aControl: TWinControl; const aPixelFormatSettings: TglcContextPixelFormatSettings); overload; virtual;
+ constructor Create(const aControl: TWinControl; const aPixelFormatSettings: TglcContextPixelFormatSettings; const aVersionSettings: TglcContextVersionSettings); overload; virtual;
destructor Destroy; override;
property ThreadID: TThreadID read fThreadID;
procedure SetSwapInterval(const aInterval: GLint); virtual; abstract;
function GetSwapInterval: GLint; virtual; abstract;
procedure Share(const aContext: TglcContext); virtual; abstract;
-
+{$IFDEF fpc}
private class var
fMainContextThreadID: TThreadID;
public
class property MainContextThreadID: TThreadID read fMainContextThreadID;
+{$ENDIF}
+ public
class function MakePF(DoubleBuffered: boolean = true;
Stereo: boolean=false;
MultiSampling: TMultiSample=1;
uses
{$IFDEF WINDOWS}
uglcContextWGL
- {$ENDIF}
+ {$ELSE}{$IFDEF WIN32}
+ uglcContextWGL{$IFNDEF fpc}, Windows{$ENDIF}
+ {$ENDIF}{$ENDIF}
+
{$IFDEF LINUX}
uglcContextGtk2GLX
{$ENDIF}
;
+{$IFNDEF fpc}
+var
+ fMainContextThreadID: TThreadID;
+{$ENDIF}
+
procedure GlDebugCallbackARB(source: GLenum; type_: GLenum; id: GLuint; severity: GLenum; {%H-}length: GLsizei; const message_: PGLchar; {%H-}userParam: PGLvoid); {$IFDEF WINDOWS}stdcall; {$ELSE}cdecl; {$ENDIF}
var
src, typ: String;
class function TglcContext.GetPlatformClass: TglcContextClass;
begin
+ Result := nil;
{$IFDEF WINDOWS}
Result:= TglcContextWGL;
- {$ENDIF}
+ {$ELSE}{$IFDEF WIN32}
+ Result:= TglcContextWGL;
+ {$ENDIF}{$ENDIF}
{$IFDEF LINUX}
Result:= TglcContextGtk2GLX;
{$ENDIF}
+ if not Assigned(result) then
+ raise EGLError.Create('unable to find suitabe context class');
end;
class function TglcContext.IsAnyContextActive: boolean;
end;
initialization
- TglcContext.fMainContextThreadID := 0;
+ {$IFDEF fpc}TglcContext.{$ENDIF}fMainContextThreadID := 0;
end.