我需要在QT小部件中显示原始图像。我在帧缓冲区上运行X11,因此OpenGL不可用。
图像和帧缓冲区的格式相同 - RGB565,但如果需要,我可以将其更改为任何其他格式。我不需要混合或缩放。我只需按原样显示像素。
我正在使用QPainter :: drawImage,但它将QImage转换为QPixmap,这种转换似乎非常慢。它也得到了Xrender的支持,我认为在Xrender中支持混合需要不必要的开销,我并不需要
还有更好的方法吗?如果它在QT中不可用,我可以使用Xlib或任何其他库或协议。我可以修改驱动程序,X服务器或其他任何东西。
答案 0 :(得分:3)
您是否尝试使用XPutImage? (或XShmPutImage如果您要从客户端传输图像超过一次并且可以使用MIT-SHM扩展名)另请查看video4linux webcam sample viewer.c,但在发送之前它们会将565转换为16或24位深度。对于您的设置,应该可以发送图像而无需转换
答案 1 :(得分:3)
可能值得设置QT_GRAPHICSSYSTEM
环境变量。我遇到了X11渲染器变得非常非常慢的问题。在设置QT_GRAPHICSSYSTEM = 'raster'
时,QT渲染会绕过X11渲染引擎,这可以(根据我的经验)显着提高效率。 QT_GRAPHICSSYSTEM
的其他有效值为'native'
和'opengl'
,但'raster'
对我有效。我很想知道你是怎么过的。