如何在GLES2中加载BGRA图像纹理?

时间:2018-06-06 09:52:59

标签: opengl-es-2.0

我有BGRA格式的原始图像。

我尝试使用GL_BGRA,GL_BGRA_EXT,GL_BGRA_IMG,GL_EXT_texture_format_BGRA8888,获取黑色图像来更改glTexImage2D格式(第7个算法)。

以下是用于加载texture.7th参数的源,该参数已使用上述值更改。

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 :(得分:1)

根据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_*纹理参数。