Jak wspomniano, twój system operacyjny (we współpracy z menedżerem zasobów sterownika) powinien zwolnić zasoby. Po to są systemy operacyjne. Warto zauważyć, że nie ma to nic wspólnego z OpenGL, ale jest czymś, co jest częścią karty dobrze zachowanych systemów operacyjnych i związanych z nimi sterowników. System operacyjny obsługuje wszystkie zasoby systemowe: all. Obiekty OpenGL są tylko ich podzbiorem i nie różnią się od nich, powiedzmy uchwyt pliku. Teraz, aby uzyskać bardziej konkretne informacje, powinieneś wskazać system operacyjny, na którym Ci zależy.
BTW, tu biorę wyjątek z odpowiedzią od ChrisF. Kierowca nie powinien decydować, czy musi wykonać czyszczenie. Modele sterowników OS będą miały przejrzysty interfejs między sterownikiem OpenGL w trybie użytkownika (który nie powinien wykonywać rzeczywistej alokacji zasobów Gfx, ponieważ jest współdzielony w komputerze), systemem operacyjnym (który zapewnia ekwiwalent wywołań systemowych do alokacji zasobów) i sterownik trybu jądra (który służy jedynie do wykonywania poleceń systemu operacyjnego w sposób zgodny z gpu). Tak jest przynajmniej w przypadku modeli WIN2K i WDDM.
A więc ... jeśli twój proces ulegnie awarii lub w inny sposób zakończy się, w tych modelach, OS jest odpowiedzialny za wywołanie sterownika trybu jądra w celu zwolnienia wszystkich zasobów powiązanych z procesem.
Teraz, niezależnie od tego, czy powinien być, czy też nie, jest to coś w rodzaju pytania o tabulacje lub spacje w kodzie źródłowym. Różni ludzie mają tu różne wierzenia. "system i tak to zrobi, natychmiastowe przerwanie jest lepszym doświadczeniem użytkownika końcowego" vs "Chcę wiedzieć, czy nie mam wycieku pamięci, ponieważ jeśli mój program jest długotrwały, naprawdę nie chcę, aby trafiał on na błędy OOM Najlepszym sposobem, aby to zrobić, jest brak wycieku w całym "są 2 główne linie myśli, które znam.
Zależy od definicji "musisz". Nie musisz nic robić. Jeśli chcesz być "poprawny", tak; zawsze musisz zwolnić swoje zasoby, kiedy skończysz. – GManNickG
Chciałem się dowiedzieć, czy program zostanie automatycznie oczyszczony, * wkrótce * po zamknięciu programu lub jeśli pamięć GPU zostanie utracona do następnego ponownego uruchomienia. Miałem nadzieję, że ktoś wskaże mi specyfikację OpenGL i tam ją zdefiniowano (chociaż moja ulubiona wyszukiwarka nie wypluła niczego użytecznego dla mnie). – drahnr
Obie! Naprawdę, posprzątaj po sobie, nawet jeśli system operacyjny zrobi to za Ciebie. Nie musisz nigdy "usuwać" żadnej "nowej" pamięci, system operacyjny po prostu ją zwolni, gdy program się skończy, ale nadal nie jest to coś, co bym zasugerował. –