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
	 Emmanuele Bassi
					Emmanuele Bassi