Dường như bạn đang cố gắng biết amout của VRAM (RAM video) khả dụng. The question has already been partially answered.
Tuy nhiên, lượng VRAM không xác định số lượng họa tiết sẽ phù hợp với nó: những thứ này có thể được nén, số lượng VRAM có thể thay đổi do ứng dụng khác và chúng tôi không biết bao nhiêu bộ nhớ trình điều khiển video sử dụng.
Phương pháp 1
From this topic, bạn có thể nhận được số tiền tối đa của các đơn vị kết cấu; đó có nghĩa là số lượng tối đa có thể bị ràng buộc cùng một lúc:
int[] maxSize = new int[1];
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxSize, 0);
And from this other one, bạn có thể lấy kích thước họa tiết tối đa:
int[] maxNum = new int[1];
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, maxNum, 0);
Vì vậy, một cách logic, bạn có thể ít nhất là phù hợp maxSize[0]
² × maxNum[0]
pixel trong VRAM mà không gặp sự cố. Ngay cả khi VRAM hết dung lượng, trình điều khiển đồ họa sẽ quản lý nó cho chúng tôi (mà có thể bao gồm sự cố ứng dụng trong trường hợp đói).
Dù sao, có thể bạn sẽ không điều chỉnh kích thước họa tiết của mình tùy thuộc vào số lượng VRAM hoặc các pixel có sẵn; nó có thể nhưng không mang lại lợi nhuận, di động và khó thực hiện đúng cách. Có một cách cách tốt hơn để làm điều này:
Phương pháp 2
99% thời gian, amout VRAM trên chip đồ họa là tỷ lệ thuận với kích thước màn hình. Do đó, use the screen's DPI (ldpi, mdpi, hdpi, xhdpi) để xác định phiên bản (kích thước) của kết cấu cần tải (thử nghiệm với các thiết bị khác nhau), vì vậy bạn an toàn về "nó có phù hợp với thiết bị đó không?".