AIL Geschrieben 26. März 2004 Geschrieben 26. März 2004 Hallo! Ich habe ein Problem mit OpenGL. Undzwar Folgendes: Ich erzeuge mit glGenLists(1); ein Objekt zwecks späterem abrufen in der paintGL()-Methode. Das klappt soweit auch alles. Nur muss ich das Objekt desöfteren Mal neu berechnen lassen, weil sich Farben etc. ändern. Wenn ich das häufig und in schneller Abfolge machen lasse, müllt mir aber irgendwas meinen Speicher zu, undzwar satte 30MB pro Funktionsaufruf, und es kommt nach einiger Zeit zum gefürchteten Swapping (rumrödeln auf der Festplatte). Meine Variablen sind alle statisch, das heißt Pointerfehler meinerseits sollten eigentlich ausgeschlossen sein. Ich vermute daher, dass glGenLists() für das Fiasko verantwortlich ist. Weiß irgendjemand, was ich da machen kann? Zitieren
kLeiner_HobBes Geschrieben 26. März 2004 Geschrieben 26. März 2004 Hallo! Gibst du auch immer den Speicher, den du nicht mehr brauchst, frei? Ich würde da eher mit dynamischen Speicher arbeiten und schön aufpassen, dass ich immer delete etc. aufrufe. Und in deinem Fall ist vielleicht auch manchmal glDeleteLists() angebracht (bin jetzt aber kein OpenGL-Coder, hab nur mal gegoogelt ). BTW, gehört eigentlich nicht wirklich in dieses Forum! HTH Benjamin Zitieren
AIL Geschrieben 26. März 2004 Autor Geschrieben 26. März 2004 Hab' das Problem gelöst... glGenLists sucht nämlich irgendwie nach einem unbenutzten Ort, wo es gerne Hinpointen würde und gibt die Adresse in Form eines Integers zurück. Und das ist bei jedem Aufruf ein anderer Wert... Indem ich immer den selben Wert nehme, wird das Speicherzumüllungsproblem gelöst. Wieso ist das nicht das richtige Forum? Zitieren
kLeiner_HobBes Geschrieben 26. März 2004 Geschrieben 26. März 2004 Gehört eigentlich bei C++: Compiler, IDEs, APIs rein, aber ist jetzt auch net tragisch .. wollt nur ma drauf hinweisen. Trotzdem sollte man generell immer auf richtige und rechtzeitige Speicherfreigabe achten (z.B. Destruktoren gezielt einsetzen etc.). C++ hat nicht so einen guten garbage collector wie Java oder C#. Zitieren
AIL Geschrieben 26. März 2004 Autor Geschrieben 26. März 2004 Original geschrieben von kLeiner_HobBes Trotzdem sollte man generell immer auf richtige und rechtzeitige Speicherfreigabe achten (z.B. Destruktoren gezielt einsetzen etc.). Das tu' ich doch normalerweise auch! Nur wenn man nicht weiß, wie so'ne eingebundene "Fremdfunktion" funktioniert und man eben selber auch nichts Alloziert hat, gestaltet sich das eben ein bisschen Schwieriger. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.