Android BitmapFactory.decodeStream загружает формат BGR? - PullRequest
0 голосов
/ 01 сентября 2011

Я хочу загрузить .png файл через менеджер ресурсов, который предоставляется Android SDK.Менеджер AssetManager;/........./ BitmapFactory.decodeStream (manager.open (path));

Возвращает данные формата BGR, но opengl es 2.0 использует формат RGB, поэтому синий кажется красным, красный - синимКак странно.

Есть ли какое-нибудь решение для этого?

Я использую устройство Nvıdia Tegra 2 (Android 2.2) для тестирования приложения вместе с c ++ через JNI.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Последние версии OpenGL, также предоставляют входные форматы BGR;OpenGL-ES нет, к сожалению.Поскольку вы работаете на Android, вам приходится иметь дело с OpenGL-ES.

Если вы используете фрагментный шейдер, также тривиально применить rgb → bgr swizzle, который, возможно, самый простой способ преодолеть этопроблема.

0 голосов
/ 01 сентября 2011

Вы должны знать количество бит для цветов, скажем, n бит для цвета, поэтому первый n бит представляет СИНИЙ, второй n бит представляет ЗЕЛЕНЫЙ, а последние n бит представляют КРАСНЫЙ на входе. Вам необходимо поменять эти битовые группы в правильном порядке, например:

output = (input << (2 * n)) + (input << n >> n) + (input >> (2 * n));

Чтобы использовать это решение, вам нужно узнать, сколько стоит n.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...