【发布时间】:2014-01-16 20:17:16
【问题描述】:
我有一种流应用程序,它应该捕获窗口的内容。在窗口中,QGLWidget 绘制了这些东西。目前我在每个绘制周期中使用widget.grabFrameBuffer(必须是实时的)。该应用程序使用 100% 的 CPU,如果没有 widget.grabFrameBuffer,它会下降到 10-20%。我发现,调用image.bits()(我需要什么,用于发送 QImage 数据)会创建一个副本(不是解决问题的好方法)。有人知道如何获取指向帧缓冲区或图像数据的指针,还是必须使用 opengl 命令?
【问题讨论】:
-
您通常无法获得指向帧缓冲区的“the”指针,因为它存储在 GPU 的 VRAM 中。这就是问题所在,您必须同步管道才能读回帧缓冲区,除非您使用 PBO 之类的东西并且不需要立即获得结果。
-
好的,但是有没有办法避免在qt中复制?不过谢谢!
标签: c++ qt opengl qimage qglwidget