OpenGL максимум 32 экранных окна с Vista / 7

Прежде чем я приведу это к разумному примеру, я надеялся, что кто-то, возможно, сталкивался с этим раньше и может пролить свет на проблему.

У меня есть 32-битное приложение на C, которое использует один контекст OpenGL для каждого окна, все контексты и окна настроены одинаково. Запрошенный формат пикселей: 32-битный цвет, альфа, буфер глубины, ускоренный. В Windows 2000 и XP все работает безупречно.

Все работает безупречно в Vista и 7, пока не будет создана 33-я пара окно / контекст.Создание окна не содержит ошибок, создание контекста не содержит ошибок, создание текущего контекста не содержит ошибок, рисование не вызывает ошибок, SwapBuffers не генерирует ошибку. Однако контексты OpenGL не могут производить какой-либо вывод, в Aero окна белые, в классическом режиме они не рисуются и представляют собой просто экранный мусор. Завершение работы DWM не решает проблемы, проба различных форматов пикселей (одиночный буфер, разная глубина и т. Д.), А PFD_SUPPORT_COMPOSITION не решает проблему. Это на разных машинах с Vista / 7, но никогда с XP.

Я могу использовать glReadPixels в заднем буфере, и это правильные пиксели. Рендеринг в pbuffer с тем же контекстом работает нормально, рендеринг в> 32 pbuffers в порядке.

Если я освобожу рабочие экранные контексты / окна, нерабочие окна снова начнут работать. Это как если бы Vista / 7 просто перестала отображать рендеринг OpenGL после того, как на экране появилось 32 окна.

Если дескриптор формата пикселей включает PFD_SUPPORT_GDI, все в порядке, но используется программный рендерер, что недопустимо.

Мне интересно, является ли это ограничением ОС или ограничением драйвера в Vista / 7. Спасибо за понимание.

7
задан Christopher Lloyd 8 January 2012 в 04:30
поделиться