Должен ли я использовать OpenGL для шахмат с анимацией? - PullRequest
0 голосов
/ 21 марта 2010

В настоящее время я экспериментирую с SurfaceView для моей шахматной игры с анимацией. Я получаю только около 8 FPS в эмуляторе. Я рисую шахматную доску и 32 шахматные фигуры и вращаю все (чтобы увидеть, насколько это гладко), я использую сглаживание На Droid я получаю около 20FPS, так что это не очень гладко. Можно ли реализовать игру с очень скудной и простой анимацией без использования OpenGL?

Вот что я делаю каждый кадр:

// scale and rotate
matrix.setScale(scale, scale);
rotation += 3;
matrix.postRotate(rotation, 152, 152);

canvas = surfaceHolder.lockCanvas();
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG));
canvas.setMatrix(matrix);

canvas.drawARGB(255, 255, 255, 255); // fill the canvas with white
for (int i = 0; i < sprites.size(); i++) {
    sprites.get(i).draw(canvas); // draws chessboard and chess pieces
}

Ответы [ 2 ]

3 голосов
/ 28 марта 2010

Я решил предварительно масштабировать все растровые изображения при создании SurfaceView.Теперь мне не нужно использовать матрицу преобразования вообще.Я получаю более 30 FPS на эмуляторе, а на реальном устройстве (Droid) он полностью плавный.Я также удалил canvas.drawARGB(255, 255, 255, 255);, что увеличило FPS примерно на 5.

0 голосов
/ 27 марта 2010

Можем ли мы увидеть больше кода?Какого размера ваши значки шахматной фигуры?Вы можете рассмотреть вопрос об уменьшении их качества, чтобы сократить время розыгрыша.Вы также можете ограничить количество загружаемых значков (загрузить по одному каждому типу для каждого цвета), а затем сохранить в матрице тип загружаемых значков для каждого квадрата.

...