我的意思是,如果我想为纹理使用位图,我是否应该确保该位图尽可能小以节省纹理的内存? (当然,我在创建纹理后丢弃了位图本身)。或者我可以只使用 512x512 bmp 和 OpenGL 自动根据较小的尺寸制作纹理(因为它只是在突破游戏中成为一个球)?
因为我可以想象,如果要在多种分辨率下使用位图,从 ldpi 手机到平板电脑(Android...),确定位图的完美大小需要花费大量时间。或者我必须为同一图像创建不同大小的图像,例如 512,256,128 。 . . ?
最佳答案
OpenGL 纹理与您创建它一样大(例如,使用 glTexImage2D
)。如果你想从位图创建纹理,你要么使纹理与位图一样大,要么自己以某种方式缩小位图数据。 OpenGL 应该如何自动知道您的应用程序的最佳纹理大小,更不用说为您缩小它,这当然是您的工作。
如果您真的在谈论自动 mipmap 生成,那么这是可能的,您应该看看 Salvatore 的回答。但是,如果您真的说 OpenGL 会为您的纹理选择“最佳”尺寸并使用完全不同尺寸的图像初始化其数据,那绝对不可能。
关于android - OpenGL 纹理的分辨率是否会自动缩小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931604/