什么决定最大纹理大小
What Determines Maximum Texture Size?
我是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。
相关文章:
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- SFML纹理像播放器
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- OpenGL大的3D纹理(>2GB)非常慢
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 着色器纹理值与创建纹理时写入的值不同
- OpenGL将纹理四边形渲染为(0,0)
- 宽度为奇数的16位纹理为片状
- 使用 CUDA 和纹理进行图像减法
- 在不使用统一的情况下将纹理传递给 GLSL 着色器?
- 将使用太多的纹理插值器 - 带旋转的着色器
- dx11 渲染到纹理仅显示透明颜色
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 如何使用 DXGI 格式DXGI_FORMAT_R1_UNORM创建 2D 纹理?
- C++递归来决定数组中的两个值
- 纹理单位重叠?渲染了错误的纹理
- SFML 纹理变换(放大)
- SDL2 二维纹理分配/池化
- Qt OpenGL 渲染到纹理性能问题
- 什么决定最大纹理大小