Текстура Android OpenGL ES 2.0 выглядит абсолютно черной - PullRequest
1 голос
/ 27 августа 2011

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

Я не уверен на 100%, так как Вы не представили остальную часть кода, но, исходя из того, что Вы показали, кажется, что Вы отменяете привязку текстуры, которую Вы хотите нарисовать, с помощью вызова glBindTexture споследний параметр равен 0.

...