2011-08-27 153 views
1

我在從資源文件夾中加載紋理時出現問題。如果我執行完全相同的過程從資源文件夾加載相同的紋理,一切工作正常。此外,來自資產的圖像似乎正在正確加載,因爲當我從位圖對象獲取寬度和高度屬性時,這些對應於磁盤上文件的尺寸。然而,試圖渲染紋理的結果是純黑的。Android OpenGL ES 2.0紋理顯示爲全黑色

// [...] 
int [] tmpId = new int[1]; 
GLES20.glGenTextures(1, tmpId, 0); 
int id = tmpId[0]; 
InputStream in = null; 
try { 
    in = context.getAssets().open(resource); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
Bitmap bitmap = BitmapFactory.decodeStream(in); 
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, id); 
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 

GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); 

GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); 
bitmap.recycle(); 

我錯過了什麼,是否有規則適用於不同於資源的資產?我似乎無法弄清楚爲什麼這不起作用。

圖像是512x512 PNG格式與透明度。

回答

0

我不是100%確定的,因爲您沒有提供代碼的其餘部分,但是基於您展示的內容,您似乎想通過glBindTexture調用來解除您想要繪製的紋理最後一個參數等於0.