Скорость копирования 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
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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

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