我正在使用一个库,它为我提供了我必须在屏幕上闪烁的帧。我分配了一个缓冲区,这个库直接写入这个缓冲区。当我需要时,我必须将此缓冲区的指定部分blit 到屏幕上。我正在使用带有 OpenGL/ES 绘制引擎的 Qt 进行渲染。
问题是:blit 到屏幕的最快方法是什么?我目前正在QImage
使用接受数据指针的构造函数将缓冲区加载到 a 中。这应该避免任何副本。然后,我使用 blit 的drawImage()
方法QPainter
到屏幕正确的区域。我猜这个方法会将该区域的副本加载到 GPU 内存中,然后使用 OpenGL 纹理将其传送到屏幕上。
是否有可能避免此副本以加快进程?例如,是否可以直接在 OpenGL 纹理中绘制,这样我就不必转移到 GPU 上?我读过像素缓冲区对象。这可能是一个解决方案吗?我可以为此目的使用 aQGLFramebufferObject
吗?