trusty (3) al_set_target_bitmap.3alleg5.gz

Provided by: allegro5-doc_5.0.10-2_all bug

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_backbuffer(3alleg5).  As a convenience, you may also use al_set_target_backbuffer(3alleg5).

       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.

       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 conditions 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 until the bitmap is destroyed or
       you explicitly called al_remove_opengl_fbo(3alleg5) 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(3alleg5) 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(3alleg5) 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(3alleg5), al_set_target_backbuffer(3alleg5)