glreadpixels比基于x11的屏幕截图慢

时间:2013-12-23 15:17:16

标签: linux opengl ffmpeg

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

我发现第二种解决方案比第一种解决方案快3倍左右。我预计第一个解决方案会更快。但在实践中它更慢。我很好奇为什么glreadpixels更慢?

1 个答案:

答案 0 :(得分:1)

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

另一方面,如果使用窗口系统定义的方法来获取窗口的内容,则窗口系统可以通过多种不同的方式自由地实现操作。通常,您将获得窗口系统实际显示的最后一个内容的副本,这可能比您调用glReadPixels (...)并等待GL完成绘图时所获得的帧的帧数大1帧或更多。