Seite 1 von 1

glDeleteBuffers()

Verfasst: 27. Dez 2010 02:28
von m_stoica
was passiert eigentlich wenn man vor dem beenden eines Programms den Buffer
nicht mehr über glDeleteBuffers() freigibibt? Kann das irgendwelche bösen Konsequenzen haben?

Re: glDeleteBuffers()

Verfasst: 29. Dez 2010 14:56
von thomas_kalbe
ich würde den Speicher freigeben.
Im schlimmsten Fall läuft Dir der Speicher irgendwann voll und Performance geht verloren ...
Beim nächsten Neustart (des Systems) sollte wieder alles ok sein :-)
Ich denke nicht, dass die Speicherverwaltung so schlau ist, angeforderten Heap- oder GPU-Speicher nach Programmende
automatisch freizugeben (wer's besser weiss,kläre mich bitte auf).

t.

Re: glDeleteBuffers()

Verfasst: 30. Dez 2010 01:39
von Jonathan
Ich habe keinen direkten Beleg dafür, aber ich gehe stark davon aus dass der GPU-Speicher nach Programmende vollständig freigegeben wird.
Der GPU-Treiber muss die GPU-Ressourcen ohnehin für jeden Prozess getrennt verwalten, und kann daher auch nach Prozessende alle benutzten Ressourcen auflisten und freigeben. In der Regel sollte der Treiber unabhängig davon ob das Programm abstürzt oder korrekt beendet wird sämtlichen Speicher freigeben können, auch wenn das natürliche im Falle von Treiber-Bugs auch theoretisch schiefgehen kann.
Die korrekte Verwendung von glDeleteBuffers/Textures/Foobar ist vor allem in aufwändigeren Programmen relevant, wenn innerhalb eines Programmlaufes Speicher freigegeben werden soll, beispielsweise wenn in einem Spiel beim Levelwechsel andere Texturen geladen werden.

Re: glDeleteBuffers()

Verfasst: 30. Dez 2010 12:46
von thomas_kalbe
ja, sehe ich auch so dass zumindest die GPU den Speicher vermutlich freigibt.
t.