【发布时间】:2011-08-27 01:42:40
【问题描述】:
我在渲染从资产文件夹加载的纹理时遇到问题。如果我执行完全相同的程序从资源文件夹中加载相同的纹理,则一切正常。此外,当我从位图对象获取宽度和高度属性时,资产中的图像似乎正在正确加载,这些与磁盘上文件的尺寸相对应。但是尝试渲染纹理会导致纯黑色。
// [...]
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 格式,具有透明度。
【问题讨论】:
标签: android opengl-es rendering textures