您似乎想知道可用的 VRAM(视频 RAM)的数量。
The question has already been partially answered.
但是,VRAM 的数量并不能决定它可以容纳多少纹理:这些纹理可以被压缩,VRAM 的数量可能会因为另一个应用程序而改变,而且我们不知道视频驱动程序使用了多少内存.
方法一
From this topic,可以获得最大数量的纹理单元;即可以同时绑定的最大数量:
int[] maxSize = new int[1];
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxSize, 0);
And from this other one,可以获取最大纹理尺寸:
int[] maxNum = new int[1];
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, maxNum, 0);
因此,从逻辑上讲,您至少可以毫无问题地将maxSize[0]²×maxNum[0] 像素放入 VRAM。即使 VRAM 空间不足,图形驱动程序也会为我们管理它(这可能包括在饥饿的情况下应用程序崩溃)。
无论如何,您可能不会根据 VRAM 数量或可用像素来调整纹理的大小;这是可能的,但不盈利,可移植且难以正确实施。
有一个方式更好的方式来做到这一点:
方法二
99% 的时间,图形芯片上的 VRAM 数量与屏幕大小成正比。因此,use the screen's DPI (ldpi, mdpi, hdpi, xhdpi) 确定要加载哪个版本(大小)的纹理(用不同的(真实)设备进行实验),因此您可以放心“它是否适合该设备?”。