Set up a surface for directly accessing the pixels.
Defined in <SDL3/SDL_surface.h>
surface | the SDL_Surface structure to be locked |
Returns 0 on success or a negative error code on failure; call SDL_GetError() for more information.
Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to and read from surface->pixels
, using the pixel format stored in surface->format
. Once you are done accessing the surface, you should use SDL_UnlockSurface() to release it.
Not all surfaces require locking. If SDL_MUSTLOCK(surface)
evaluates to 0, then you can read and write to the surface at any time, and the pixel format of the surface will not change.
This function is available since SDL 3.0.0.
void modify_surface(SDL_Surface *surface) {
/* Make the pixels pointer valid in the surface */
SDL_LockSurface(surface);
/* Surface is locked */
/* Direct pixel access on surface here */
SDL_UnlockSurface(surface);
/* Surface is now unlocked */
}