Я загружаю растровое изображение для использования в качестве текстуры в моем приложении OpenGLES 2.0.
Если я загружаю и использую растровое изображение через Bitmapfactory, тогда все в порядке. Вот так:
Загрузить
public void loadBitmaps{
backgrounds= BitmapFactory.decodeResource(view.getResources(), R.drawable.backgrounds, BMFOptions);
...
Использовать
//Apply as texture to OpenGL Quad
Переработка
backgrounds.recycle();
.
Теперь проблема...........
.
Когда я загружаю растровое изображение как bitmapDrawable, у меня возникают проблемы (объяснено ниже кода). Вот так:
.
Объявить BitmapDrawable на уровне класса
public class Res{
BitmapDrawable bd;
...
Загрузить
public void loadBitmaps(){
bd = (BitmapDrawable) view.getResources().getDrawable(R.drawable.backgrounds);
backgrounds = bd.getBitmap();
...
Использовать
//Apply as texture to OpenGL Quad
Переработка
backgrounds.recycle();
При этом это работает в первый раз, но если я затем нажму назад, чтобы выйти, и перезапущу приложение, текстуры не будут отображаться, и все, что я получаю, это черные квадраты.
Если я сделаю что-либо из следующего, это решит проблему, и я хотел бы знать, почему ......
- Либо переместите объявление bd из переменной класса, поэтому я использую:
BitmapDrawable bd = (BitmapDrawable) view.getResources().getDrawable(R.drawable.backgrounds);
- Или просто сделайте это после создания растрового изображения:
бд = ноль;
- наконец, я также могу просто не перерабатывать растровое изображение, но это не вариант
Примечание Мне нужно получить доступ к растровому изображению таким образом, а не использовать BitmapFactory, поскольку я обращаюсь к нему через псевдоним XML.