QImage против производительности OpenGL

Я портирую старое приложение 4.8 на 5.2.1 и в то время я использовал QImage для рендеринга некоторых необработанных данных на экране в QLabel.

Я беру изображения с камеры, поэтому хочу отображать эти изображения в режиме реального времени. До сих пор, с QImage, я достигаю более 20FPS (камера способна захватить 30 FPS).

Мне интересно, будет ли рендеринг этих данных в OpenGL (может быть, в новом приложении QML Quick / Qt Widgets) быстрее, чем текущий разработанный метод?

1 ответ

Имея в виду следующие предположения:

  • ваша реализация в OpenGL использует ускорение HW
  • Ваша реализация использует оптимальные параметры текстуры для отображения изображения (т.е. драйвер не выполняет какое-либо преобразование)

Вы можете добиться лучших результатов, используя OpenGL. QImage по-прежнему должен хранить данные как в памяти, так и в графическом процессоре, то есть при обновлении QImage требуется как минимум одна дополнительная копия. С OpenGL вы можете копировать данные непосредственно в память графического процессора, и вам не нужно хранить данные где-то в памяти.

Однако то, что может быть оптимальным для одного графического процессора, не обязательно должно быть оптимальным для другого. Итак, если вы реализуете что-то, что должно работать на различном оборудовании, я бы посоветовал перейти на QImage.

Но, как сказано, единственный способ - это реализовать и измерить.

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