У меня проблемы с рендерингом текстур, загруженных из папки ресурсов. Если я делаю точно такую же процедуру загрузки той же текстуры из папки ресурсов, все работает нормально. Кроме того, изображение из ресурсов, кажется, загружается правильно, поскольку, когда я получаю свойство 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 с прозрачностью.