Complete BigTask
Sync changed files to Google Drive / sync (push) Successful in 1m11s

This commit is contained in:
admin_d committed 2026-10-06 12:08:28 +05:00
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.