【问题标题】:Do I have to worry about non-power-of-two textures on API 16+?我是否需要担心 API 16+ 上的非二次幂纹理?
【发布时间】:2016-10-30 20:50:45
【问题描述】:
我正在开发一款适用于 Android 和 iOS 的手机游戏。
正如我在 Android 网站上看到的那样:
- OpenGL ES 1.0 和 1.1 - 此 API 规范由
安卓 1.0 及更高版本。
- OpenGL ES 2.0 - Android 2.2 支持此 API 规范
(API 级别 8)及更高级别。
- OpenGL ES 3.0 - Android 4.3 支持此 API 规范
(API 级别 18)及更高级别。
- OpenGL ES 3.1 - Android 5.0 支持此 API 规范
(API 级别 21)及更高级别。
我构建我的应用程序只针对设备 API16+,但是,这是否意味着我可以使用非罐纹理?
具有此 API 级别的人是否有可能在他的设备上安装 OpenGL 1.0,这会在尝试加载我的纹理时崩溃?这个设备是独立的吗?
【问题讨论】:
标签:
android
ios
api
opengl-es
【解决方案1】:
首先,您没有提及您的目标是 OpenGLES 1 还是 2。根据您发布的信息,您所针对的所有设备都支持 OpenGLES 2,但这取决于您实际选择使用哪个版本。
假设您的代码使用 OpenGLES 2,那么所有设备都应该使用非 POT 纹理。但是,您应该知道纹理环绕 (GL_REPEAT) 和 mipmapping 仅通过扩展在非 POT 纹理上受支持。此外,很多设备都会分配内存,就好像你的纹理是 POT 一样。
由于这些原因,为 3D 资产创作 POT 纹理几乎总是一个好主意。对于 2D 资源,最好考虑使用纹理图集将多个非 POT 纹理组合成更大的 POT 图集。