获取OpenGL最大纹理大小

时间:2014-11-17 20:14:56

标签: android opengl-es

我正在开发一款能够广泛使用位图的Android应用程序,并且我正在寻找一种可靠的方法来在不同的设备上获得OpenGL的最大纹理大小。
我知道最小尺寸= 2048x2048,但这还不够好,因为已经有更高分辨率的平板电脑(例如2560x1600)
那么有可靠的方法来获取这些信息吗?

到目前为止,我已经尝试过:

  • Canvas.getMaximumBitmapWidth()(返回32766,而不是2048)
  • GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE ...)(返回0)

我正在使用minimum-sdk = 15(ICS)并且我在华硕Transformer TF700t Infinity上进行测试

有没有人知道另一种方法来获得它? 或者我是否必须编译具有最大画布大小的已知GPU列表?

2 个答案:

答案 0 :(得分:1)

尝试使用此代码

int[] maxTextureSize = new int[1];
GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxTextureSize, 0);

maxTextureSize存储解码图像的大小限制,例如4096x4096,8192x8192。请记住在 MainThread 中运行这段代码,否则您将获得Zero。

答案 1 :(得分:1)

这将为您提供允许的最大高度。

Canvas canvas = new Canvas();
canvas.getMaximumBitmapHeight() / 8
相关问题