opengl.renderer.lean: Make 'free_Models' and 'free_Impostors' components of 'Item' for performance.

This commit is contained in:
Rod Kay
2025-05-24 04:50:53 +10:00
parent 8435439b72
commit de6ab2d36e
2 changed files with 11 additions and 14 deletions

View File

@@ -7,7 +7,6 @@ with
openGL.Geometry. lit_textured_skinned, openGL.Geometry. lit_textured_skinned,
openGL.Geometry.lit_colored_textured_skinned, openGL.Geometry.lit_colored_textured_skinned,
openGL.Font.texture, openGL.Font.texture,
openGL.Server,
openGL.Tasks, openGL.Tasks,
openGL.IO, openGL.IO,
openGL.Errors, openGL.Errors,
@@ -24,9 +23,6 @@ with
ada.Task_Identification, ada.Task_Identification,
ada.unchecked_Deallocation; ada.unchecked_Deallocation;
with GL.Binding;
-- gdk.GLContext;
package body openGL.Renderer.lean package body openGL.Renderer.lean
is is
@@ -190,32 +186,30 @@ is
procedure free_old_Models (Self : in out Item) procedure free_old_Models (Self : in out Item)
is is
use Model; use Model;
free_Models : graphics_Models with Convention => C; -- Convention C is for performance.
Last : Natural; Last : Natural;
begin begin
Self.obsolete_Models.fetch (free_Models, Last); Self.obsolete_Models.fetch (Self.free_Models, Last);
for i in 1 .. Last for i in 1 .. Last
loop loop
free (free_Models (i)); free (Self.free_Models (i));
end loop; end loop;
end free_old_Models; end free_old_Models;
procedure free_old_Impostors (Self : in out Item) procedure free_old_Impostors (Self : in out Item)
is is
use Impostor; use Impostor;
free_Impostors : Impostor_Set with Convention => C; -- Convention C is for performance.
Last : Natural; Last : Natural;
begin begin
Self.obsolete_Impostors.fetch (free_Impostors, Last); Self.obsolete_Impostors.fetch (Self.free_Impostors, Last);
for i in 1 .. Last for i in 1 .. Last
loop loop
free (free_Impostors (i)); free (Self.free_Impostors (i));
end loop; end loop;
end free_old_Impostors; end free_old_Impostors;
@@ -1098,7 +1092,7 @@ is
is is
begin begin
return Self.Lights.Exists (Id); return Self.Lights.Exists (Id);
end; end Exists;
function Light (Self : in out Item; Id : in openGL.light.Id_t) return openGL.Light.item function Light (Self : in out Item; Id : in openGL.light.Id_t) return openGL.Light.item

View File

@@ -315,6 +315,9 @@ private
obsolete_Models : safe_Models; obsolete_Models : safe_Models;
obsolete_Impostors : safe_Impostors; obsolete_Impostors : safe_Impostors;
free_Models : graphics_Models;
free_Impostors : impostor_Set;
texture_Pool : aliased Texture.Pool; texture_Pool : aliased Texture.Pool;
safe_Camera_updates_Map safe_Camera_updates_Map