2010-03-21 3 views
0

En ce moment j'expérimente SurfaceView pour mon jeu d'échecs avec des animations. Je reçois seulement environ 8 FPS dans l'émulateur. Je dessine un échiquier et 32 ​​pièces d'échecs et je fais tourner tout (pour voir si c'est lisse), j'utilise l'antialiasing. Sur le Droid, je reçois environ 20FPS, donc ce n'est pas très lisse. Est-il possible d'implémenter un jeu avec des animations très rares et simples sans avoir à utiliser OpenGL?Dois-je utiliser OpenGL pour les échecs avec des animations?

C'est ce que je fais chaque image:

// 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 
} 
+0

Si vous allez utiliser des animations, je pense que vous devriez utiliser openGL. À quel point votre jeu est-il plus rapide sans anti-aliasing? C'est probablement un énorme hogg de ressources. Vous pouvez également faire le dessin openGL dans NDK. Et ne prenez pas la vitesse de l'émulateur comme une marque pour les vrais appareils. – MrSnowflake

Répondre

3

J'ai décidé de prédéfinir tous les bitmaps lors de la création de SurfaceView. Maintenant, je n'ai plus besoin d'utiliser la matrice de transformation. Je reçois plus de 30 FPS sur l'émulateur et sur l'appareil réel (Droid) c'est complètement lisse. J'ai également supprimé canvas.drawARGB(255, 255, 255, 255); qui a augmenté le FPS d'environ 5.

0

Pourrait-on voir plus du code? Quelle est la taille de vos icônes d'échecs? Vous pourriez envisager de réduire leur qualité afin de réduire le temps de tirage. Vous pouvez également limiter le nombre d'icônes que vous chargez (charger un de chaque type pour chaque couleur), puis avoir une matrice pour stocker le type d'icône à charger pour chaque carré.

Questions connexes