This commit is contained in:
1 parent
f71802c885
commit
b8e2d0007d
6 files changed
+639
-39
No files matched your search
@@ -5,7 +5,7 @@ uses
|
||||
{$IFDEF WDC} Windows, {$ENDIF}
|
||||
{$IFDEF Unix} LCLIntf, LCLType, OpenGLContext, {$ENDIF}
|
||||
dglOpenGL,
|
||||
KM_RenderControl, KM_RenderQuery, KM_RenderTypes, KM_CommonTypes;
|
||||
KM_RenderQuery, KM_RenderTypes, KM_CommonTypes;
|
||||
|
||||
|
||||
const
|
||||
@@ -25,17 +25,15 @@ type
|
||||
fFBO: Cardinal;
|
||||
fRenderBuf: Cardinal;
|
||||
|
||||
fRenderControl: TKMRenderControl;
|
||||
fOpenGL_Vendor, fOpenGL_Renderer, fOpenGL_Version: UnicodeString;
|
||||
fScreenX, fScreenY: Word;
|
||||
fBlind: Boolean;
|
||||
fQuery: TKMRenderQuery;
|
||||
|
||||
procedure InitFBO;
|
||||
procedure SaveBufferToFile(aUseFBOBuffer: Boolean; var aWidth, aHeight: Integer; var aPixelData: TKMCardinalArray);
|
||||
function GetMaxFBOSize: Cardinal;
|
||||
public
|
||||
constructor Create(aRenderControl: TKMRenderControl; aScreenX, aScreenY: Integer; aVSync: Boolean);
|
||||
constructor Create(aScreenX, aScreenY: Integer);
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure SetRenderMode(aRenderMode: TKMRenderMode); //Switch between 2D and 3D perspectives
|
||||
@@ -64,13 +62,10 @@ type
|
||||
|
||||
property ScreenX: Word read fScreenX;
|
||||
property ScreenY: Word read fScreenY;
|
||||
property Blind: Boolean read fBlind;
|
||||
|
||||
property Query: TKMRenderQuery read fQuery;
|
||||
|
||||
procedure BeginFrame;
|
||||
procedure RenderBrightness(aValue: Byte);
|
||||
procedure EndFrame;
|
||||
end;
|
||||
|
||||
var
|
||||
@@ -91,22 +86,17 @@ const
|
||||
MAX_FBO_BUFFER_SIZE = CELL_SIZE_PX * (MAX_MAP_SIZE - 1); // (10200 = CELL_SIZE=40px)*255
|
||||
|
||||
{ TKMRender }
|
||||
constructor TKMRender.Create(aRenderControl: TKMRenderControl; aScreenX, aScreenY: Integer; aVSync: Boolean);
|
||||
constructor TKMRender.Create(aScreenX, aScreenY: Integer);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
gLog.AddTime('Init Render started');
|
||||
|
||||
fFBOInited := False;
|
||||
fBlind := aRenderControl = nil;
|
||||
fRenderControl := aRenderControl;
|
||||
|
||||
if not fBlind then
|
||||
begin
|
||||
fQuery := TKMRenderQuery.Create;
|
||||
|
||||
fRenderControl.CreateRenderContext;
|
||||
|
||||
fMaxViewportDim := GetMaxViewportDim;
|
||||
gLog.AddTime('GL_MAX_VIEWPORT_DIM = ' + IntToStr(fMaxViewportDim));
|
||||
|
||||
@@ -129,10 +119,8 @@ begin
|
||||
fOpenGL_Renderer := UnicodeString(glGetString(GL_RENDERER)); gLog.AddNoTime('OpenGL Renderer: ' + fOpenGL_Renderer);
|
||||
fOpenGL_Version := UnicodeString(glGetString(GL_VERSION)); gLog.AddNoTime('OpenGL Version: ' + fOpenGL_Version);
|
||||
|
||||
SetupVSync(aVSync);
|
||||
|
||||
Resize(aScreenX, aScreenY);
|
||||
end;
|
||||
Resize(aScreenX, aScreenY);
|
||||
gLog.AddTime('Init Render Done');
|
||||
end;
|
||||
|
||||
@@ -141,7 +129,6 @@ destructor TKMRender.Destroy;
|
||||
begin
|
||||
if not fBlind then
|
||||
begin
|
||||
fRenderControl.DestroyRenderContext;
|
||||
fQuery.Free;
|
||||
|
||||
if fFBOInited then
|
||||
@@ -189,11 +176,8 @@ end;
|
||||
|
||||
procedure TKMRender.Resize(aWidth, aHeight: Integer);
|
||||
begin
|
||||
if fBlind then Exit;
|
||||
|
||||
fScreenX := max(aWidth, 1);
|
||||
fScreenY := max(aHeight, 1);
|
||||
glViewport(0, 0, fScreenX, fScreenY);
|
||||
end;
|
||||
|
||||
|
||||
@@ -383,13 +367,4 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TKMRender.EndFrame;
|
||||
begin
|
||||
if fBlind then Exit;
|
||||
|
||||
glFinish;
|
||||
fRenderControl.SwapBuffers;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
Reference in new issue
Block a user