我需要担心 API 16+ 上的非二次幂纹理吗?

问题描述 投票:0回答:1

我正在为 Android 和 iOS 创建一款手机游戏。

正如我在 Android 网站上读到的:

  • OpenGL ES 1.0 和 1.1 - 此 API 规范由 Android 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 opengl-es
1个回答
2
投票

首先,您没有提到您的目标是 OpenGLES 1 还是 2。从您发布的信息来看,您所针对的所有设备都支持 OpenGLES 2,但这取决于您实际选择使用哪个版本。

假设您的代码使用 OpenGLES 2,那么所有设备都应该使用非 POT 纹理。但是,您应该注意,纹理环绕 (GL_REPEAT) 和 mipmapping 仅通过扩展在非 POT 纹理上受支持。此外,很多设备都会分配内存,就好像你的纹理是 POT 一样。

由于这些原因,为 3D 资源创作 POT 纹理几乎总是一个好主意。对于 2D 资源,最好考虑使用纹理图集将多个非 POT 纹理组合成更大的 POT 图集。

© www.soinside.com 2019 - 2024. All rights reserved.