什么决定最大纹理大小

What Determines Maximum Texture Size?

本文关键字:纹理 决定 什么      更新时间:2023-10-16

我是Unity3D开发人员,从事手机游戏开发。最近我们遇到了一个问题,我们所有的纹理都被渲染为黑色方块。经过一些研究,我们发现这与设备支持最大纹理大小有关。有问题的设备(iPhone 4和旧版安卓手机)只支持2048 x 2048的最大纹理大小,而新的设备支持4096 x 4096的最大纹理尺寸。为了解决这个问题,我们将精灵贴图分解为几个较小的2048 x 2048纹理贴图。

两个问题:

1) 是什么决定了特定设备支持的最大纹理大小?是显卡,还是某种硬件限制?还是OpenGL ES支持的版本决定了这一点?

2) 有没有一种简单的方法可以从语法上找出设备的最大纹理大小?如果是这样,您将使用什么API或SDK来查找信息

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

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

int size;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size);

只要你只考虑iOS设备,这就很容易了:iPhone 4S及更新版本和iPad 2及更新版本都支持4096x4096纹理。较旧的设备仅支持2048x2048。

iPad2是一种特殊情况,如果安装的iOS版本是5.0或更高版本,则只能使用2048x2048。