SDL API Reference SDL_CreateRGBSurface(3)
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 afterSDL_SetVideoMode)
If depth is 8 bits an empty palette is allocated for thesurface, otherwise a 'packed-pixel' SDL_PixelFormat is
created using the [RGBA]mask's provided (seeSDL_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 totake advantage of Video->Video blits
(which are often accelerated).SDL_SRCCOLORKEY This flag turns on colourkeying for
blits from this surface. IfSDL_HWSURFACE is also specified and
colourkeyed blits are hardware-
accelerated, then SDL will attempt to place the surface in video memory. UseSDL_SetColorKey to set or clear this
flag after surface creation.SDL_SRCALPHA This flag turns on alpha-blending for
blits from this surface. IfSDL_HWSURFACE is also specified and
alpha-blending blits are hardware-
accelerated, then the surface will be placed in video memory if possible. UseSDL_SetAlpha to set or clear this flag
after surface creation. Note: SDL Last change: Tue 11 Sep 2001, 23:01 1SDL API Reference SDL_CreateRGBSurface(3)
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
SDL Last change: Tue 11 Sep 2001, 23:01 2