我有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纹理吗?
答案 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_*
纹理参数。