Tela / bitmap e alpha blending problema di prestazioni su Honeycomb (TF101)
-
22-10-2019 - |
Domanda
Sono nei miei primi tentativi con l'API di Android 2D (ho imparato molto qui), e mentre gioca con alpha blending ho notato qualche problema di prestazioni preoccupante sul mio tablet Honeycomb (TF101):
canvas.drawBitmap(bmBackground, 0,0, null);
canvas.drawBitmap(bmForeground, 0, 0, p);
Il codice di cui sopra è resa utilizzando il / coppia ben noto SurfaceView Discussione. bmBackground è RGB_565, bmForeground è un ARGB_8888 mutevole, la vernice p è per giocare con solo alfa. Entrambe le bitmap sono a schermo intero.
sia sul mio Nexus S e Galaxy S (pan di zenzero), il rendering è in esecuzione a 55 fps qualunque sia il valore impostato I alfa per p, e qualunque sia il formato di pixel per bmForeground (RGB_565 o ARGB_8888).
Ma sul mio tablet Honeycomb, ho qualche strano comportamento:
- 60 fps con alpha disabilitata (= 0)
- 10 fps con 0
- 20 fps con p = null
- 60 fps con bmForeground = RGB_565
Sembra che il conducente ha qualche problema di prestazioni quando si utilizza alpha blending e / o la conversione da ARGB (bitmap) per RGB (framebuffer)?
so già sulla soluzione OpenGL, ma mi piacerebbe capire cosa sta succedendo qui, e di trovare un modo per risolverlo.
Che sarebbe impressionante che un dispositivo dual core in esecuzione a 1GHz non può fare meglio del mio Galaxy disegno 2 bitmap S! Mi sto perdendo qualcosa?
Soluzione
Non v'è alcun problema di driver, il rendering con una tela su un SurfaceView è fatta interamente in software. Avendo 2 core o addirittura 1 Ghz non necessariamente di aiuto, ciò che conta la maggior parte del tempo con le bitmap è la larghezza di banda della memoria e il Galaxy S è davvero bravo in questo.
Si sta anche facendo l'ipotesi che il framebuffer è RGB, ma non si specifica che RGB (RGBX 8888 o RGB565?) Come si crea la tua SurfaceView? E 'molto importante che a ridurre al minimo le conversioni (se il SurfaceView è RGBX 8888, non utilizzare RGB 565 bitmap, se la tua superficie è RGB 565, evitare di utilizzare RGBA 8888 bitmap, ecc.)
È inoltre riesce a parlare di quanto è grande il tuo bitmap sono? Se entrambi i bitmap sono bitmap a schermo intero, le prestazioni si stanno ottenendo non è inaspettato se il tablet ha la stessa architettura come Motorola Xoom (Tegra2 base.)