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

FreeBSD Manual Pages

  
 
  

home | help
al_set_target_bitmap(3)     Library Functions Manual	 al_set_target_bitmap(3)

NAME
     al_set_target_bitmap - Allegro 5 API

SYNOPSIS
	    #include <allegro5/allegro.h>

	    void al_set_target_bitmap(ALLEGRO_BITMAP *bitmap)

DESCRIPTION
     This function selects the bitmap to which all subsequent drawing operations
     in the calling thread will draw to.  To return to drawing to a display, set
     the  backbuffer  of  the  display	as the target bitmap, using al_get_back-
     buffer(3).  As a convenience, you may also use al_set_target_backbuffer(3).

     Each allegro bitmap maintains two transformation matrices	associated  with
     it  for  drawing  onto the bitmap.  There is a view matrix and a projection
     matrix.  When you call al_set_target_bitmap, these will be made current for
     the bitmap, affecting global OpenGL and DirectX  states  depending  on  the
     driver in use.

     Each  video  bitmap is tied to a display.	When a video bitmap is set to as
     the target bitmap, the display that the bitmap belongs to is  automatically
     made "current" for the calling thread (if it is not current already).  Then
     drawing  other  bitmaps  which are tied to the same display can be hardware
     accelerated.

     A single display cannot be current for multiple threads simultaneously.  If
     you need to release a display, so it is not current for the calling thread,
     call al_set_target_bitmap(NULL);

     Setting a memory bitmap as the target bitmap will not change which  display
     is current for the calling thread.

     On  some  platforms,  Allegro  automatically backs up the contents of video
     bitmaps because they may be occasionally lost (see  discussion  in  al_cre-
     ate_bitmap(3)'s documentation).  If you're completely recreating the bitmap
     contents  often  (e.g.   every frame) then you will get much better perfor-
     mance by creating the target bitmap with ALLEGRO_NO_PRESERVE_TEXTURE flag.

     OpenGL note:

     Framebuffer objects (FBOs) allow OpenGL to directly draw to a bitmap, which
     is very fast.  When using an OpenGL display, if all of the following condi-
     tions are met an FBO will be created for use with the bitmap:

     * The GL_EXT_framebuffer_object OpenGL extension is available.

     * The bitmap is not a memory bitmap.

     * The bitmap is not currently locked.

     In Allegro 5.0.0, you had to be careful as an FBO would be kept around  un-
     til   the	 bitmap   is   destroyed   or	you   explicitly  called  al_re-
     move_opengl_fbo(3) on the bitmap, wasting resources.   In	newer  versions,
     FBOs  will  be  freed automatically when the bitmap is no longer the target
     bitmap, unless you have called al_get_opengl_fbo(3) to retrieve the FBO id.

     In the following example, no FBO will be created:

	    lock = al_lock_bitmap(bitmap);
	    al_set_target_bitmap(bitmap);
	    al_put_pixel(x, y, color);
	    al_unlock_bitmap(bitmap);

     The above allows using al_put_pixel(3) on a locked bitmap without	creating
     an FBO.

     In this example an FBO is created however:

	    al_set_target_bitmap(bitmap);
	    al_draw_line(x1, y1, x2, y2, color, 0);

     An  OpenGL command will be used to directly draw the line into the bitmap's
     associated texture.

SEE ALSO
     al_get_target_bitmap(3), al_set_target_backbuffer(3)

Allegro reference manual				 al_set_target_bitmap(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=al_set_target_bitmap&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help