SDL_Surface
A structure that contains a collection of pixels used in software blitting.
Data Fields
Uint32 |
flags |
(internal use) |
format |
the format of the pixels stored in the surface; see SDL_PixelFormat for details (read-only) |
|
int |
w, h |
the width and height in pixels (read-only) |
int |
pitch |
the length of a row of pixels in bytes (read-only) |
void* |
pixels |
the pointer to the actual pixel data; see Remarks for details (read-write) |
void* |
userdata |
an arbitrary pointer you can set (read-write) |
int |
locked |
used for surfaces that require locking (internal use) |
void* |
lock_data |
used for surfaces that require locking (internal use) |
clip_rect |
an SDL_Rect structure used to clip blits to the surface which can be set by SDL_SetClipRect() (read-only) |
|
SDL_BlitMap* |
map |
info for fast blit mapping to other surfaces (internal use) |
int |
refcount |
reference count that can be incremented by the application |
Code Examples
/* This is meant to show how to edit a surface's pixels on the CPU, but
normally you should use SDL_FillRect() to wipe a surface's contents. */
void WipeSurface(SDL_Surface *surface)
{
/* This is fast for surfaces that don't require locking. */
/* Once locked, surface->pixels is safe to access. */
SDL_LockSurface(surface);
/* This assumes that color value zero is black. Use
SDL_MapRGBA() for more robust surface color mapping! */
/* height times pitch is the size of the surface's whole buffer. */
SDL_memset(surface->pixels, 0, surface->h * surface->pitch);
SDL_UnlockSurface(surface);
}
Remarks
With most surfaces you can access the pixels directly. Surfaces that have been optimized with SDL_SetSurfaceRLE() should be locked with SDL_LockSurface() before accessing pixels. When you are done you should call SDL_UnlockSurface() before blitting.