linux - glreadpixels 比基于 x11 的屏幕截图慢

标签 linux opengl ffmpeg

我正在开发一个基于 opengl 的模拟应用程序,我需要在一秒钟内制作多个屏幕截图。我在我的应用程序中尝试了两种方法。
1) 使用 glreadpixels
2) 使用基于 x11 的屏幕截图。例如:ffmpeg -f x11grab -s 1024x768 -i :0.0 output.png

我发现第二个解决方案比第一个解决方案快大约 3 倍。我预计第一个解决方案会更快。但实际上它更慢。我很好奇为什么 glreadpixels 比较慢?

最佳答案

glReadPixels (...) 是同步往返操作(当它不与像素缓冲区对象一起使用时)。您将它发送给 GL,它必须完成它缓冲到那个点的所有命令,然后它返回该操作的结果。

另一方面,如果您使用窗口系统定义的方法来抓取窗口的内容,则窗口系统可以自由地以多种不同的方式实现操作。通常你会得到窗口系统实际呈现的最后一个东西的副本,它可能比你调用 glReadPixels (...) 并等待 GL完成绘制。

关于linux - glreadpixels 比基于 x11 的屏幕截图慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20746311/

相关文章:

php - 如何在 ubuntu 服务器中将 php 8.0 设置为默认版本

c# - 如何获取上传视频的第一帧

c++ - 设计着色器类

video - FFMPEG : Two processes with a single action

FFmpeg错误- "at least one output file must be specified"

linux - 使用 awk 计算并打印每行的平均分数

linux - Docker 服务扩展容器瓶颈 249 个容器

linux - RHEL6 安装了错误版本的 rpmforge

c++ - 第一人称相机移动问题

c++ - 重用 bindBufferBase 和 OpenGL 计算着色器