2012-01-05 2 views
5

Attualmente sto lavorando a un gioco OpenGL e di recente ho iniziato a refactarlo per supportare iPhone e iPad. Nel tentativo di darmi meno lavoro possibile, ho semplicemente ridimensionato l'EAGLView contenente 480 x 360 (per preservare le proporzioni dell'iPad) e spostato la vista verso l'alto in modo che si trovasse a -20 (per centrare il contenuto e poiché i bordi potrebbero essere ritagliati).Problema di prestazioni OpenGL ES quando Uiview è parzialmente fuori schermo

Ho trovato questo risultato in prestazioni a scatti sul dispositivo (nonostante il collegamento CADisplay riportasse una durata del fotogramma equivalente a 59-61 fps) ed era almeno il 20% più lento se confrontato con la versione iPad.

Ho quindi provato a ridimensionare la visualizzazione delle dimensioni dello schermo 480 x 320 e le prestazioni sono tornate alla normalità (sebbene il contenuto reso non abbia più le proporzioni corrette).

Perché il rendering "off screen" provoca un calo di prestazioni e perché il displaylink pensa ancora che sia in esecuzione a 60 fps?

Qualche idea? Grazie

risposta

0

Questa è principalmente un'ipotesi selvaggia, ma che dire delle regioni di ritaglio? C'era questa funzionalità hardware che rendeva possibile combinare finestre e grafica con accelerazione hardware. Forse non è implementato molto bene sui dispositivi mobili.

Si potrebbe tuttavia evitare di rendere UIView fuori schermo e provare a usare glViewport() per spostare le parti della vista fuori dallo schermo. Anche se sembra essere lo stesso, viene gestito da una parte diversa della pipeline (il rasterizzatore) e dovrebbe essere molto più veloce.

+0

Grazie per la risposta, ho finito per modificare il viewport come hai detto tu e ora funziona come un sogno – Weaverfish

+0

Felice di sentire che ... –