【问题标题】:LWJGL Window with Transparent Background?具有透明背景的 LWJGL 窗口?
【发布时间】:2012-05-03 19:08:30
【问题描述】:

我想创建一个没有“黑色背景”区域的窗口,但是您可以看到任何其他打开的窗口等。

即渲染场景,只渲染场景,不留边框,不留背景区域。

我读过一种方法,该方法涉及渲染到隐藏的 OpenGL 窗口并将其缓冲在内存中、创建透明分层窗口以及从内存复制到透明窗口。

显然这非常占用 CPU/内存,所以我想知道在 Java 和 LWJGL 中是否有更好的方法?

【问题讨论】:

    标签: java opengl graphics transparency lwjgl


    【解决方案1】:

    这是特定于操作系统的,因为“操作系统/窗口管理器/非您部门”拥有其他窗口。

    在 Windows 上,OpenGL 不能参与这种合成。其他操作系统可能允许这样做。

    【讨论】:

    • 请提供此链接。不知何故,表面需要集成到桌面合成中。 Windows 上的 OpenGL 应用程序以某种方式绕过 DWM 并使用较低的系统层?还是DWM just for WPF apps
    【解决方案2】:

    这只能通过特定于平台的代码来完成。

    This thread 提供了关于该主题的有趣讨论。 This post 共享在 Windows 上实现此效果的 C 代码,在 Linux 上共享 this post

    【讨论】:

    • 是的,我通过谷歌发现,cmets 说这种方式非常占用 CPU。不过,这可能是在 Windows 上完成此任务的唯一方法吗?
    • 是的,不幸的是,GPU 中处理的每一帧都必须复制到 RAM 中,然后在屏幕上绘制,以提供透明窗口效果。而这正是这类事情的瓶颈。如果你仔细想想,没有多少商业应用程序能做到这一点,因为它不能快速完成。
    • 啊,好吧,这就是我害怕的。似乎操作系统编写者现在应该在上面,对吧?感谢您的澄清!
    猜你喜欢
    • 2012-12-27
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多