Я портирую 2D-игру с Windows Phone 7 (разработанную в XNA 4.0) на Android.Я использую лот вызовов Canvas.drawBitmap () - около 200-300 на обновление кадра - с разными Paints для каждого вызова для обработки различной прозрачности и колоризации во время отрисовки,Это управление системами частиц и различными другими наложениями и внутриигровыми эффектами, а также плиточным фоном и внутриигровыми спрайтами.Я не делаю изменения размера или поворота по требованию, это простые прямоугольники src-> dest одинакового размера.
В WP7 это работает со скоростью 30 + fps, но я изо всех сил пытаюсь получить 12fps в моем тестеаппаратное обеспечение дроида (Samsung Galaxy S).Это делает игру неиграбельной.Профилировав код, я подтвердил, что все мое время теряется в Canvas.drawBitmap ()
Кажется, я следую всем обычным советам по производительности - использую SurfaceView, помня о GC, поэтому не создавая нагрузкиодноразовых объектов и избегая Drawables.
Правильно ли я понимаю, что Canvas.drawBitmap () привязан к процессору, и если я хочу улучшить производительность, я должен переключиться на OpenGL, который будет использовать графический процессор?Я не могу найти, чтобы это было заявлено так открыто, но читая между строк некоторые комментарии, я думаю, что это может быть моим следующим шагом ...?