Estoy tratando de obtener el límite máximo de tamaño de la textura en Android para OpenGL 2.0. Pero he encontrado que la siguiente instrucción solo funciona si estoy actualmente dentro del contexto de OpenGL, en otras palabras, debo tener un GL Surface y un GL Renderer, etc., que no quiero.Obtenga el límite máximo de tamaño de la textura OpenGL ES 2.0 en Android
int[] maxTextureSize = new int[1];
GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, maxTextureSize, 0);
Así que vinieron con el siguiente algoritmo, que me da el tamaño máximo de la textura sin tener que crear cualquier superficie o procesador. Funciona correctamente, por lo que mi pregunta es si esto funcionará con todos los dispositivos Android, y si alguien puede detectar cualquier error, por las dudas.
public int getMaximumTextureSize()
{
EGL10 egl = (EGL10)EGLContext.getEGL();
EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
// Initialise
int[] version = new int[2];
egl.eglInitialize(display, version);
// Query total number of configurations
int[] totalConfigurations = new int[1];
egl.eglGetConfigs(display, null, 0, totalConfigurations);
// Query actual list configurations
EGLConfig[] configurationsList = new EGLConfig[totalConfigurations[0]];
egl.eglGetConfigs(display, configurationsList, totalConfigurations[0], totalConfigurations);
int[] textureSize = new int[1];
int maximumTextureSize = 0;
// Iterate through all the configurations to located the maximum texture size
for (int i = 0; i < totalConfigurations[0]; i++)
{
// Only need to check for width since opengl textures are always squared
egl.eglGetConfigAttrib(display, configurationsList[i], EGL10.EGL_MAX_PBUFFER_WIDTH, textureSize);
// Keep track of the maximum texture size
if (maximumTextureSize < textureSize[0])
{
maximumTextureSize = textureSize[0];
}
Log.i("GLHelper", Integer.toString(textureSize[0]));
}
// Release
egl.eglTerminate(display);
Log.i("GLHelper", "Maximum GL texture size: " + Integer.toString(maximumTextureSize));
return maximumTextureSize;
}
¿Estás seguro de que el tamaño de la textura GL está ligado al tamaño del pbuffer de EGL? ¿Está esto contenido en la especificación EGL 1.0 en alguna parte? –