Come già menzionato, il proprio sistema operativo (in collaborazione con il gestore risorse del driver) dovrebbe rilasciare le risorse. Ecco a cosa servono i sistemi operativi. Vale la pena notare che questo non ha nulla a che fare con OpenGL, ma è qualcosa che fa parte della carta dei sistemi operativi ben funzionanti e dei relativi driver associati. Il sistema operativo è lì per gestire tutte le risorse di sistema. Quelli OpenGL sono solo un sottoinsieme di essi, e non sono diversi da, ad esempio, un handle di file. Ora per essere più concreti, dovresti specificare quale sistema operativo ti interessa.
BTW, È qui che faccio eccezione con la risposta di ChrisF. Non dovrebbe spettare all'autista decidere che è necessario eseguire la pulizia. I modelli di driver OS avranno un'interfaccia chiara tra il driver OpenGL in modalità utente (che non dovrebbe fare l'allocazione effettiva delle risorse gfx, poiché è condivisa nella macchina), il sistema operativo (che fornisce l'equivalente delle chiamate di sistema per allocare le risorse) e il driver in modalità kernel (che è semplicemente lì per eseguire gli ordini del sistema operativo in modo compatibile con gpu). Questo è almeno il caso dei modelli WIN2K e WDDM.
Quindi ... se il processo si blocca o termina in altro modo, in questi modelli, è responsabilità del sistema operativo chiamare il driver in modalità kernel per liberare tutte le risorse associate al processo.
Ora, se si o no è davvero qualcosa che è un po 'come chiedere tabs-o-spazi nel codice sorgente. Persone diverse hanno credenze diverse qui. "il sistema operativo lo farà comunque, smettere immediatamente è un'esperienza migliore per l'utente finale" vs "Voglio sapere se sto perdendo memoria perché se il mio programma è di lunga durata, davvero non voglio che colpisca gli errori di OOM Il modo migliore per farlo è quello di essere privo di perdite "sono le 2 linee principali di pensiero di cui sono a conoscenza.
Dipende dalla definizione di "necessario". Non devi "fare" nulla. Se vuoi essere "corretto", sì; è necessario liberare sempre le risorse quando hai finito. – GManNickG
Preferirei sapere se verrà ripristinata automaticamente, * poco dopo che il Programma si è chiuso, o se la memoria della GPU viene persa fino al prossimo riavvio. Speravo che qualcuno potesse indicarmi le specifiche OpenGL ed era stato definito lì (anche se il mio motore di ricerca preferito non mi ha sputato nulla di utile). – drahnr
Entrambi! Davvero, ripulisci te stesso, anche se il sistema operativo lo fa per te. Non è necessario cancellare la memoria 'new'ed, il sistema operativo lo libererà appena termina il programma, ma non è qualcosa che suggerirei. –