Ist es möglich, eine OpenGL ES Textur auf dem iPhone zu überprüfen, ob wirklich aufgehoben wurde?

StackOverflow https://stackoverflow.com/questions/1420794

Frage

Das Handbuch einfach instruiert schreiben:

glDeleteTextures(1, &GLtexture);

und behauptet, dass die Textur gelöscht. iPhone hat kaum Speicher und ich möchte, um sicherzustellen, dass diese Texturen wirklich freigegeben werden.

Das Leaks Instrument kann dies nicht erkennen, und ehrlich gesagt, ich bin ein bisschen besorgt. Ich will wirklich, um sicherzustellen, dass die Texturen sind wirklich weg.

Danke.

War es hilfreich?

Lösung

Texturen werden nicht von der Obj-c-Laufzeit behandelt, so Lecks nichts über sie wissen. Sie haben ein anderes Werkzeug verwenden.

In Xcode startet ein neues Projekt, um die OpenGL-Vorlage. Suchen Sie die Methode, die Updates / die Szene zieht und fügen Sie diesen Code zu seinem Ende:

static int tick = -1;
static GLuint tex[5];

if (tick++ < 0)
    for (int f = 0; f < 5; f++)
        tex[f] = 0;

tick = tick % 5;
if (tex[tick]) {
    glDeleteTextures(1, &tex[tick]);
    tex[tick] = 0;
} else {
    glGenTextures(1, &tex[tick]);
    glBindTexture(GL_TEXTURE_2D, tex[tick]);
    char *mem = malloc(1024 * 1024 * 4);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
        1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, mem);
    free(mem);
}

Der Code erzeugt und zerstört fünf Texturen OpenGL-Befehle verwenden. Baut sie und führen Sie es einmal auf Ihrem Gerät, um sicherzustellen, es installiert ist. Nicht über die Tuckern kümmern.

jetzt offen Instrumente und mit der leeren Vorlage für das iPhone starten. Öffnen Sie die Bibliothek und ziehen Sie den Memory Monitor zum Fenster. Klicken Sie auf die Schaltfläche Informationen offen zu legen, und deaktivieren Sie alles andere als „Physical Memory Free“. Wählen Sie nun die binären auf Ihrem iPhone zu starten, die Aufnahme zu starten. Sie sollten Treppenmuster sehen gehen nach oben / unten je nachdem, wann Instruments versucht, die Anwendung zu probieren. Während das Programm läuft, können Sie alle aktiven Prozesse mit der Spalte „Echt Memory“, zeigt tatsächliche Speichernutzung sehen.

In meinen Tests verbraucht dieses Beispiel zwischen 25MB zu 3 MB je nach dem Zeitpunkt der Speicheraufzeichnung. Dies ist mit einem zweiten Generation iPhone und SDK 3.1. Wenn Sie ein 2.x SDK haben Sie für die GART Einwohner Objektgröße im normalen OpenGL-Monitor zu suchen. Siehe http: // blog.zincroe.com/2009/04/how-to-check-iphone-texture-memory-usage-with-instruments/ zur weiteren Verfügung.

In jedem Fall wird der Speicher auf und ab hüpft beweist, dass glDeleteTexture () seine Arbeit wie in der Werbung.

Andere Tipps

Wickeln Sie die Anrufe in Ihrer eigenen Funktion glDeleteTextures(int, int*), die eine Zuordnungstabelle hält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top