mirror of
https://github.com/dpethes/rerogue.git
synced 2025-06-07 18:58:32 +02:00
terrain viewer: delete old textures when switching levels
This commit is contained in:
parent
d42f895773
commit
c3be5c72f0
@ -49,6 +49,7 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure Load(level: TLevelListItem);
|
||||
procedure InitGL;
|
||||
procedure FinishGL;
|
||||
procedure DrawGL(opts: TRenderOpts);
|
||||
end;
|
||||
|
||||
@ -293,6 +294,14 @@ begin
|
||||
render_blocks.Free;
|
||||
end;
|
||||
|
||||
procedure TTerrainMesh.FinishGL;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
for i := 0 to Length(render_batches) - 1 do
|
||||
glDeleteTextures(1, @render_batches[i].texture_gl_index);
|
||||
end;
|
||||
|
||||
|
||||
{ DrawGL
|
||||
Renders terrain block batches.
|
||||
|
@ -119,8 +119,10 @@ end;
|
||||
procedure LoadLevel();
|
||||
begin
|
||||
Assert((0 <= g_selected_level_idx) and (g_selected_level_idx < g_levels.Size), 'broken level select');
|
||||
if (terrain <> nil) then
|
||||
if (terrain <> nil) then begin
|
||||
terrain.FinishGL;
|
||||
terrain.Free;
|
||||
end;
|
||||
terrain := TTerrainMesh.Create;
|
||||
terrain.Load(g_levels[g_selected_level_idx]);
|
||||
terrain.InitGL;
|
||||
@ -467,9 +469,6 @@ begin
|
||||
g_levels := TLevelList.Create;
|
||||
LoadLevelFilelist;
|
||||
|
||||
terrain := TTerrainMesh.Create;
|
||||
terrain.Load(g_levels[g_selected_level_idx]);
|
||||
|
||||
writeln('Init SDL...');
|
||||
SDL_Init(SDL_INIT_VIDEO or SDL_INIT_TIMER);
|
||||
WindowInit(SCR_W_INIT, SCR_H_INIT);
|
||||
@ -478,7 +477,9 @@ begin
|
||||
SetGLWindowSize(g_window^.w, g_window^.h);
|
||||
|
||||
InitView;
|
||||
terrain.InitGL;
|
||||
terrain := nil;
|
||||
g_selected_level_idx := 0;
|
||||
LoadLevel();
|
||||
|
||||
sec := SDL_GetTicks;
|
||||
frames := 0;
|
||||
@ -501,6 +502,7 @@ begin
|
||||
end;
|
||||
|
||||
terrain.Free;
|
||||
WindowFree;
|
||||
SDL_Quit;
|
||||
g_levels.Free;
|
||||
g_rs_files.Free;
|
||||
|
Loading…
x
Reference in New Issue
Block a user