我正在开发一个将广泛使用位图的 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 及其最大 Canvas 大小的列表?
最佳答案
尝试使用这段代码
int[] maxTextureSize = new int[1];
GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxTextureSize, 0);
maxTextureSize
存储解码图像的大小限制,例如 4096x4096、8192x8192 。请记住在 MainThread 中运行这段代码,否则你将得到零。
关于android - 获取 OpenGL 最大纹理大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26981125/