Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I am developing a Windows Phone 7 game using XNA 4.0 which I plan to later port to iOS and android using Monotouch and Monodroid. My question is how to determine what texture size should I include? This is because the in-game objects that utilize the textures dont care about the actual texture size and just re-size them. Windows phone by its own exists in multiple resolution variants. Should I pick the highest resolution emulator and then measure the sizes of my in-game objects, and then re-size their respective textures to be the same?

share|improve this question
    
You should profile the game on an actual device or devices you are targeting, and then determine how good can you make the texture without sacrificing performance. –  Marcin Seredynski Feb 18 '13 at 18:24
add comment

2 Answers

up vote 1 down vote accepted

Going from the emulator to an actual mobile device, keep in mind that the mobile device's performance characteristics will not match.

In your particular case, keep in mind that texture-fetch on a mobile GPU is relatively slow. Therefore you want to minimise the amount of texture data that you are accessing for each pixel. Ideally you want the texture to be drawn at 1:1 scale on screen.

For example, if you have a large texture that you scale down, then a small rendering region is going to have to load up a large amount of texture data. (Even if texturing only uses a few pixels from the texture, if they're far apart, unused pixels in between will get loaded into cache.)

So, basically, try and store textures in GPU memory as close to their on-screen size as possible. Or use mipmapping, which will automatically select smaller versions of your textures when needed (and also gives you higher quality when scaling down). Trilinear filtering (interpolating between two mip levels) requires more texture fetch - but is still better than substantial downscaling.

As for the maximum supported texture size, WP7 has a maximum texture size of 2048 (XNA Reach profile), as does iOS (from iPhone 3GS onwards, before it was 1024). The actual size you make your textures is more of a artistic consideration - and a consideration of how much memory you can afford.

share|improve this answer
    
So the most practical approach seems to just design for the highest resolution emulator and set the texture size 1:1, since mobiles don't vary all that much, at least for WP8, and there will rarely be a situation where a texture will be half its size on one mobile compared to another (that's what mipmaps are good for, relatively extreme cases). sounds good? –  user26471 Feb 19 '13 at 15:48
    
Sounds good :) Just to make it clear: if you never scale below 50%, there's no real benefit to having a mipmap. –  Andrew Russell Feb 22 '13 at 12:08
add comment

Max texture size for WP7 is 1k x 1k and from what I remember there is only 1 physical resolution available for WP7 480x800 so really if you are looking at different texture sizes it would only be for the other platforms. Windows Phone 8 introduced larger resolutions and the capability of utilizing much larger textures. If you want the maximum detail for each platform then you will likely wind up providing different rez variants for each distinct screen resolution in order to minimize the amount of scaling that is done.

share|improve this answer
    
Considering windows phone 8 alone, it sound very inefficient to include each texture more than once... It still seems to me that designing for the max res emulator and scaling down for others is the best way. But when it comes to android & iPhone, the max resolution goes pretty far (galaxy note 2 is huge). –  user26471 Feb 19 '13 at 12:46
    
Are you sure it's 1k? This table says that it's 2k. –  Andrew Russell Feb 19 '13 at 13:01
    
According to your table it seems it should support 2k x 2k but that wasn't my experience when I was developing initially for my WP7. It took awhile for me to track down that the emulator didn't have a problem with the 2k textures but the device did. Perhaps it was a problem with previous versions of the operating system that were ironed out later. That being said it should be even easier to support WP8 + WP7. –  RobCurr Feb 19 '13 at 18:19
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.