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 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());
- }
SEE ALSO
- SDL_CreateRGBSurfaceFrom, SDL_FreeSurface, SDL_SetVideoMode, SDL_LockSurface, SDL_PixelFormat, SDL_Surface SDL_SetAlpha SDL_SetColorKey