Объединение нескольких изображений в одно с использованием QPixmap Qt в качестве хранилища:
QPainter painter(&destinationPixmap);
painter.drawPixmap(0, 0, sourcePixmap);
Это кажется довольно медленным (2-10 мс для максимального окна на типичном мониторе) - есть ли способ сделать это быстрее, не переходя на совершенно другую технологию?
Просто вне моей головы, возможно, omp parallel может помочь?
«Qt Graphics and Performance» упоминает, что QPixmaps - это пул объектов буфера кадра OpenGL, что объясняет, почему они быстрее, чем QImage на базе ЦП.





Документация 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 Для чего требуется время?
Общее время для объединения стека изображений с использованием описанного выше метода занимает намного больше времени, если изображения хранятся в QImage вместо QPixmap. (используя QPainter :: drawImage и QPainter :: drawPixmap соответственно)
@OJW «2-10 мс для развернутого окна» - означает ли это, что медленное отображение, а не компоновка?
Измерение 2-10 мс не включает отображение окончательного изображения на экране.
Вы знаете это ?: Графика и производительность Qt - Обзор. В зависимости от того, как скомпонованы изображения, может быть,
QImageможет обеспечить преобразование вQPixmapкак можно позже. Сложно сказать без подробностей.