Я строю простые живые обои для Android.Я загружаю необходимую текстуру в OpenGL ES 2.0, используя приведенный ниже код.Я загрузил все мои изображения в один файл размером 2048x2048.Этот код ниже загружает текстуру от 900 до 1200 мсЭто нормальное время или я делаю что-то не так, чтобы сделать это медленно?
Я также пытаюсь очистить список текстур в Opengl каждый раз, когда onSurfaceCreated вызывается в моем рендерере.Правильно ли это сделать, или есть способ простой проверки, если ранее загруженная текстура уже находится в памяти и, если да, то избегать очистки и перезагрузки?Пожалуйста, дайте мне знать ваши комментарии по этому вопросу.Спасибо.
Также при изменении ориентации экрана вызывается OnSurfaceCreated.Таким образом, загрузка текстуры происходит снова.Это не очень хорошая идея.Что обходится?
public int addTexture(Bitmap texture) {
int bitmapFormat = texture.getConfig() == Config.ARGB_8888 ? GLES20.GL_RGBA : GLES20.GL_RGB;
int[] textures = new int[1];
GLES20.glGenTextures(1, textures, 0);
int textureId = textures[0];
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmapFormat, texture, 0);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR_MIPMAP_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT);
GLES20.glGenerateMipmap(GLES20.GL_TEXTURE_2D);
return textureId;
}