OpenGL Mipmapping(Android NDK)

http://en.wikipedia.org/wiki/Mipmap
这个是我这次在做安卓时遇到的问题
因为GPU的限制,纹理创建时的宽或高需为2的次方
就是1,2,4,8,16,32,64,128.......
图的宽高为31*52,直接作为纹理的宽高
在某些GPU是可以支援非2次方的宽高, 所以没有问题
但还是有很多GPU是不支援的
若是GPU不支援非2次方宽高,则glTexImage2D会产生GL_INVALID_VALUE(1281)的错误
所以就直接将所有的纹理创建为2次方的宽高
就解决了问题
实际实践手法是这样
1.读图
2.读取图的宽高
3.找出适合的纹理宽高(如5*9=>8*16, 31*55=>32*64)
4.用纹理宽高创建缓存
最后再用glTexImage2D创建纹理
这样就在绝大部分Android机子上能运行了

你可能感兴趣的:(游戏,android,android)