SDL_CreateRGBSurface — Create an empty SDL_Surface
#include "SDL.h"
SDL_Surface *SDL_CreateRGBSurface( |
Uint32 | flags, |
int | width, | |
int | height, | |
int | depth, | |
Uint32 | Rmask, | |
Uint32 | Gmask, | |
Uint32 | Bmask, | |
Uint32 | Amask) ; |
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 theSDL_SRCALPHA
flag is automatically set. You may remove this flag by callingSDL_SetAlpha
after surface creation.
/* 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); }
SDL_CreateRGBSurfaceFrom(3), SDL_FreeSurface(3), SDL_SetVideoMode(3), SDL_LockSurface(3), SDL_PixelFormat(3), SDL_Surface(3) SDL_SetAlpha(3) SDL_SetColorKey(3)
COPYRIGHT |
---|
This manual page is taken from the SDL library, licensed under GNU LGPL. |