我正在为 Android 和 iOS 创建一款手机游戏。
正如我在 Android 网站上读到的:
我构建的应用程序仅针对 API16+ 的设备,但是,这是否意味着我可以使用非罐纹理?
是否有可能具有此 API 级别的人在他的设备上安装了 OpenGL 1.0,而在尝试加载我的纹理时会崩溃?这个设备是独立的吗?
首先,您没有提到您的目标是 OpenGLES 1 还是 2。从您发布的信息来看,您所针对的所有设备都支持 OpenGLES 2,但这取决于您实际选择使用哪个版本。
假设您的代码使用 OpenGLES 2,那么所有设备都应该使用非 POT 纹理。但是,您应该注意,纹理环绕 (GL_REPEAT) 和 mipmapping 仅通过扩展在非 POT 纹理上受支持。此外,很多设备都会分配内存,就好像你的纹理是 POT 一样。
由于这些原因,为 3D 资源创作 POT 纹理几乎总是一个好主意。对于 2D 资源,最好考虑使用纹理图集将多个非 POT 纹理组合成更大的 POT 图集。