[cairo] Compositing strategies and pre-multiplied alpha
Russell Shaw
rjshaw at netspace.net.au
Wed Sep 21 17:29:38 PDT 2005
Mauricio Piacentini wrote:
> I need some help understanding the rationale behind using pre-multiplied
> alpha in a graphics API, and I understand this is used in Cairo image
> surfaces, according to the docs. Please understand I am not questioning
> this decision, just trying to grasp the implications of this method as
> far as my particular needs are concerned.
> Let me explain this better: suppose I want to display two rotated
> bitmaps and two svg files in the same screen, but animated. A possible
> optimization would be to maybe render each element to a different
> surface, and then composite the resulting "sprites" in a final screen
> surface. This way I would not have to re-render the svg data for example
> or rotate the bitmap at every frame, unless I decide to rotate or scale
> one of the elements. As long as I am simply moving the sprites in x and
> y the caching of data as bitmaps would conceivably speed up things a
> lot, right?
> The big question is: am I right to assume that doing the above (caching
> the data as bitmaps with pre-multiplied alpha) will automatically reduce
> the quality of antialiasing? The effect would probably not be noticeable
> on a black background, but if I composite one cached bitmap on top of
> another I will have a drop in antialiasing quality, wouldn't I? Or is
> this not important as long as I move my sprites in whole pixel
> increments (subpixel is obviously not possible in a scenario like this.)
It is explained here: http://keithp.com/~keithp/porterduff/p253-porter.pdf
More information about the cairo
mailing list