Как загрузить текстуру изображения BGRA в GLES2? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть необработанное изображение в формате BGRA.

Я попытался изменить формат glTexImage2D (7-й аргумент) с помощью GL_BGRA, GL_BGRA_EXT, GL_BGRA_IMG, GL_EXT_texture_format_format_BGRA8888, получение черного изображения.

Ниже приведен источникдля загрузки texture.7-го аргумента, измененного с указанными выше значениями.

GLuint texture_object_id_1;
glGenTextures(1, &texture_object_id_1);
glBindTexture(GL_TEXTURE_2D, texture_object_id_1);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderBufferWidth, renderBufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, osd_raw); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

Если я попробую использовать GL_RGBA, цвет текстуры будет голубоватым.Есть идеи, как правильно загрузить текстуру BGRA?

1 Ответ

0 голосов
/ 06 июня 2018

В соответствии со спецификацией OpenGL ES 2, internalformat должно соответствовать format.

Попробуйте glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA, renderBufferWidth, renderBufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, osd_raw);

Кроме того, вы можете делать все что угодно с данными текстуры в шейдерах (включаяпереключение каналов).

В OpenGL ES 3 вы также можете использовать GL_TEXTURE_SWIZZLE_* параметры текстуры.

...