использование мипмапов с текстурами ETC1 - PullRequest
0 голосов
/ 24 сентября 2011

Я изменил свой код, чтобы использовать текстуры ETC1, чтобы помочь уменьшить использование памяти, и пока текстура загружается, она больше не генерирует автоматически мипмапы.Это не поддерживается для изображений ETC1?Вот мой код:

    //Generate three texture pointers...
    gl.glGenTextures(3, textures, 0);
    //...and bind it to our array
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
    //Create Nearest Filtered Texture
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
 //     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST); //problem child
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
    //gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP,   GL11.GL_TRUE); problem child.
         gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
         gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);

    //Get the texture from the Android resource directory
    Log.e("Sys", "ETC1 texture support: " + ETC1Util.isETC1Supported());
    InputStream input = context.getResources().openRawResource(R.drawable.testtile);
    try {
        ETC1Util.loadTexture(GLES10.GL_TEXTURE_2D, 0, 0,
                GLES10.GL_RGB, GLES10.GL_UNSIGNED_SHORT_5_6_5, input);
        Log.w("sys", "loaded!");

    } catch (IOException e) {
        Log.w("sys", "Could not load texture: " + e);
    } finally {
        try {
            input.close();
        } catch (IOException e) {
            // ignore exception thrown from close.
        }
      }

Ответы [ 2 ]

1 голос
/ 27 сентября 2012

Используйте этот инструмент: http://www.malideveloper.com/developer-resources/tools/texture-compression-tool.php

Один из Android SDK (etc1tool) не будет генерировать мип-карты автоматически.Инструмент mali может даже конвертировать текстуры в etc1 / etc2.

1 голос
/ 24 сентября 2011

Простой способ решить эту проблему - сгенерировать уровни mipmap с помощью инструмента, который вы используете для создания текстуры ETC1 (все уровни окажутся в файле (например, .pvr)), и загрузить каждый уровень отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...