Разработка приложения OpenGL, создание окна, получение связанного контекста устройства с помощью GetDC и создание контекста OpenGL в дескрипторе контекста устройства, возвращаемом GetDC. Все в порядке. Прежде чем создавать контекст OpenGL, я буду называть SetPixelFormat. Документация говорит, что SetPixelFormat вызывается только один раз (я думаю, один раз за дескриптор контекста устройства).Перечисление устройств и их контекст
Ну. Для систем, имеющих только одно устройство, это очень просто, но как насчет систем, имеющих два или более устройств? как это могло бы работать?
Во-первых, я не знаю, как созданные окна связаны с контекстами устройств. Я решил перечислить все доступные устройства в системе, запросить каждый пиксельный формат для каждого устройства, а затем создать окна после настройки каждого контекста устройства. В этом случае мне не нужно беспокоиться о формате пикселей устройства, и я могу настроить несколько устройств для совместимых форматов пикселей (полезно для совместного использования объектов между контекстами OpenGL).
Можно ли перечислить доступные видеоустройства? Я не нашел Windows API для перечисления графических устройств для получения того же дескриптора, возвращаемого GetDC ... Можно связать окно с конкретным контекстом видеоустройства?
Ничего страшного. Я не могу создавать контексты OpenGL, используя дескриптор, возвращаемый CreateDC, но только тот, который возвращается GetDC. Итак, как я могу определить, принадлежат ли два или более контекста оконных устройств к одному и тому же «физическому» устройству в случае нескольких устройств отображения? Вопрос о том, как контексты устройств назначаются окнам, еще не разрешен. – Luca
SetPixelFormat вызывается однажды _per_window_.Контексты оконного устройства в конечном счете будут представлять то, что называется зеркальным устройством - драйвером виртуального устройства, который отражает (зеркал) вызовы до подстилающих физических драйверов дисплея. Это приложение Windows может рисовать на одном DC в WM_PAINT, и все перекрывающиеся дисплеи будут обновляться. Во всяком случае, для целей этого API, «устройство» - это окно. Theres не способ (надежно) перевернуть (окно) dc обратно в свое окно. Это зависит от вас, программист приложений, чтобы знать, для каждого постоянного тока, в каком окне они его получили. –
т. Е. Контекст оконного устройства присваивается окну при вызове GetDC, передавая ему дескриптор окна. –