什么决定最大纹理尺寸?

时间:2014-09-09 16:36:20

标签: c# c++ opengl-es unity3d textures

我是一名从事手机游戏的Unity3D开发人员。最近我们遇到了一个问题,我们所有的纹理都呈现为黑色方块。经过一些研究,我们发现它与最大纹理尺寸的设备支持有关。有问题的设备(iPhone 4和较旧的Android手机)仅支持最大纹理尺寸2048 x 2048,而较新的设备最大纹理尺寸支持4096 x 4096.为解决此问题,我们将精灵地图解压缩为几个较小的2048 x 2048纹理贴图。

两个问题:

1)什么决定了特定设备支持的最大纹理尺寸?它是显卡,某种硬件限制?或者是支持OpenGL ES的版本来决定这个吗?

2)是否有一种简单的方法可以通过编程方式找出设备的最大纹理尺寸?如果是这样,您将使用什么API或SDK来查找信息

1 个答案:

答案 0 :(得分:3)

1)它由设备硬件决定,特别是图形芯片(GPU)。

2)是的。它是显卡报告的OpenGL属性的一部分。试试这段代码:

int size;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size);

只要您只考虑iOS设备,它就非常简单:iPhone 4S和更新版本以及iPad 2及更新版本支持4096x4096纹理。较旧的设备仅支持2048x2048。

iPad 2是一种特殊情况,如果已安装的iOS版本为5.0或更早版本,则只能使用2048x2048。