Как PyOpengl или pyglet рисовать поверх рабочего стола? - PullRequest
2 голосов
/ 30 июня 2011

Я пишу приложение, которое пытается рисовать базовые многоугольники и эллипсы на рабочем столе Windows 7, используя OpenGL. Согласно этому предыдущему вопросу, это возможно, когда я получаю дескриптор окна на рабочем столе, что я знаю, как это сделать. Нарисуйте OpenGL на рабочем столе Windows без окна

Однако у меня есть два вопроса:

  1. Где вы на самом деле указываете OpenGL, в какое окно рисовать? Я просматривал пример 1, и я просто не могу понять, где именно проходит openGL hwnd. Дать ли openGL дескриптор окна или контекст устройства?

  2. Возможно ли это сделать с помощью PyOpenGL или Pyglet? Или я должен был бы написать это в C, а затем обернуть код в ctypes?

1 Ответ

2 голосов
/ 30 июня 2011

Попытка сделать OpenGL в окне другого процесса - это действительно очень плохая идея! Для работы OpenGL необходимо установить формат окна в пикселях. Однако формат окна в пикселях может быть установлен только один раз, поэтому выполнение этого для чужого окна - это путь к катастрофе.

Правильный способ сделать это, но он медленный, как ничто другое, - это использовать PBuffer, который имеет свой собственный HDC вне экрана, рендеринга в этот PBuffer и BitBlt из PBuffer в целевое окно. Я никогда не реализовывал это сам, поэтому я не могу сказать вам, насколько хорошо это работает из первых рук. Но это звучит как интересная вещь, чтобы попробовать, так что, возможно, я делаю это в следующий раз, когда я загружаю Windows на своем компьютере.

...