2012-05-18 16 views
6

Ho provato concome modificare il contenuto di un FloatBuffer, mantenendo le prestazioni?

floatbuffer.put(float[]); 

ma come sto gestire più di 200 piazze, tutti con diferent coordinate texture sono aggiornati ogni fotogramma, il mio fps cadere drasticamente, e il gioco diventa troppo per essere fluido.

y il metodo menzionato su badlogicgames.com, circa, invece, usa floatbuffer, usa un intbuffer ma, è la stessa cosa, uguale a slow al momento del metodo "put" del buffer.

quindi, come posso aggiornare tutti i miei floatbuffer con le migliori prestazioni?

EDIT: ho risolto il mio problema, il metodo "mettere" in sé non è lento, il problema è quando un nuovo galleggiante è inizializzato per ogni floatbuffer, invece di che, ho appena cambiare il valore di ogni elemento di cui il floatarray e quello evita molte attività di GC .. beh penso.

risposta

1

Esistono diversi modi per migliorare le prestazioni. Brevemente, qui sono alcuni:

1) Inizializzare il floatbuffer e un applicare una trasformazione ogni ogni frame: - Se i quadrati si muovono attraverso lo schermo, metterli volta in un floatbuffer, e poi applicare una matrice separata trasformazione a ciascuno. In questo metodo, si riempie il floatbuffer una volta e si aggiornano le trasformazioni ogni turno.

2) Metti solo forme uniche nel floatbuffer - Se uno dei tuoi quadrati è duplicato l'uno dell'altro, chiama lo stesso buffer ogni fotogramma per risparmiare memoria.

3) Utilizzare gli oggetti del buffer di vertice e gli oggetti dell'indice di buffer - Sembra che si possa averlo fatto, ma memorizzare i dati in un buffer di vertici e chiamare i vertici usando gli indici dell'array.

Se si continua ad avere problemi, vi consiglio di dare un'occhiata a questo tutorial: http://www.learnopengles.com/android-lesson-one-getting-started/

Problemi correlati