There has been some discussion recently about whether the Nexus One display panel hardware has 24 bits per pixel or 16 bits per pixel. 24bpp means 8 bits per color RGB888 and allows a total of about 16 million different colors. 16bpp is RGB565 (Red and Blue have 5 bits and Green has 6 bits), and allows a total of 64 thousand different colors.
I’m happy to bring the good new and to clear this question once for all:
Yes, the Nexus One display is 24 bits per pixel!
Now, in software things look a bit different. In Eclair by default a new window is created with a PixelFormat of RGB565 (16bpp), and thus a naive application will get the surprising result of displaying in 16bits even if drawing for example an RGBA_8888 Bitmap in full color.
Happily this is easy to fix by requesting a different “pixel format” when the window is initialized in the Activity.onCreate():
public void onCreate(Bundle b) {
getWindow().setFormat(PixelFormat.RGBA_8888);
}
After this simple operation the drawing will happen in full-splendor 24bpp. Of course, take care not to use some intermediary RGB_565 bitmaps, or some 565 config in opengles.
And by the way, the Droid panel is 24 bits per pixel as well.
Post a Comment