Domanda

Al momento sto sperimentando con SurfaceView per il mio gioco a scacchi con le animazioni. Io sono sempre solo circa 8 fps nell'emulatore. Vorrei attirare una scacchiera e 32 pezzi degli scacchi e ruotare tutto (per vedere quanto liscio è), io sto usando antialiasing. Sul Droid mi sto su 20FPS, quindi non è molto liscia. E 'possibile realizzare un gioco con animazioni molto scarse e semplice senza dover utilizzare OpenGL?

Questo è quello che faccio ogni fotogramma:

// 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
}
È stato utile?

Soluzione

Ho deciso di fattore di scala tutte le bitmap quando viene creata la SurfaceView. Ora non ho bisogno di utilizzare la matrice di trasformazione a tutti. Sto ottenendo oltre il 30 FPS su emulatore e il dispositivo reale (Droid) è completamente liscia. Ho anche rimosso canvas.drawARGB(255, 255, 255, 255); che ha aumentato l'FPS di circa il 5.

Altri suggerimenti

Possiamo vedere di più il codice? Quali sono le dimensioni sono le tue icone di scacchi? Si potrebbe considerare di ridurre la loro qualità, al fine di ridurre il tempo di pareggio. Si potrebbe anche limitare il numero di icone che si sta caricando (carico uno di ogni tipo per ogni colore), e poi hanno un negozio di matrice di che tipo di tasto per caricare per ogni quadrato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top