Как уже упоминалось, ваша ОС (совместно с диспетчером драйверов) должна освобождать ресурсы. Для этого нужны ОС. Стоит отметить, что это не имеет ничего общего с OpenGL, но это что-то, что является частью устава хорошо управляемых ОС и связанных с ними драйверов. Операционная система должна обрабатывать все системных ресурсов. OpenGL - это всего лишь подмножество из них, и они ничем не отличаются от, скажем, дескриптора файла. Теперь, чтобы получить более конкретную информацию, вы должны указать, какую ОС вы заботитесь.
BTW, Здесь я беру исключение из ответа ChrisF. Это не должно быть водителю, чтобы решить, что ему нужно делать очистку. Модели драйверов ОС будут иметь четкий интерфейс между драйвером OpenGL пользовательского режима (который не должен выполнять фактическое распределение ресурсов gfx, поскольку он используется совместно с машиной), ОС (которая обеспечивает эквивалент системных вызовов для распределения ресурсов) и драйвер режима ядра (это просто для выполнения заказов ОС таким образом, который совместим с gpu). Это, по крайней мере, относится к моделям WIN2K и WDDM.
Итак, если ваш процесс выходит из строя или иным образом завершается, в этих моделях ответственность ОС заключается в вызове драйвера режима ядра для освобождения всех ресурсов, связанных с процессом.
Теперь, должно быть или нет, это что-то, что немного похоже на запрос вкладок или пробелов в исходном коде. Здесь разные люди имеют разные убеждения. «ОС будет делать это в любом случае, немедленно прекратить работу - это лучший опыт конечного пользователя». vs «Я хочу знать, я ли я теряю память, потому что, если моя программа длительная, я действительно не хочу, чтобы она ударяла ошибки OOM Лучший способ сделать это - быть без утечки по всему миру »- это две основные мысли, о которых я знаю.
Зависит от вашего определения «обязательно». Вы не должны «ничего делать». Если вы хотите быть «правильным», да; вы должны всегда выпускать свои ресурсы, когда закончите. – GManNickG
Я скорее хотел узнать, будет ли он автоматически очищаться, * вскоре * после закрытия Программы или если память GPU будет потеряна до следующей перезагрузки. Я надеялся, что кто-то может указать мне на спецификацию OpenGL, и там было определено (хотя моя любимая поисковая система не плюнула мне что-нибудь полезное). – drahnr
Оба! Действительно, очистите себя, даже если ОС сделает это за вас. Вам также не нужно «удалять» любую «новую» память, ОС просто освободит ее, когда программа закончится, но все же это не то, что я предлагаю. –