Woran erkennst du denn, dass die Texturen nicht freigegeben werden? Dem Arbeitsspeicher kannst du das eigentlich nicht ansehen, da die Texturen im Grafikkarten-
RAM gespeichert werden. Wenn der Grafikkarten-Speicher voll ist, werden die Texturen dann in den Arbeitsspeicher geschoben, aber sonst nicht.
Noch was zu deinem Code
Delphi-Quellcode:
if assigned(quadTexture) then
begin
for I := 0 to QuadCount - 1 do
begin
glDeleteTextures(i, @quadTexture);
quadTexture[i] := 0;
end;
end;
Dieser Code funktioniert nicht.
glDeleteTextures erwartet zwei Parameter. Der erste Parameter sagt OGL, wieviele Texturen gelöscht werden sollen. Der zweite Parameter ist ein Pointer auf das erste Element eines glUint-arrays (wenn nur eine Textur gelöscht werden soll, dann muss es kein array sein).
Dein Code von oben müsste man also folgendermaßen umschreiben (nur wenn du ihn mit der for-schleife benutzen willst)
Delphi-Quellcode:
if assigned(quadTexture) then
begin
for I := 0 to QuadCount - 1 do
begin
glDeleteTextures(1, @quadTexture[i]);
quadTexture[i] := 0;
end;
end;
//Edit:
Ach noch was: sind die anderen Variablen zufällig auch arrays? Wenn du den Pointer auf das erste Element eines arrays zurückgeben willst, würd ich das immer so machen:
@NameDesArrays[0]