2013-03-04 3 views
0

Источник заключается в следующем:бесплатно GLUtils.texImage2D

public static int loadTexture (Bitmap bitmap) 
{ 
    //long time1 = System.currentTimeMillis(); 
    int[] textureId = new int[1]; 

    GLES20.glGenTextures (1, textureId, 0); 
    GLES20.glBindTexture (GLES20.GL_TEXTURE_2D, textureId[0]); 

    GLES20.glTexParameteri (GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); 
    GLES20.glTexParameteri (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_CLAMP_TO_EDGE); 
    GLES20.glTexParameteri (GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); 

    GLES20.glEnable(GLES20.GL_BLEND); 
    GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA); 

    try{ 
    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 

    return textureId[0]; 
} 

Я хочу, чтобы переработать растровый ИНТ метода GLUtils.texImage2D (GLES20.GL_TEXTURE_2D, 0, растровый, 0) и свободной памяти, пожалуйста, помогите мне как это сделать?

ответ

2

Чтобы удалить текстуру OpenGL, используйте:

GLES20.glDeleteTextures(1, textureId, 0); 

освободить саму битовую карту, используйте:

bitmap.recycle(); 

Вы можете переработать битовую карту, когда он был загружен в OpenGL.

+0

Я считаю, что при вызове GLUtils.texImage2D (GLES20.GL_TEXTURE_2D, 0, bitmap, 0); битмап копирует массив пикселей в кеш рендеринга OPEN GL. Потому что я вызываю растровое изображение метода после loadTexture (растровое изображение Bitmap). –

+0

Независимо от того, включен ли вызов GLES20.glDeleteTextures (1, textureId, 0), OPEN GL должен освобождать кеш текстурного буфера с помощью textureId? –

Смежные вопросы