Похоже, вы пытаетесь узнать, сколько доступно VRAM (видео RAM).
На вопрос уже частично дан ответ.
Однако количество VRAM не определяет, сколько текстур поместится в нем: эти могут быть сжаты, количество VRAM может измениться из-за другого приложения, и мы не знаем, сколько памяти использует видеодрайвер .
Метод 1
Из этой темы вы можете получить максимальное количество текстурных единиц; это означает максимальное число, которое может быть связано одновременно:
int[] maxSize = new int[1];
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxSize, 0);
А из этого другого вы можете получить максимальный размер текстуры:
int[] maxNum = new int[1];
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, maxNum, 0);
Таким образом, по логике вы можете по крайней мере вписать maxSize[0]
² × maxNum[0]
пикселей в VRAM без проблем. Даже если в VRAM не хватает места, графический драйвер будет управлять нами (что может включать сбой приложения в случае голодания).
В любом случае, вы, вероятно, не будете настраивать размер ваших текстур в зависимости от количества VRAM или доступных пикселей; это возможно, но не выгодно, портативно и сложно реализовать должным образом.
Есть способ лучший способ сделать это:
Метод 2
99% времени, количество VRAM на графическом чипе пропорционально размеру экрана. Таким образом, использует DPI экрана (ldpi, mdpi, hdpi, xhdpi) , чтобы определить, какую версию (размер) текстуры загружать (экспериментировать с различными (реальными) устройствами), так что вы в безопасности «Подходит ли оно для этого устройства?».