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?

È stato utile?

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.)

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