Android OpenGL ES 2.0纹理显得完全黑色

时间:2011-08-27 01:42:40

标签: android opengl-es rendering textures

我在渲染从assets文件夹加载的纹理时遇到问题。如果我从资源文件夹中加载相同的纹理完全相同的过程,一切正常。此外,资产中的图像似乎正确加载,因为当我从位图对象获取width和height属性时,这些属性与磁盘上文件的尺寸相对应。但是,尝试渲染纹理会导致纯黑色。

// [...]
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格式,具有透明度。

1 个答案:

答案 0 :(得分:0)

我不是百分百肯定,因为你没有展示其余的代码,但是基于你所展示的内容,你似乎通过glBindTexture调用解除了你想要绘制的纹理。最后一个参数等于0。