Como han mencionado otros, su sistema operativo (en colaboración con el administrador de recursos del controlador) debería liberar los recursos. Para eso son los sistemas operativos. Vale la pena señalar que esto no tiene nada que ver con OpenGL, pero es algo que forma parte de la carta de sistemas operativos bien comportados y sus controladores asociados. El sistema operativo está allí para manejar todos los los recursos del sistema. Los OpenGL son solo un subconjunto de ellos, y no son diferentes de, digamos, un identificador de archivo. Ahora, para ser más concretos, debe especificar qué sistema operativo le interesa.
BTW, aquí es donde tomo la excepción con la respuesta de ChrisF. No debería depender del conductor decidir si necesita hacer la limpieza. Los modelos de controladores OS tendrán una interfaz clara entre el controlador OpenGL de modo de usuario (que no debe hacer la asignación real de recursos gfx, ya que se comparte en la máquina), el sistema operativo (que proporciona el equivalente de llamadas al sistema para asignar recursos) y el controlador kernel-mode (que simplemente está ahí para ejecutar las órdenes del sistema operativo de una manera compatible con el gpu). Este es al menos el caso con los modelos WIN2K y WDDM.
Entonces ... si su proceso falla o de lo contrario termina, en esos modelos, es responsabilidad del sistema operativo llamar al controlador kernel-mode para liberar todos los recursos que se asociaron con el proceso.
Ahora, si es o no, es realmente algo así como pedir pestañas o espacios en el código fuente. Diferentes personas tienen diferentes creencias aquí. "el sistema operativo lo hará de todos modos, salir de inmediato es una mejor experiencia para el usuario final" frente a "Quiero saber si estoy perdiendo memoria porque si mi programa es de larga ejecución, realmente no quiero que pegue errores OOM La mejor forma de hacerlo es estar libre de fugas en todo momento "son las dos líneas principales de pensamiento que conozco.
Depende de su definición de "tener que". No "tienes que" hacer nada. Si quieres ser "correcto", sí; siempre debe liberar sus recursos cuando haya terminado. – GManNickG
Prefiero saber si se limpiará automáticamente, * en breve * después de que se cierre el programa, o si la memoria de la GPU se pierde hasta el próximo reinicio. Esperaba que alguien pudiera indicarme la especificación OpenGL y se definió allí (aunque mi motor de búsqueda favorito no me escuchó nada útil). – drahnr
Ambos! Realmente, limpia después de ti mismo, incluso si el sistema operativo lo hace por ti. No es necesario que "elimine" ninguna memoria nueva, el sistema operativo la liberará cuando termine el programa, pero eso no es algo que sugiera. –