Скорость копирования qpixmap

Объединение нескольких изображений в одно с использованием QPixmap Qt в качестве хранилища:

QPainter painter(&destinationPixmap);
painter.drawPixmap(0, 0, sourcePixmap);

Это кажется довольно медленным (2-10 мс для максимального окна на типичном мониторе) - есть ли способ сделать это быстрее, не переходя на совершенно другую технологию?

Вы знаете это ?: Графика и производительность Qt - Обзор. В зависимости от того, как скомпонованы изображения, может быть, QImage может обеспечить преобразование в QPixmap как можно позже. Сложно сказать без подробностей.

Scheff's Cat 11.04.2018 13:13

Просто вне моей головы, возможно, omp parallel может помочь?

Vishaal Shankar 11.04.2018 13:14

«Qt Graphics and Performance» упоминает, что QPixmaps - это пул объектов буфера кадра OpenGL, что объясняет, почему они быстрее, чем QImage на базе ЦП.

OJW 11.04.2018 18:27
0
3
455
1

Ответы 1

Документация Qt говорит:

QImage is designed and optimized for I/O, and for direct pixel access and manipulation, while QPixmap is designed and optimized for showing images on screen.

Итак, правильный способ - завершить все манипуляции с композицией с помощью QImages, а затем, если вы собираетесь отображать / перерисовывать результат несколько раз, было бы лучше преобразовать полученный QImage в QPixmap перед его визуализацией.

Использование QImage вместо QPixmap увеличило время в 10 раз.

OJW 11.04.2018 13:18

@OJW Для чего требуется время?

Andrii 11.04.2018 13:21

Общее время для объединения стека изображений с использованием описанного выше метода занимает намного больше времени, если изображения хранятся в QImage вместо QPixmap. (используя QPainter :: drawImage и QPainter :: drawPixmap соответственно)

OJW 11.04.2018 13:31

@OJW «2-10 мс для развернутого окна» - означает ли это, что медленное отображение, а не компоновка?

Andrii 11.04.2018 14:37

Измерение 2-10 мс не включает отображение окончательного изображения на экране.

OJW 11.04.2018 14:40

Другие вопросы по теме