在 Linux 上,如何将桌面捕获到 OpenGL 纹理?

Posted

技术标签:

【中文标题】在 Linux 上,如何将桌面捕获到 OpenGL 纹理?【英文标题】:On Linux how can I capture the desktop to an OpenGL texture? 【发布时间】:2013-07-10 21:58:26 【问题描述】:

我正在编写一个跨平台开源 Oculus Rift 桌面查看器。我决定从 Linux 开始,因为我更喜欢在它上进行开发。我已经让纹理变形工作了,但现在我需要将桌面捕获到 OpenGL 纹理。还有其他问题我不完全确定如何解决,例如在捕获除我之外的每个窗口时将扭曲的桌面渲染到我的窗口。任何线索我会怎么做?

【问题讨论】:

【参考方案1】:

我认为您最好的做法实际上是编写一个成熟的合成器。

GLX_texture_from_pixmap 扩展,它允许您将任何与像素图兼容的 X11 可绘制对象获取到 OpenGL 纹理中。首先,只需将根窗口(像素图)拉到 OpenGL 纹理中就足够了。稍后您可能希望使用 Composite 扩展将窗口重定向到屏幕外渲染,并在 3D 空间中将它们合成为 Occulus Rift 中的立体图片。

【讨论】:

是的,我正在考虑这个问题。那里没有多少好的轻量级 OpenGL 合成器,所以它可能有两个目的。我想我会尝试分叉 dcompmgr。

以上是关于在 Linux 上,如何将桌面捕获到 OpenGL 纹理?的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何将GNOME Desktop桌面的信号通过x11转发到当前设备的桌面上?

Linux:通过网络捕获桌面视频和 VNC 帧率

opengl 应用程序从套接字连接监听/接收数据? [关闭]

Mac OS OpenGL 屏幕抓取

在 Windows 桌面应用程序中的 OpenGL 窗口上显示 WPF 控件

如何在屏幕抓取中捕获鼠标光标?