Ich glaube ja [immer noch], dass es nicht an glDeleteTextures liegt, sondern dass du beim Laden irgendwas nicht wieder freigibst. Mach mal folgendes: du hast doch sicherlich eine Funktion in der Art
LoadCoverFromFile(...) (oder so). Jetzt schreibst du folgende Methode hinein:
Delphi-Quellcode:
procedure CreateTempTexture(var Target: cardinal);
var pTexData: Pointer;
begin
GetMem(pTexData, 512*512*3);
// Textur generieren und drauf zeigen
glGenTextures(1, @Target);
glBindTexture(GL_TEXTURE_2D, Target);
// Daten in den Speicher, Lineares Filtering aktivieren
glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
// Freigeben
FreeMem(pTexData);
end;
Jetzt rufst du anstatt deiner
LoadCoverFromFile diese Funktion auf (vielleicht noch etwas anpassen!). Wenn dann der Speicher immernoch nicht wieder freigeräumt wird mit der glDeleteTextures - Methode, kann ich von hier auch nicht mehr groß helfen - ich hab dann überhaupt keine Ahnung woran es dann liegt.