2D rendererSDL 3.2

SDL_SetRenderTarget

Makes the renderer draw into a texture instead of the window. NULL switches back to the window.

Signature

bool SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture);

How it works

Draw a minimap, a scene to be post-processed or a cached background once into a texture, then draw that texture like any other. The texture must have been created with SDL_TEXTUREACCESS_TARGET.

Clear the target first (the texture's old contents are kept otherwise), and remember to set NULL before presenting.

Parameters

rendererSDL_Renderer *

The renderer.

textureSDL_Texture *

A TARGET texture, or NULL for the window.

Return value

true on success, false on failure.

Example

example.cpp
1SDL_Texture* minimap = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,
2                                         SDL_TEXTUREACCESS_TARGET, 256, 256);
3SDL_SetRenderTarget(renderer, minimap);
4SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
5SDL_RenderClear(renderer);
6drawMapTiles(renderer);
7SDL_SetRenderTarget(renderer, nullptr);          // back to the window
8SDL_FRect corner{1000, 20, 256, 256};
9SDL_RenderTexture(renderer, minimap, nullptr, &corner);
Official SDL wiki