2011-08-27 154 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.