2013-04-01 8 views
6

Необходимо ли удалить HDC и HRC при использовании win32 api для OpenGL? Я бы подумал, что Win32API уничтожит их при закрытии окна?Необходимо ли удалить контекст рендеринга и уничтожить контекст устройства?

Уточнение: HRC является объектом HGLRC.

+0

Возможный дубликат http://stackoverflow.com/questions/6421287/windows-when-to-delete-object-and-device-context –

+0

Вы создали DC? Или вы только на GetDC на окне? –

ответ

7

«Это необходимо»? Если ваш процесс завершается после закрытия окна, нет. Windows очистит выдающиеся ручки такого типа.

Должно ли вы это сделаете? Абсолютно. Вы всегда должны очищать объекты, которые вы используете в своем приложении. Отбросить вещи на пол для ОС для очистки не является хорошей практикой. Если только по той причине, что вы можете создать новое окно после закрытия старого. В этом случае у вас есть этот мусор HGLRC, лежащий вокруг захватывающих драгоценных ресурсов.

0

Вам нужно беспокоиться о других вещах, кроме как только закрывающегося окна. Например, прочитайте http://blogs.msdn.com/b/oldnewthing/archive/2013/03/06/10399678.aspx, в котором говорится, что владелец объекта не может удалить его, пока он выбран в DC.

0

Отпустите (не удаляйте) HDC, как только сможете. Я сделал OpenGL, поэтому я не совсем понимаю, для чего используется HGLRC, но я подозреваю, что это обрабатывается аналогичным образом. Получение ручек дешево; удержание их может быть проблематичным.