У меня есть приложение, основанное на фреймворке Qt Graphics View.
Это игра-головоломка, которая в основном разрезает растровое изображение на более мелкие пиксельные изображения (части головоломки) и отображает их как QGraphicsItem
в QGraphicsView
. Я хочу, чтобы это приложение работало на смартфонах и планшетах. (Он уже работает на Nokia N900 и некоторых телефонах Symbian. Еще не оптимизирован для Symbian ^ 3.)
Источник на Gitorious .
Элементы наследуют QGraphicsItem
и QObject
и имеют макросы Q_PROPERTY
для pos ()
и вращения ()
из QGraphicsItem
, чтобы включить их анимацию с помощью инфраструктуры Qt Animation.
Я выполняю преобразования элементов, такие как масштабирование и вращение (последнее только в ветке мультитач, находящейся в разработке), а также использую для них QGraphicsDropShadowEffect
.
Я использую QGLWidget
в качестве области просмотра QGraphicsView
, чтобы включить ускорение OpenGL для приложения.
Проблема в том, что, несмотря на ускорение OpenGL, приложение не работает плавно. (Особенно анимации, особенно с тех пор, как я добавил преобразование вращения в ветвь мультитач.) Отображается не так много графических элементов, нет 3D-операций или чего-то серьезного, только 2D-рисование.
Я совсем не специалист по графике, поэтому понятия не имею, почему это приложение работает медленно. Я видел, как другие игры с гораздо более сложными эффектами работали намного плавнее, чем эта.
В чем секрет? Как мне оптимизировать это приложение?