gpt4 book ai didi

linux - 获取 EGL DRM/KMS 应用程序的屏幕截图

转载 作者:太空狗 更新时间:2023-10-29 11:12:13 37 4
gpt4 key购买 nike

如何以编程方式获取图形应用程序的屏幕截图?应用程序通过 DRM/KMS 使用 EGL API 绘制其窗口。

我使用 Ubuntu Server 16.04.3 和使用带有 EGLFS QPA 后端的 Qt 5.9.2 编写的图形应用程序。它从第一个虚拟终端(如果重要)开始,然后将显示切换为全高清图形模式输出。

当我使用在 /dev/fb? 上运行的实用程序(例如 fb2png)时,只有第一个虚拟终端的文本模式内容(Ctrl+Alt+ F1) 保存为屏幕截图。

几乎没有 EGL API 可以从另一个进程的上下文中获取任何缓冲区的内容(这将是不安全的),但也许有一些机制(和库)可以访问 GPU 的最终输出?

最佳答案

  1. 一种方法是从您的应用程序中获取屏幕截图,使用 glReadPixels() 读取后台缓冲区的内容。或者使用 QQuickWindow::grabWindow() ,它在内部以正确的方式使用 glReadPixels()。这似乎不适合您,因为您需要在 Qt 应用卡住时截取屏幕截图。

  2. 另一种方法是使用 DRM API 映射帧缓冲区,然后使用 memcpy 映射像素。这是在 Chromium OS 中使用 Python 实现的,可以轻松转换为 C,请参阅 https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/367611 .除了执行渲染的 Qt UI 进程之外,DRM API 也可以被其他进程使用。

关于linux - 获取 EGL DRM/KMS 应用程序的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47428631/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com