Hi, Just wanted to verify this, may I use 4096x4096 pixel textures for HD devices? Based on the hardware specs it looks like: 2048 for the 7" (OMAP 4460) 4096 for the 8.9" (OMAP 4470) Is that correct or 7" also supports larger textures?
in the guide at
https://developer.amazon.com/sdk/fire/best-practices.html it does say: Applications should use the smallest image feasible and should not be a higher resolution than needed. These practices avoid adding bulk to the application and reduce the risks of performance implications from texture cache misses. as well as: [b]Ensure Correct Texture Size[/b] It is a common misconception that bigger textures always look better; a 1024x1024 texture that never takes up more than a 32x32 area of the screen is a waste of both storage space and bandwidth. A texture's size should be based on its usage; ideally this will be the same as the number of texels the texture will cover when the object to which it is mapped is viewed from the closest allowable distance. ... so assuming you are using hardware acceleration in your app and avoiding any other gotchas it shouldn't hurt too badly but look slike the recommendation is to minimize the size of the texture where possible
I think the question was what is the maximum size allowed for textures by the GPU. With hardware acceleration enabled in Android 3.0+, you can only draw bitmaps that are less than the maximum texture size (and/or dimensions) allowed by the GPU. For example, on some devices you can't use an image that's 3000 pixels wide and 10 pixels high. Even though the memory required may be small-ish, it's too wide to be loaded into a texture, so you can't (easily) display it. That's been my experience, anyway.
I think it's not only about actual textures. It's my understanding that with hardware acceleration enabled, all bitmaps are loaded into the texture cache. So even if you are trying to use a wide-but-not-very-tall image to hold something like sprite frames or buttons, they must be broken into smaller images (harder to manage from a code point of view), if larger than the maximum texture size in any dimension.
Steve, I'm not sure if the downscaling will help actually it would cause native-res HD images to downscale if that's the case... On my Kindle Fire (original) if I try to load up textures larger than 2048px, textures are not displayed and all comes as black. Since image processing chip on 7" HD is similar to original KF, I assume 4096px textures also won't work on it. In which case I should split the sprite sheets... But apparently 8.9" HD will use a newer chip that can support 4096px textures... I'm asking as I'll need to verify this to decide on my workflow.
We got it confirmed from internal team about the Maximum texture size for KF. The values from the original post 2048 for the 7" (OMAP 4460) 4096 for the 8.9" (OMAP 4470) those are the values returned when you call IntBuffer size = IntBuffer.allocate(1); gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, size); Hope this helps you.