Какой самый быстрый способ отобразить изображение в QT на X11 без OpenGL? - PullRequest
8 голосов
/ 14 сентября 2011

Мне нужно отобразить необработанное изображение в виджете QT. Я использую X11 на кадровом буфере, поэтому OpenGL недоступен.

И изображение, и буфер кадров находятся в одном и том же формате - RGB565, но я могу изменить его на любой другой формат при необходимости. Мне не нужно смешивать или масштабировать. Мне просто нужно отображать пиксели как есть.

Я использую QPainter :: drawImage, но он конвертирует QImage в QPixmap, и это преобразование кажется очень медленным. Также он поддерживается Xrender, и я думаю, что для поддержки смешивания в Xrender необходимы лишние накладные расходы, которые мне не нужны

Есть ли лучший способ? Если это не доступно в QT, я могу использовать Xlib или любую другую библиотеку или протокол. Я могу изменить драйвер, X-сервер или что-нибудь еще.

Ответы [ 2 ]

3 голосов
/ 28 июня 2012

Возможно, стоит установить переменную окружения QT_GRAPHICSSYSTEM. У меня были проблемы с рендерером X11, который стал очень, очень медленным. При настройке QT_GRAPHICSSYSTEM = 'raster' рендеринг QT обходит движок рендеринга X11, который (по моему опыту) может быть значительно более эффективным. Другие допустимые значения для QT_GRAPHICSSYSTEM: 'native' и 'opengl', но 'raster' работает для меня. Мне будет интересно посмотреть, как вы поживаете.

3 голосов
/ 19 сентября 2011

Вы пытались использовать XPutImage ? (или XShmPutImage , если вы собираетесь передавать изображение более одного раза от клиента и иметь доступное расширение MIT-SHM). Также посмотрите образец видеокамеры video4linux webcam. или 24 бит глубины перед отправкой. Для вашей настройки должна быть возможность отправки изображения без конвертации

...