2011-12-20 14 views
5

Vorrei sapere se v'è alcun tipo di limitazione alle dimensioni texture che può essere utilizzato in qualsiasi progetto Android OpenGL ES 2.0. Capisco che avere un'enorme trama di dimensioni 4096x4096 è un po 'meno significativo in quanto è reso su un piccolo schermo. Ma cosa succede se il requisito è quello di passare tra molte trame in fase di esecuzione? E se voglio avere un atlante di texture per fare un rapido caricamento singolo invece di caricare più texture multiple. Per favore fatemi sapere le vostre idee in merito.Limitazione delle dimensioni della trama? Android Open GL ES 2.0

Inoltre sono sicuro ci deve essere un limite alle dimensioni di immagine che può essere elaborato da un dispositivo, come la memoria del dispositivo è limitata. Ma mi piacerebbe sapere se è basato sulla risoluzione o è basato sulla dimensione. Voglio dire se un dispositivo ha una limitazione della dimensione dell'immagine 1024x1024 può gestire una trama compressa di dimensioni 2048x2048 che sarebbe della stessa dimensione circa 1024x1024 non compresso.

anche fatemelo sapere su base generale di solito quanto la limitazione delle dimensioni texture o dispositivi risoluzione normale sistema operativo Android 2.2 e superiori sarebbe.

anche per favore fatemi sapere se ci sono delle migliori pratiche nella manipolazione di immagini ad alta risoluzione in opengles 2.0 per ottenere le migliori prestazioni in termini di tempo di carico e tempo di esecuzione anche.

risposta

21

C'è una limitazione hardware delle dimensioni di texture. Per visualizzarli manualmente, puoi visitare un sito come glbenchmark.com (Qui vengono visualizzati i dettagli su google galaxy nexus).
di trovare automaticamente la dimensione massima dal codice, è possibile usare qualcosa come:

int[] max = new int[1]; 
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, max, 0); //put the maximum texture size in the array. 

(Per GL10, ma lo stesso metodo esiste per GLES20)

Quando si tratta di trattamento o editing di un'immagine di solito si utilizza un'istanza di Bitmap quando si lavora in Android. Questo contiene i valori non compressi della tua immagine ed è quindi dipendente dalla risoluzione. Tuttavia, è recommended che si utilizzano trame compresse per le applicazioni openGL in quanto ciò migliora l'efficienza di utilizzo della memoria (si noti che non è possibile modificare queste trame compresse).
Dal previous link:

compressione delle texture può aumentare significativamente le prestazioni della vostra applicazione OpenGL, riducendo i requisiti di memoria e rendendo più uso efficiente della larghezza di banda della memoria. Il framework Android fornisce il supporto per il formato di compressione ETC1 come caratteristica standard [...]

Si dovrebbe dare un'occhiata a this document, che contiene molte buone pratiche e suggerimenti su consistenza di carico e utilizzo. L'autore scrive esplicitamente:

Procedura consigliata: utilizzare ETC per la compressione della trama.

Procedura consigliata: verificare che le proprie risoluzioni di geometria e trama siano appropriate per il formato in cui vengono visualizzate. Non utilizzare una trama 1k x 1k per qualcosa che è larga al massimo 500 pixel sullo schermo. Lo stesso per la geometria.

Problemi correlati