gl: Use a uniform to flip R and B colors on GLES
This allows us to decide when the R and B color channels should be flipped with a much better granularity. For instance, when using GLX_EXT_texture_from_pixmap to create a GL texture from a surface we don't need to swap the R and B channels, as the internal representation of the texture data will already have the appropriate colors. We also don't need to flip color channels when blitting from a texture.
This commit is contained in:
@ -1,12 +1,16 @@
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D map;
|
||||
uniform int flipColors;
|
||||
|
||||
varying highp vec2 vUv;
|
||||
|
||||
void main() {
|
||||
vec4 color = texture2D(map, vUv);
|
||||
|
||||
/* Flip R and B around to match the Cairo convention */
|
||||
gl_FragColor = vec4(color.z, color.y, color.x, color.w);
|
||||
/* Flip R and B around to match the Cairo convention, if required */
|
||||
if (flipColors == 1)
|
||||
gl_FragColor = vec4(color.z, color.y, color.x, color.w);
|
||||
else
|
||||
gl_FragColor = color;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user