Man Linux: Main Page and Category List

NAME

       SDL_CreateRGBSurface - Create an empty SDL_Surface

SYNOPSIS

       #include "SDL.h"

       SDL_Surface  *SDL_CreateRGBSurface(Uint32 flags, int width, int height,
       int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);

DESCRIPTION

       Allocate an empty surface (must be called after SDL_SetVideoMode)

       If depth is 8 bits an empty  palette  is  allocated  for  the  surface,
       otherwise   a  ’packed-pixel’  SDL_PixelFormat  is  created  using  the
       [RGBA]mask’s provided (see SDL_PixelFormat). The  flags  specifies  the
       type  of  surface  that should be created, it is an OR’d combination of
       the following possible values.

       SDL_SWSURFACE       SDL will create the surface in system memory.  This
                           improves  the  performance  of  pixel level access,
                           however you may not be able to  take  advantage  of
                           some types of hardware blitting.

       SDL_HWSURFACE       SDL  will  attempt  to  create the surface in video
                           memory. This will allow SDL to  take  advantage  of
                           Video->Video blits (which are often accelerated).

       SDL_SRCCOLORKEY     This flag turns on colourkeying for blits from this
                           surface. If SDL_HWSURFACE  is  also  specified  and
                           colourkeyed  blits  are  hardware-accelerated, then
                           SDL will attempt to  place  the  surface  in  video
                           memory.  Use  SDL_SetColorKey  to set or clear this
                           flag after surface creation.

       SDL_SRCALPHA        This flag turns on alpha-blending  for  blits  from
                           this  surface.  If  SDL_HWSURFACE is also specified
                           and alpha-blending blits are  hardware-accelerated,
                           then  the surface will be placed in video memory if
                           possible. Use SDL_SetAlpha to  set  or  clear  this
                           flag after surface creation.

              Note:

              If an alpha-channel is specified (that is, if Amask is nonzero),
              then the SDL_SRCALPHA flag is automatically set. You may  remove
              this flag by calling SDL_SetAlpha after surface creation.

RETURN VALUE

       Returns the created surface, or NULL upon error.

EXAMPLE

           /* Create a 32-bit surface with the bytes of each pixel in R,G,B,A order,
              as expected by OpenGL for textures */
           SDL_Surface *surface;
           Uint32 rmask, gmask, bmask, amask;

           /* SDL interprets each pixel as a 32-bit number, so our masks must depend
              on the endianness (byte order) of the machine */
       #if SDL_BYTEORDER == SDL_BIG_ENDIAN
           rmask = 0xff000000;
           gmask = 0x00ff0000;
           bmask = 0x0000ff00;
           amask = 0x000000ff;
       #else
           rmask = 0x000000ff;
           gmask = 0x0000ff00;
           bmask = 0x00ff0000;
           amask = 0xff000000;
       #endif

           surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,
                                          rmask, gmask, bmask, amask);
           if(surface == NULL) {
               fprintf(stderr, "CreateRGBSurface failed: %s
       ", SDL_GetError());
               exit(1);
           }

SEE ALSO

       SDL_CreateRGBSurfaceFrom,       SDL_FreeSurface,      SDL_SetVideoMode,
       SDL_LockSurface,     SDL_PixelFormat,     SDL_Surface      SDL_SetAlpha
       SDL_SetColorKey