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格式与透明度。