Необходимо ли удалить HDC и HRC при использовании win32 api для OpenGL? Я бы подумал, что Win32API уничтожит их при закрытии окна?Необходимо ли удалить контекст рендеринга и уничтожить контекст устройства?
Уточнение: HRC является объектом HGLRC.
Необходимо ли удалить HDC и HRC при использовании win32 api для OpenGL? Я бы подумал, что Win32API уничтожит их при закрытии окна?Необходимо ли удалить контекст рендеринга и уничтожить контекст устройства?
Уточнение: HRC является объектом HGLRC.
«Это необходимо»? Если ваш процесс завершается после закрытия окна, нет. Windows очистит выдающиеся ручки такого типа.
Должно ли вы это сделаете? Абсолютно. Вы всегда должны очищать объекты, которые вы используете в своем приложении. Отбросить вещи на пол для ОС для очистки не является хорошей практикой. Если только по той причине, что вы можете создать новое окно после закрытия старого. В этом случае у вас есть этот мусор HGLRC, лежащий вокруг захватывающих драгоценных ресурсов.
Вам нужно беспокоиться о других вещах, кроме как только закрывающегося окна. Например, прочитайте http://blogs.msdn.com/b/oldnewthing/archive/2013/03/06/10399678.aspx, в котором говорится, что владелец объекта не может удалить его, пока он выбран в DC.
Отпустите (не удаляйте) HDC, как только сможете. Я сделал OpenGL, поэтому я не совсем понимаю, для чего используется HGLRC, но я подозреваю, что это обрабатывается аналогичным образом. Получение ручек дешево; удержание их может быть проблематичным.
Возможный дубликат http://stackoverflow.com/questions/6421287/windows-when-to-delete-object-and-device-context –
Вы создали DC? Или вы только на GetDC на окне? –