Ich glaube, dass das Problem nicht bei glDeleteTextures liegt. Ich glaube, es liegt er daran, dass du die Texturdaten nach dem Laden nicht freigibst.
Normalerweise schaut das Laden einer Textur ungefähr so aus
Delphi-Quellcode:
glEnable(GL_TEXTURE_2D);
glGenTextures(1, @Texture);
glBindTexture(GL_TEXTURE_2D, Texture);
// Textur mit Daten füllen
glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData);
(die einzelnen Parameter sind jetzt mal beliebig gewählt)
In
pTexData befinden sich jetzt die einzelnen
RGB-Werte der Textur (in diesem Beispiel 768 KB). Diese Daten solltest du nach dem Laden wieder freigeben. Am besten mit
FreeMem(pTexData);. Sonst spuken diese Daten im
RAM herum, obwohl du sie nicht mehr brauchst.
Jetzt ist auch noch die Frage, wie du die Texturdaten aus der Datei in den Speicher bekommst (also
pTexData mit
RGB-Daten füllst). Wenn du z.B. TBitmap verwendest kann es noch sein, dass du die Instanz TBitmap nicht mehr freigibst.
Das ist jetzt alles nur eine Vermutung. Was du auch noch machen kannst: schau dir mal die Werte an, die die einzelnen Textur-Indizes haben (in meinem Beispiel den Wert von
Texture). Soweit ich beobachtet habe sucht
OpenGL den niedrigsten freien Wert und setzt ihn dann in die Variable. Wenn die Werte jetzt immer größer werden, werden die Texturen
vielleicht nicht freigegeben. Ich bin mir da aber überhaupt nicht sicher, ob das überhaupt funktionierten kann.