Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
al_set_blender(3)					     al_set_blender(3)

NAME
       al_set_blender -	Allegro	5 API

SYNOPSIS
	      #include <allegro5/allegro.h>

	      void al_set_blender(int op, int src, int dst)

DESCRIPTION
       Sets the	function to use	for blending for the current thread.

       Blending	means, the source and destination colors are combined in draw-
       ing operations.

       Assume the source color (e.g.  color of a rectangle to draw,  or	 pixel
       of  a  bitmap  to draw) is given	as its red/green/blue/alpha components
       (if the bitmap has no alpha it always is	assumed	to be fully opaque, so
       255  for	 8-bit	or  1.0	for floating point): sr, sg, sb, sa.  And this
       color is	drawn to a destination,	which already has a color: dr, dg, db,
       da.

       The conceptional	formula	used by	Allegro	to draw	any pixel then depends
       on the op parameter:

       o ALLEGRO_ADD

		 r = dr	* dst +	sr * src
		 g = dg	* dst +	sg * src
		 b = db	* dst +	sb * src
		 a = da	* dst +	sa * src

       o ALLEGRO_DEST_MINUS_SRC

		 r = dr	* dst -	sr * src
		 g = dg	* dst -	sg * src
		 b = db	* dst -	sb * src
		 a = da	* dst -	sa * src

       o ALLEGRO_SRC_MINUS_DEST

		 r = sr	* src -	dr * dst
		 g = sg	* src -	dg * dst
		 b = sb	* src -	db * dst
		 a = sa	* src -	da * dst

       Valid values for	src and	dst passed to this function are

       o ALLEGRO_ZERO

		 src = 0
		 dst = 0

       o ALLEGRO_ONE

		 src = 1
		 dst = 1

       o ALLEGRO_ALPHA

		 src = sa
		 dst = sa

       o ALLEGRO_INVERSE_ALPHA

		 src = 1 - sa
		 dst = 1 - sa

       Blending	examples:

       So for example, to restore the default  of  using  premultiplied	 alpha
       blending, you would use (pseudo code)

	      al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA)

       If you are using	non-pre-multiplied alpha, you could use

	      al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA)

       Additive	blending would be achieved with

	      al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ONE)

       Copying the source to the destination (including	alpha) unmodified

	      al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO)

SEE ALSO
       al_set_separate_blender(3), al_get_blender(3)

Allegro	reference manual				     al_set_blender(3)

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=al_set_blender&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help