2012-04-23 3 views
3

Я хотел бы создать окно, в котором нет области «черного фона», но вместо этого вы увидите все открытые окна и т. Д.Окно LWJGL с прозрачным фоном?

То есть, визуализируйте сцену и только сцену, не оставляя рамки и не занимая фоновой области.

Я читал о методе, который включает в себя рендеринг в скрытое окно OpenGL и буферизацию его в памяти, создание прозрачного многоуровневого окна и копирование из памяти в прозрачное окно.

Очевидно, что это очень интенсивный процессор/память, поэтому мне было интересно, есть ли какие-нибудь лучшие способы сделать это, в Java и LWJGL?

ответ

2

Это то, что может быть достигнуто только с помощью кода на платформе.

This thread содержит интересную дискуссию по этому вопросу. This post акции C код, который оказывает влияние на Windows, и this post на Linux.

+0

Да, я обнаружил, что через Google комментарии говорят, что этот способ очень интенсивный. Это может быть единственный способ сделать это на окнах? – nighthawk454

+0

Да, к сожалению, каждый кадр, обработанный в графическом процессоре, должен быть скопирован в ОЗУ, а затем нарисован на экране, чтобы получить прозрачный эффект окна. И это узкое место этого типа вещей. Если вы думаете об этом, коммерческие приложения не так делают, потому что это невозможно сделать быстро. – karlphillip

+0

Ах, вот что я боялся. Кажется, что авторы ОС должны быть на этом, да? Спасибо за разъяснения! – nighthawk454

2

Это конкретная ОС, поскольку «OS/window manager/not-you-department» владеет другими окнами.

В Windows OpenGL не может участвовать в такого рода компоновке. Другие ОС могут это позволить.

+0

Просьба указать ссылки для этого. Так или иначе поверхность должна быть интегрирована в компоновку рабочего стола. Приложения OpenGL в Windows как-то обходят «DWM» и используют более низкий системный уровень? Или [DWM только для приложений WPF] (http://blogs.msdn.com/b/greg_schechter/archive/2006/06/09/623566.aspx)? –

Смежные вопросы