2012-06-16 2 views
2

나는 질감을 사용하려고하지만 내 갤럭시 넥서스에 오류glGenerateMipmap IMGSRV 오류

:0: SGXQueueTransfer: all paths failed 
:0: HardwareMipGen: Failed to generate texture mipmap levels (error=3) 

을 얻고있다. EVO 4G에서 이러한 오류가 발생하지 않습니다.

다음은 관련로드 코드입니다.

private static int load(Context context, int resID) { 
    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), 
      resID); 

    int[] texts = new int[1]; 
    GLES20.glGenTextures(1, texts, 0); 
    int texID = texts[0]; 

    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texID); 

    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); 

    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, 
      GLES20.GL_CLAMP_TO_EDGE); 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, 
      GLES20.GL_REPEAT); 

    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 

    return texID; 
} 

private static int loadWithMipmap(Context context, int resID) { 
    int texID = load(context, resID); 

    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR_MIPMAP_NEAREST); 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR_MIPMAP_NEAREST); 

    GLES20.glGenerateMipmap(GLES20.GL_TEXTURE_2D); 

    return texID; 
} 

어떤 아이디어가 있으며 어떻게 해결할 수 있습니까?

EDIT : 오류를 일으키는 이미지는 하나 뿐이며 1024x2048 png입니다.

답변

1

나는 이것을보고, 정사각형으로 이미지를 부숴 버린 후에 작동했다. OpenGL은 오류를주지 않습니다.

+0

이 문제를 해결 한 지 오래되었지만 트릭이라고 생각합니다. – EmbMicro

0

언급 한 하드웨어에 대한 액세스 권한이 없기 때문에 오류가 발생합니까? 의 힘이 2 개가 아닌 크기의 텍스처로 오류가 발생합니까?

+0

그들은 모두 2 차원의 힘입니다. 그렇지 않은 경우 휴대 전화에 전혀 표시되지 않습니다. 문제를 일으키는 크기가 1024x2048입니다. – EmbMicro

1

Frickin 'scary. 갤럭시 넥서스 7

에서 테스트 당신은 다음을 수행해야합니다

GLES20.glTexParameterf(
     GLES20.GL_TEXTURE_2D, 
     GLES20.GL_TEXTURE_MIN_FILTER, 
    GLES20.GL_LINEAR_MIPMAP_NEAREST); 
    this.context.checkError("GL_TEXTURE_MIN_FILTER"); 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
     GLES20.GL_TEXTURE_MAG_FILTER, 
    GLES20.GL_LINEAR); 

는 엄밀히 말하면, 나는 GL_LINEAR_MIPMAP_NEAREST 유효한 MAG_FILTER 아닌 것 같아요. Nexus 7은 그렇게 생각합니다. 그리고 그것은 변화와 함께 아름답게 밉니다.

+0

많은 프로그램 대신 하나의 큰 스프라이트 시트를 사용하도록 프로그램을 변경 했으므로 이제 GL_LINEAR_MIPMAP_NEAREST를 사용하여도 오류가 발생하지 않습니다. 1024x2048이지만 이제는 작동하는 하나의 이미지에서만 실패했습니다. – EmbMicro