获取 OpenGL 最大纹理大小

CJ *_*ten 6 android opengl-es

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

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

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

我正在使用 minimum-sdk = 15 (ICS) 并且我正在 Asus Transformer TF700t Infinity 上测试它

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

小智 6

尝试使用此代码

int[] maxTextureSize = new int[1];
GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxTextureSize, 0);
Run Code Online (Sandbox Code Playgroud)

maxTextureSize存储解码图像的大小限制,例如 4096x4096、8192x8192 。请记住在主线程中运行这段代码,否则您将得到零。

  • 即使您在 MainThread 中,您也可以提出“E/libEGL:在没有当前上下文的情况下调用 OpenGL ES API(每个线程记录一次)”,并得到结果 0。 (2认同)