Qt лучший выбор для анимации на встроенном? - PullRequest
1 голос
/ 21 апреля 2009

Я изучаю технологии для нового встраиваемого продукта с тактовой частотой 1 ГГц через процессор и графическим чипом via s3. Пока целевой платформой является Linux, но хотелось бы перенести ее на платформу Windows.

Приложение будет состоять из виджетов, таких как кнопки, графики и цифровые / текстовые дисплеи. Что еще более важно, приложение будет содержать анимационные объекты, такие как вентиляторы, постоянно вращающиеся.

Qt показался мне хорошим выбором, потому что он кроссплатформенный и имеет хороший API для множества виджетов и анимационной инфраструктуры.

Однако, эта структура анимации использует процессор довольно сильно. Использование ЦП для рендеринга пользовательского интерфейса составляет 40%. Для вращения 25 объектов с изображением используется около 90% ЦП.

Смысл в том, чтобы использовать opengl для анимации объектов и снять эту тяжелую нагрузку с процессора.

Мой вопрос, является ли Qt лучшим выбором для чего-то подобного? Стоит ли мне больше смотреть на что-то вроде Java 2D?

Ответы [ 4 ]

2 голосов
/ 21 апреля 2009

OpenGL может дать вам повышение производительности:

Qt для встраиваемых Linux-систем и OpenGL

Или, может быть, вам нужен более качественный графический драйвер (я не знаю, поддерживает ли ваш графический чип из коробки Qt Embedded):

Добавление драйвера ускоренной графики в Qt для встраиваемых Linux-систем

1 голос
/ 24 апреля 2009

Вам нужно профилировать свое приложение, чтобы действительно выяснить, что там не так. Например, фиксированная форма, но постоянно вращающийся графический элемент может извлечь большую пользу из кэша координат элемента (см. QGraphicsItem :: setCacheMode ). Аналогично, фиксированные изображения должны кэшироваться и храниться как можно дольше в виде растровых изображений. Глубина цвета также может играть важную роль. Сложные пути на основе графических элементов должны быть максимально упрощены.

Короче говоря, существует множество причин, почему производительность графики плохая. Без их разработки и атаки на них один за другим переход на OpenGL не решит проблему. Это может ускорять кадр в секунду (из-за очевидного преимущества перекладывания некоторых обязанностей на графическое оборудование), но это является краткосрочным преимуществом и быстро уменьшается в долгосрочной перспективе, если реальная проблема не будет раскрыта.

1 голос
/ 21 апреля 2009

Насколько я помню, инфраструктура анимации Qt может использоваться для непрерывной анимации, но, вероятно, не лучший выбор для этого. Я думаю, что это было больше предназначено для переходных анимаций, таких как перемещение виджета или увеличение / уменьшение размеров. Я хотел бы изучить либо использование OpenGL, либо, возможно, QGraphicsView, который позволяет вам выполнять более прямой вид рисования.

Кроме того, если вы оглянетесь вокруг, вы сможете найти инструкции для указания Qt использовать OpenGL или OpenGL ES в качестве серверной части для системы рендеринга, что должно уменьшить некоторые попадания в ваш процессор (если вы не еще не сделали).

0 голосов
/ 21 апреля 2009

Основная идея Qt заключается в том, что это кроссплатформенный инструментарий GUI, который является хорошей функцией, но уже имеющейся в Java. Вы можете предпочесть версию Qt, как и многие другие, но не используйте ее только потому, что она кроссплатформенная. В этой статье показано, что фреймворк анимации Qt еще не интегрирован в Qt.

Если вы можете программировать на GL, то JOGL является очевидной отправной точкой, но если вы не можете знать, что программирование на GL не легкое. Вы также можете рассмотреть Java3D. Возможно, то, что вы хотите, может быть сделано в JavaFX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...