SDL_render.h File Reference
`#include "SDL_stdinc.h"`
`#include "SDL_rect.h"`
`#include "SDL_video.h"`
`#include "begin_code.h"`
`#include "close_code.h"`
Include dependency graph for SDL_render.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | SDL_RendererInfo
struct | SDL_Vertex

## Typedefs

typedef struct SDL_Renderer | SDL_Renderer
typedef struct SDL_Texture | SDL_Texture

## Enumerations

enum | SDL_RendererFlags { SDL_RENDERER_SOFTWARE = 0x00000001 , SDL_RENDERER_ACCELERATED = 0x00000002 , SDL_RENDERER_PRESENTVSYNC = 0x00000004 , SDL_RENDERER_TARGETTEXTURE = 0x00000008 }
enum | SDL_ScaleMode { SDL_ScaleModeNearest , SDL_ScaleModeLinear , SDL_ScaleModeBest }
enum | SDL_TextureAccess { SDL_TEXTUREACCESS_STATIC , SDL_TEXTUREACCESS_STREAMING , SDL_TEXTUREACCESS_TARGET }
enum | SDL_TextureModulate { SDL_TEXTUREMODULATE_NONE = 0x00000000 , SDL_TEXTUREMODULATE_COLOR = 0x00000001 , SDL_TEXTUREMODULATE_ALPHA = 0x00000002 }
enum | SDL_RendererFlip { SDL_FLIP_NONE = 0x00000000 , SDL_FLIP_HORIZONTAL = 0x00000001 , SDL_FLIP_VERTICAL = 0x00000002 }

## Functions

int | SDL_GetNumRenderDrivers (void)
int | SDL_GetRenderDriverInfo (int index, SDL_RendererInfo *info)
int | SDL_CreateWindowAndRenderer (int width, int height, Uint32 window_flags, SDL_Window **window, SDL_Renderer **renderer)
SDL_Renderer * | SDL_CreateRenderer (SDL_Window *window, int index, Uint32 flags)
SDL_Renderer * | SDL_CreateSoftwareRenderer (SDL_Surface *surface)
SDL_Renderer * | SDL_GetRenderer (SDL_Window *window)
SDL_Window * | SDL_RenderGetWindow (SDL_Renderer *renderer)
int | SDL_GetRendererInfo (SDL_Renderer *renderer, SDL_RendererInfo *info)
int | SDL_GetRendererOutputSize (SDL_Renderer *renderer, int *w, int *h)
SDL_Texture * | SDL_CreateTexture (SDL_Renderer *renderer, Uint32 format, int access, int w, int h)
SDL_Texture * | SDL_CreateTextureFromSurface (SDL_Renderer *renderer, SDL_Surface *surface)
int | SDL_QueryTexture (SDL_Texture *texture, Uint32 *format, int *access, int *w, int *h)
int | SDL_SetTextureColorMod (SDL_Texture *texture, Uint8 r, Uint8 g, Uint8 b)
int | SDL_GetTextureColorMod (SDL_Texture *texture, Uint8 *r, Uint8 *g, Uint8 *b)
int | SDL_SetTextureAlphaMod (SDL_Texture *texture, Uint8 alpha)
int | SDL_GetTextureAlphaMod (SDL_Texture *texture, Uint8 *alpha)
int | SDL_SetTextureBlendMode (SDL_Texture *texture, SDL_BlendMode blendMode)
int | SDL_GetTextureBlendMode (SDL_Texture *texture, SDL_BlendMode *blendMode)
int | SDL_SetTextureScaleMode (SDL_Texture *texture, SDL_ScaleMode scaleMode)
int | SDL_GetTextureScaleMode (SDL_Texture *texture, SDL_ScaleMode *scaleMode)
int | SDL_SetTextureUserData (SDL_Texture *texture, void *userdata)
void * | SDL_GetTextureUserData (SDL_Texture *texture)
int | SDL_UpdateTexture (SDL_Texture *texture, const SDL_Rect *rect, const void *pixels, int pitch)
int | SDL_UpdateYUVTexture (SDL_Texture *texture, const SDL_Rect *rect, const Uint8 *Yplane, int Ypitch, const Uint8 *Uplane, int Upitch, const Uint8 *Vplane, int Vpitch)
int | SDL_UpdateNVTexture (SDL_Texture *texture, const SDL_Rect *rect, const Uint8 *Yplane, int Ypitch, const Uint8 *UVplane, int UVpitch)
int | SDL_LockTexture (SDL_Texture *texture, const SDL_Rect *rect, void **pixels, int *pitch)
int | SDL_LockTextureToSurface (SDL_Texture *texture, const SDL_Rect *rect, SDL_Surface **surface)
void | SDL_UnlockTexture (SDL_Texture *texture)
SDL_bool | SDL_RenderTargetSupported (SDL_Renderer *renderer)
int | SDL_SetRenderTarget (SDL_Renderer *renderer, SDL_Texture *texture)
SDL_Texture * | SDL_GetRenderTarget (SDL_Renderer *renderer)
int | SDL_RenderSetLogicalSize (SDL_Renderer *renderer, int w, int h)
void | SDL_RenderGetLogicalSize (SDL_Renderer *renderer, int *w, int *h)
int | SDL_RenderSetIntegerScale (SDL_Renderer *renderer, SDL_bool enable)
SDL_bool | SDL_RenderGetIntegerScale (SDL_Renderer *renderer)
int | SDL_RenderSetViewport (SDL_Renderer *renderer, const SDL_Rect *rect)
void | SDL_RenderGetViewport (SDL_Renderer *renderer, SDL_Rect *rect)
int | SDL_RenderSetClipRect (SDL_Renderer *renderer, const SDL_Rect *rect)
void | SDL_RenderGetClipRect (SDL_Renderer *renderer, SDL_Rect *rect)
SDL_bool | SDL_RenderIsClipEnabled (SDL_Renderer *renderer)
int | SDL_RenderSetScale (SDL_Renderer *renderer, float scaleX, float scaleY)
void | SDL_RenderGetScale (SDL_Renderer *renderer, float *scaleX, float *scaleY)
void | SDL_RenderWindowToLogical (SDL_Renderer *renderer, int windowX, int windowY, float *logicalX, float *logicalY)
void | SDL_RenderLogicalToWindow (SDL_Renderer *renderer, float logicalX, float logicalY, int *windowX, int *windowY)
int | SDL_SetRenderDrawColor (SDL_Renderer *renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a)
int | SDL_GetRenderDrawColor (SDL_Renderer *renderer, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a)
int | SDL_SetRenderDrawBlendMode (SDL_Renderer *renderer, SDL_BlendMode blendMode)
int | SDL_GetRenderDrawBlendMode (SDL_Renderer *renderer, SDL_BlendMode *blendMode)
int | SDL_RenderClear (SDL_Renderer *renderer)
int | SDL_RenderDrawPoint (SDL_Renderer *renderer, int x, int y)
int | SDL_RenderDrawPoints (SDL_Renderer *renderer, const SDL_Point *points, int count)
int | SDL_RenderDrawLine (SDL_Renderer *renderer, int x1, int y1, int x2, int y2)
int | SDL_RenderDrawLines (SDL_Renderer *renderer, const SDL_Point *points, int count)
int | SDL_RenderDrawRect (SDL_Renderer *renderer, const SDL_Rect *rect)
int | SDL_RenderDrawRects (SDL_Renderer *renderer, const SDL_Rect *rects, int count)
int | SDL_RenderFillRect (SDL_Renderer *renderer, const SDL_Rect *rect)
int | SDL_RenderFillRects (SDL_Renderer *renderer, const SDL_Rect *rects, int count)
int | SDL_RenderCopy (SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_Rect *dstrect)
int | SDL_RenderCopyEx (SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_Rect *dstrect, const double angle, const SDL_Point *center, const SDL_RendererFlip flip)
int | SDL_RenderDrawPointF (SDL_Renderer *renderer, float x, float y)
int | SDL_RenderDrawPointsF (SDL_Renderer *renderer, const SDL_FPoint *points, int count)
int | SDL_RenderDrawLineF (SDL_Renderer *renderer, float x1, float y1, float x2, float y2)
int | SDL_RenderDrawLinesF (SDL_Renderer *renderer, const SDL_FPoint *points, int count)
int | SDL_RenderDrawRectF (SDL_Renderer *renderer, const SDL_FRect *rect)
int | SDL_RenderDrawRectsF (SDL_Renderer *renderer, const SDL_FRect *rects, int count)
int | SDL_RenderFillRectF (SDL_Renderer *renderer, const SDL_FRect *rect)
int | SDL_RenderFillRectsF (SDL_Renderer *renderer, const SDL_FRect *rects, int count)
int | SDL_RenderCopyF (SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_FRect *dstrect)
int | SDL_RenderCopyExF (SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip)
int | SDL_RenderGeometry (SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Vertex *vertices, int num_vertices, const int *indices, int num_indices)
int | SDL_RenderGeometryRaw (SDL_Renderer *renderer, SDL_Texture *texture, const float *xy, int xy_stride, const SDL_Color *color, int color_stride, const float *uv, int uv_stride, int num_vertices, const void *indices, int num_indices, int size_indices)
int | SDL_RenderReadPixels (SDL_Renderer *renderer, const SDL_Rect *rect, Uint32 format, void *pixels, int pitch)
void | SDL_RenderPresent (SDL_Renderer *renderer)
void | SDL_DestroyTexture (SDL_Texture *texture)
void | SDL_DestroyRenderer (SDL_Renderer *renderer)
int | SDL_RenderFlush (SDL_Renderer *renderer)
int | SDL_GL_BindTexture (SDL_Texture *texture, float *texw, float *texh)
int | SDL_GL_UnbindTexture (SDL_Texture *texture)
void * | SDL_RenderGetMetalLayer (SDL_Renderer *renderer)
void * | SDL_RenderGetMetalCommandEncoder (SDL_Renderer *renderer)
int | SDL_RenderSetVSync (SDL_Renderer *renderer, int vsync)

## Typedef Documentation

## SDL_Renderer

typedef struct SDL_Renderer SDL_Renderer

Definition at line 143 of file SDL_render.h.

## SDL_Texture

typedef struct SDL_Texture SDL_Texture

Definition at line 149 of file SDL_render.h.

## Enumeration Type Documentation

## SDL_RendererFlags

enum SDL_RendererFlags

# CategoryRender

Header file for SDL 2D rendering functions.

This API supports the following features:

- single pixel points
- single pixel lines
- filled rectangles
- texture images

The primitives may be drawn in opaque, blended, or additive modes.

The texture images may be drawn in opaque, blended, or additive modes. They can have an additional color tint or alpha modulation applied to them, and may also be stretched with linear interpolation.

This API is designed to accelerate simple 2D operations. You may want more functionality such as polygons and particle effects and in that case you should use SDL's OpenGL/Direct3D support or one of the many good 3D engines.

These functions must be called from the main thread. See this bug for details: https://github.com/libsdl-org/SDL/issues/986 Flags used when creating a rendering context

Enumerator
SDL_RENDERER_SOFTWARE | The renderer is a software fallback
SDL_RENDERER_ACCELERATED | The renderer uses hardware acceleration
SDL_RENDERER_PRESENTVSYNC | Present is synchronized with the refresh rate
SDL_RENDERER_TARGETTEXTURE | The renderer supports rendering to texture

Definition at line 65 of file SDL_render.h.

{
SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */
SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware
acceleration */
SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized
with the refresh rate */
SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports
rendering to texture */
} SDL_RendererFlags;
SDL_RendererFlags
SDL_RendererFlags
Definition SDL_render.h:66
SDL_RENDERER_SOFTWARE
@ SDL_RENDERER_SOFTWARE
Definition SDL_render.h:67
SDL_RENDERER_ACCELERATED
@ SDL_RENDERER_ACCELERATED
Definition SDL_render.h:68
SDL_RENDERER_PRESENTVSYNC
@ SDL_RENDERER_PRESENTVSYNC
Definition SDL_render.h:70
SDL_RENDERER_TARGETTEXTURE
@ SDL_RENDERER_TARGETTEXTURE
Definition SDL_render.h:72

## SDL_RendererFlip

enum SDL_RendererFlip

Flip constants for SDL_RenderCopyEx

Enumerator
SDL_FLIP_NONE | Do not flip
SDL_FLIP_HORIZONTAL | flip horizontally
SDL_FLIP_VERTICAL | flip vertically

Definition at line 132 of file SDL_render.h.

{
SDL_FLIP_NONE = 0x00000000, /**< Do not flip */
SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */
SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */
} SDL_RendererFlip;
SDL_RendererFlip
SDL_RendererFlip
Definition SDL_render.h:133
SDL_FLIP_VERTICAL
@ SDL_FLIP_VERTICAL
Definition SDL_render.h:136
SDL_FLIP_NONE
@ SDL_FLIP_NONE
Definition SDL_render.h:134
SDL_FLIP_HORIZONTAL
@ SDL_FLIP_HORIZONTAL
Definition SDL_render.h:135

## SDL_ScaleMode

enum SDL_ScaleMode

The scaling mode for a texture.

Enumerator
SDL_ScaleModeNearest | nearest pixel sampling
SDL_ScaleModeLinear | linear filtering
SDL_ScaleModeBest | anisotropic filtering

Definition at line 102 of file SDL_render.h.

{
SDL_ScaleModeNearest, /**< nearest pixel sampling */
SDL_ScaleModeLinear, /**< linear filtering */
SDL_ScaleModeBest /**< anisotropic filtering */
} SDL_ScaleMode;
SDL_ScaleMode
SDL_ScaleMode
Definition SDL_render.h:103
SDL_ScaleModeLinear
@ SDL_ScaleModeLinear
Definition SDL_render.h:105
SDL_ScaleModeBest
@ SDL_ScaleModeBest
Definition SDL_render.h:106
SDL_ScaleModeNearest
@ SDL_ScaleModeNearest
Definition SDL_render.h:104

## SDL_TextureAccess

enum SDL_TextureAccess

The access pattern allowed for a texture.

Enumerator
SDL_TEXTUREACCESS_STATIC | Changes rarely, not lockable
SDL_TEXTUREACCESS_STREAMING | Changes frequently, lockable
SDL_TEXTUREACCESS_TARGET | Texture can be used as a render target

Definition at line 112 of file SDL_render.h.

{
SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */
SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */
} SDL_TextureAccess;
SDL_TextureAccess
SDL_TextureAccess
Definition SDL_render.h:113
SDL_TEXTUREACCESS_STATIC
@ SDL_TEXTUREACCESS_STATIC
Definition SDL_render.h:114
SDL_TEXTUREACCESS_STREAMING
@ SDL_TEXTUREACCESS_STREAMING
Definition SDL_render.h:115
SDL_TEXTUREACCESS_TARGET
@ SDL_TEXTUREACCESS_TARGET
Definition SDL_render.h:116

## SDL_TextureModulate

enum SDL_TextureModulate

The texture channel modulation used in SDL_RenderCopy().

Enumerator
SDL_TEXTUREMODULATE_NONE | No modulation
SDL_TEXTUREMODULATE_COLOR | srcC = srcC * color
SDL_TEXTUREMODULATE_ALPHA | srcA = srcA * alpha

Definition at line 122 of file SDL_render.h.

{
SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */
SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */
SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */
} SDL_TextureModulate;
SDL_TextureModulate
SDL_TextureModulate
Definition SDL_render.h:123
SDL_TEXTUREMODULATE_NONE
@ SDL_TEXTUREMODULATE_NONE
Definition SDL_render.h:124
SDL_TEXTUREMODULATE_ALPHA
@ SDL_TEXTUREMODULATE_ALPHA
Definition SDL_render.h:126
SDL_TEXTUREMODULATE_COLOR
@ SDL_TEXTUREMODULATE_COLOR
Definition SDL_render.h:125

## Function Documentation

## SDL_CreateRenderer()

SDL_Renderer * SDL_CreateRenderer | ( | SDL_Window * | window,
|  | int | index,
|  | Uint32 | flags )

extern

Create a 2D rendering context for a window.

Parameters

  window | the window where rendering is displayed.
  index | the index of the rendering driver to initialize, or -1 to initialize the first one supporting the requested flags.
  flags | 0, or one or more SDL_RendererFlags OR'd together.

Returns
  a valid rendering context or NULL if there was an error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateSoftwareRenderer
  SDL_DestroyRenderer
  SDL_GetNumRenderDrivers
  SDL_GetRendererInfo

## SDL_CreateSoftwareRenderer()

SDL_Renderer * SDL_CreateSoftwareRenderer | ( | SDL_Surface * | surface | ) |

extern

Create a 2D software rendering context for a surface.

Two other API which can be used to create SDL_Renderer: SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can also create a software renderer, but they are intended to be used with an SDL_Window as the final destination and not an SDL_Surface.

Parameters

  surface | the SDL_Surface structure representing the surface where rendering is done.

Returns
  a valid rendering context or NULL if there was an error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer
  SDL_CreateWindowAndRenderer
  SDL_DestroyRenderer

## SDL_CreateTexture()

SDL_Texture * SDL_CreateTexture | ( | SDL_Renderer * | renderer,
|  | Uint32 | format,
|  | int | access,
|  | int | w,
|  | int | h )

extern

Create a texture for a rendering context.

You can set the texture scaling method by setting SDL_HINT_RENDER_SCALE_QUALITY before creating the texture.

Parameters

  renderer | the rendering context.
  format | one of the enumerated values in SDL_PixelFormatEnum.
  access | one of the enumerated values in SDL_TextureAccess.
  w | the width of the texture in pixels.
  h | the height of the texture in pixels.

Returns
  a pointer to the created texture or NULL if no rendering context was active, the format was unsupported, or the width or height were out of range; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateTextureFromSurface
  SDL_DestroyTexture
  SDL_QueryTexture
  SDL_UpdateTexture

## SDL_CreateTextureFromSurface()

SDL_Texture * SDL_CreateTextureFromSurface | ( | SDL_Renderer * | renderer,
|  | SDL_Surface * | surface )

extern

Create a texture from an existing surface.

The surface is not modified or freed by this function.

The SDL_TextureAccess hint for the created texture is SDL_TEXTUREACCESS_STATIC.

The pixel format of the created texture may be different from the pixel format of the surface. Use SDL_QueryTexture() to query the pixel format of the texture.

Parameters

  renderer | the rendering context.
  surface | the SDL_Surface structure containing pixel data used to fill the texture.

Returns
  the created texture or NULL on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateTexture
  SDL_DestroyTexture
  SDL_QueryTexture

## SDL_CreateWindowAndRenderer()

int SDL_CreateWindowAndRenderer | ( | int | width,
|  | int | height,
|  | Uint32 | window_flags,
|  | SDL_Window ** | window,
|  | SDL_Renderer ** | renderer )

extern

Create a window and default renderer.

Parameters

  width | the width of the window.
  height | the height of the window.
  window_flags | the flags used to create the window (see SDL_CreateWindow()).
  window | a pointer filled with the window, or NULL on error.
  renderer | a pointer filled with the renderer, or NULL on error.

Returns
  0 on success, or -1 on error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer
  SDL_CreateWindow

## SDL_DestroyRenderer()

void SDL_DestroyRenderer | ( | SDL_Renderer * | renderer | ) |

extern

Destroy the rendering context for a window and free associated textures.

If renderer is NULL, this function will return immediately after setting the SDL error message to "Invalid renderer". See SDL_GetError().

Parameters

  renderer | the rendering context.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer

## SDL_DestroyTexture()

void SDL_DestroyTexture | ( | SDL_Texture * | texture | ) |

extern

Destroy the specified texture.

Passing NULL or an otherwise invalid texture will set the SDL error message to "Invalid texture".

Parameters

  texture | the texture to destroy.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateTexture
  SDL_CreateTextureFromSurface

## SDL_GetNumRenderDrivers()

int SDL_GetNumRenderDrivers | ( | void |  | ) |

extern

Get the number of 2D rendering drivers available for the current display.

A render driver is a set of code that handles rendering and texture management on a particular display. Normally there is only one, but some drivers may have several available with different capabilities.

There may be none if SDL was compiled without render support.

Returns
  a number >= 0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer
  SDL_GetRenderDriverInfo

## SDL_GetRenderDrawBlendMode()

int SDL_GetRenderDrawBlendMode | ( | SDL_Renderer * | renderer,
|  | SDL_BlendMode * | blendMode )

extern

Get the blend mode used for drawing operations.

Parameters

  renderer | the rendering context.
  blendMode | a pointer filled in with the current SDL_BlendMode.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_SetRenderDrawBlendMode

## SDL_GetRenderDrawColor()

int SDL_GetRenderDrawColor | ( | SDL_Renderer * | renderer,
|  | Uint8 * | r,
|  | Uint8 * | g,
|  | Uint8 * | b,
|  | Uint8 * | a )

extern

Get the color used for drawing operations (Rect, Line and Clear).

Parameters

  renderer | the rendering context.
  r | a pointer filled in with the red value used to draw on the rendering target.
  g | a pointer filled in with the green value used to draw on the rendering target.
  b | a pointer filled in with the blue value used to draw on the rendering target.
  a | a pointer filled in with the alpha value used to draw on the rendering target; usually SDL_ALPHA_OPAQUE (255).

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_SetRenderDrawColor

## SDL_GetRenderDriverInfo()

int SDL_GetRenderDriverInfo | ( | int | index,
|  | SDL_RendererInfo * | info )

extern

Get info about a specific 2D rendering driver for the current display.

Parameters

  index | the index of the driver to query information about.
  info | an SDL_RendererInfo structure to be filled with information on the rendering driver.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer
  SDL_GetNumRenderDrivers

## SDL_GetRenderer()

SDL_Renderer * SDL_GetRenderer | ( | SDL_Window * | window | ) |

extern

Get the renderer associated with a window.

Parameters

  window | the window to query.

Returns
  the rendering context on success or NULL on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer

## SDL_GetRendererInfo()

int SDL_GetRendererInfo | ( | SDL_Renderer * | renderer,
|  | SDL_RendererInfo * | info )

extern

Get information about a rendering context.

Parameters

  renderer | the rendering context.
  info | an SDL_RendererInfo structure filled with information about the current renderer.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer

## SDL_GetRendererOutputSize()

int SDL_GetRendererOutputSize | ( | SDL_Renderer * | renderer,
|  | int * | w,
|  | int * | h )

extern

Get the output size in pixels of a rendering context.

Due to high-dpi displays, you might end up with a rendering context that has more pixels than the window that contains it, so use this instead of SDL_GetWindowSize() to decide how much drawing area you have.

Parameters

  renderer | the rendering context.
  w | an int filled with the width.
  h | an int filled with the height.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetRenderer

## SDL_GetRenderTarget()

SDL_Texture * SDL_GetRenderTarget | ( | SDL_Renderer * | renderer | ) |

extern

Get the current render target.

The default render target is the window for which the renderer was created, and is reported as NULL here.

Parameters

  renderer | the rendering context.

Returns
  the current render target or NULL for the default render target.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_SetRenderTarget

## SDL_GetTextureAlphaMod()

int SDL_GetTextureAlphaMod | ( | SDL_Texture * | texture,
|  | Uint8 * | alpha )

extern

Get the additional alpha value multiplied into render copy operations.

Parameters

  texture | the texture to query.
  alpha | a pointer filled in with the current alpha value.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetTextureColorMod
  SDL_SetTextureAlphaMod

## SDL_GetTextureBlendMode()

int SDL_GetTextureBlendMode | ( | SDL_Texture * | texture,
|  | SDL_BlendMode * | blendMode )

extern

Get the blend mode used for texture copy operations.

Parameters

  texture | the texture to query.
  blendMode | a pointer filled in with the current SDL_BlendMode.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_SetTextureBlendMode

## SDL_GetTextureColorMod()

int SDL_GetTextureColorMod | ( | SDL_Texture * | texture,
|  | Uint8 * | r,
|  | Uint8 * | g,
|  | Uint8 * | b )

extern

Get the additional color value multiplied into render copy operations.

Parameters

  texture | the texture to query.
  r | a pointer filled in with the current red color value.
  g | a pointer filled in with the current green color value.
  b | a pointer filled in with the current blue color value.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetTextureAlphaMod
  SDL_SetTextureColorMod

## SDL_GetTextureScaleMode()

int SDL_GetTextureScaleMode | ( | SDL_Texture * | texture,
|  | SDL_ScaleMode * | scaleMode )

extern

Get the scale mode used for texture scale operations.

Parameters

  texture | the texture to query.
  scaleMode | a pointer filled in with the current scale mode.

Returns
  0 on success, or -1 if the texture is not valid.

Since
  This function is available since SDL 2.0.12.

See also
  SDL_SetTextureScaleMode

## SDL_GetTextureUserData()

void * SDL_GetTextureUserData | ( | SDL_Texture * | texture | ) |

extern

Get the user-specified pointer associated with a texture

Parameters

  texture | the texture to query.

Returns
  the pointer associated with the texture, or NULL if the texture is not valid.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_SetTextureUserData

## SDL_GL_BindTexture()

int SDL_GL_BindTexture | ( | SDL_Texture * | texture,
|  | float * | texw,
|  | float * | texh )

extern

Bind an OpenGL/ES/ES2 texture to the current context.

This is for use with OpenGL instructions when rendering OpenGL primitives directly.

If not NULL, texw and texh will be filled with the width and height values suitable for the provided texture. In most cases, both will be 1.0, however, on systems that support the GL_ARB_texture_rectangle extension, these values will actually be the pixel width and height used to create the texture, so this factor needs to be taken into account when providing texture coordinates to OpenGL.

You need a renderer to create an SDL_Texture, therefore you can only use this function with an implicit OpenGL context from SDL_CreateRenderer(), not with your own OpenGL context. If you need control over your OpenGL context, you need to write your own texture-loading methods.

Also note that SDL may upload RGB textures as BGR (or vice-versa), and re-order the color channels in the shaders phase, so the uploaded texture may have swapped color channels.

Parameters

  texture | the texture to bind to the current OpenGL/ES/ES2 context.
  texw | a pointer to a float value which will be filled with the texture width or NULL if you don't need that value.
  texh | a pointer to a float value which will be filled with the texture height or NULL if you don't need that value.

Returns
  0 on success, or -1 if the operation is not supported; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GL_MakeCurrent
  SDL_GL_UnbindTexture

## SDL_GL_UnbindTexture()

int SDL_GL_UnbindTexture | ( | SDL_Texture * | texture | ) |

extern

Unbind an OpenGL/ES/ES2 texture from the current context.

See SDL_GL_BindTexture() for examples on how to use these functions

Parameters

  texture | the texture to unbind from the current OpenGL/ES/ES2 context.

Returns
  0 on success, or -1 if the operation is not supported.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GL_BindTexture
  SDL_GL_MakeCurrent

## SDL_LockTexture()

int SDL_LockTexture | ( | SDL_Texture * | texture,
|  | const SDL_Rect * | rect,
|  | void ** | pixels,
|  | int * | pitch )

extern

Lock a portion of the texture for write-only pixel access.

As an optimization, the pixels made available for editing don't necessarily contain the old texture data. This is a write-only operation, and if you need to keep a copy of the texture data you should do that at the application level.

You must use SDL_UnlockTexture() to unlock the pixels and apply any changes.

Parameters

  texture | the texture to lock for access, which was created with SDL_TEXTUREACCESS_STREAMING.
  rect | an SDL_Rect structure representing the area to lock for access; NULL to lock the entire texture.
  pixels | this is filled in with a pointer to the locked pixels, appropriately offset by the locked area.
  pitch | this is filled in with the pitch of the locked pixels; the pitch is the length of one row in bytes.

Returns
  0 on success or a negative error code if the texture is not valid or was not created with SDL_TEXTUREACCESS_STREAMING; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_UnlockTexture

## SDL_LockTextureToSurface()

int SDL_LockTextureToSurface | ( | SDL_Texture * | texture,
|  | const SDL_Rect * | rect,
|  | SDL_Surface ** | surface )

extern

Lock a portion of the texture for write-only pixel access, and expose it as a SDL surface.

Besides providing an SDL_Surface instead of raw pixel data, this function operates like SDL_LockTexture.

As an optimization, the pixels made available for editing don't necessarily contain the old texture data. This is a write-only operation, and if you need to keep a copy of the texture data you should do that at the application level.

You must use SDL_UnlockTexture() to unlock the pixels and apply any changes.

The returned surface is freed internally after calling SDL_UnlockTexture() or SDL_DestroyTexture(). The caller should not free it.

Parameters

  texture | the texture to lock for access, which was created with SDL_TEXTUREACCESS_STREAMING.
  rect | a pointer to the rectangle to lock for access. If the rect is NULL, the entire texture will be locked.
  surface | this is filled in with an SDL surface representing the locked area.

Returns
  0 on success, or -1 if the texture is not valid or was not created with SDL_TEXTUREACCESS_STREAMING.

Since
  This function is available since SDL 2.0.12.

See also
  SDL_LockTexture
  SDL_UnlockTexture

## SDL_QueryTexture()

int SDL_QueryTexture | ( | SDL_Texture * | texture,
|  | Uint32 * | format,
|  | int * | access,
|  | int * | w,
|  | int * | h )

extern

Query the attributes of a texture.

Parameters

  texture | the texture to query.
  format | a pointer filled in with the raw format of the texture; the actual format may differ, but pixel transfers will use this format (one of the SDL_PixelFormatEnum values). This argument can be NULL if you don't need this information.
  access | a pointer filled in with the actual access to the texture (one of the SDL_TextureAccess values). This argument can be NULL if you don't need this information.
  w | a pointer filled in with the width of the texture in pixels. This argument can be NULL if you don't need this information.
  h | a pointer filled in with the height of the texture in pixels. This argument can be NULL if you don't need this information.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateTexture

## SDL_RenderClear()

int SDL_RenderClear | ( | SDL_Renderer * | renderer | ) |

extern

Clear the current rendering target with the drawing color.

This function clears the entire rendering target, ignoring the viewport and the clip rectangle.

Parameters

  renderer | the rendering context.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_SetRenderDrawColor

## SDL_RenderCopy()

int SDL_RenderCopy | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture,
|  | const SDL_Rect * | srcrect,
|  | const SDL_Rect * | dstrect )

extern

Copy a portion of the texture to the current rendering target.

The texture is blended with the destination based on its blend mode set with SDL_SetTextureBlendMode().

The texture color is affected based on its color modulation set by SDL_SetTextureColorMod().

The texture alpha is affected based on its alpha modulation set by SDL_SetTextureAlphaMod().

Parameters

  renderer | the rendering context.
  texture | the source texture.
  srcrect | the source SDL_Rect structure or NULL for the entire texture.
  dstrect | the destination SDL_Rect structure or NULL for the entire rendering target; the texture will be stretched to fill the given rectangle.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderCopyEx
  SDL_SetTextureAlphaMod
  SDL_SetTextureBlendMode
  SDL_SetTextureColorMod

## SDL_RenderCopyEx()

int SDL_RenderCopyEx | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture,
|  | const SDL_Rect * | srcrect,
|  | const SDL_Rect * | dstrect,
|  | const double | angle,
|  | const SDL_Point * | center,
|  | const SDL_RendererFlip | flip )

extern

Copy a portion of the texture to the current rendering, with optional rotation and flipping.

Copy a portion of the texture to the current rendering target, optionally rotating it by angle around the given center and also flipping it top-bottom and/or left-right.

The texture is blended with the destination based on its blend mode set with SDL_SetTextureBlendMode().

The texture color is affected based on its color modulation set by SDL_SetTextureColorMod().

The texture alpha is affected based on its alpha modulation set by SDL_SetTextureAlphaMod().

Parameters

  renderer | the rendering context.
  texture | the source texture.
  srcrect | the source SDL_Rect structure or NULL for the entire texture.
  dstrect | the destination SDL_Rect structure or NULL for the entire rendering target.
  angle | an angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction.
  center | a pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w / 2, dstrect.h / 2).
  flip | a SDL_RendererFlip value stating which flipping actions should be performed on the texture.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderCopy
  SDL_SetTextureAlphaMod
  SDL_SetTextureBlendMode
  SDL_SetTextureColorMod

## SDL_RenderCopyExF()

int SDL_RenderCopyExF | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture,
|  | const SDL_Rect * | srcrect,
|  | const SDL_FRect * | dstrect,
|  | const double | angle,
|  | const SDL_FPoint * | center,
|  | const SDL_RendererFlip | flip )

extern

Copy a portion of the source texture to the current rendering target, with rotation and flipping, at subpixel precision.

Parameters

  renderer | The renderer which should copy parts of a texture.
  texture | The source texture.
  srcrect | A pointer to the source rectangle, or NULL for the entire texture.
  dstrect | A pointer to the destination rectangle, or NULL for the entire rendering target.
  angle | An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction.
  center | A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
  flip | An SDL_RendererFlip value stating which flipping actions should be performed on the texture.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderCopyF()

int SDL_RenderCopyF | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture,
|  | const SDL_Rect * | srcrect,
|  | const SDL_FRect * | dstrect )

extern

Copy a portion of the texture to the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should copy parts of a texture.
  texture | The source texture.
  srcrect | A pointer to the source rectangle, or NULL for the entire texture.
  dstrect | A pointer to the destination rectangle, or NULL for the entire rendering target.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderDrawLine()

int SDL_RenderDrawLine | ( | SDL_Renderer * | renderer,
|  | int | x1,
|  | int | y1,
|  | int | x2,
|  | int | y2 )

extern

Draw a line on the current rendering target.

SDL_RenderDrawLine() draws the line to include both end points. If you want to draw multiple, connecting lines use SDL_RenderDrawLines() instead.

Parameters

  renderer | the rendering context.
  x1 | the x coordinate of the start point.
  y1 | the y coordinate of the start point.
  x2 | the x coordinate of the end point.
  y2 | the y coordinate of the end point.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderDrawLineF()

int SDL_RenderDrawLineF | ( | SDL_Renderer * | renderer,
|  | float | x1,
|  | float | y1,
|  | float | x2,
|  | float | y2 )

extern

Draw a line on the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should draw a line.
  x1 | The x coordinate of the start point.
  y1 | The y coordinate of the start point.
  x2 | The x coordinate of the end point.
  y2 | The y coordinate of the end point.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderDrawLines()

int SDL_RenderDrawLines | ( | SDL_Renderer * | renderer,
|  | const SDL_Point * | points,
|  | int | count )

extern

Draw a series of connected lines on the current rendering target.

Parameters

  renderer | the rendering context.
  points | an array of SDL_Point structures representing points along the lines.
  count | the number of points, drawing count-1 lines.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderDrawLinesF()

int SDL_RenderDrawLinesF | ( | SDL_Renderer * | renderer,
|  | const SDL_FPoint * | points,
|  | int | count )

extern

Draw a series of connected lines on the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should draw multiple lines.
  points | The points along the lines.
  count | The number of points, drawing count-1 lines.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderDrawPoint()

int SDL_RenderDrawPoint | ( | SDL_Renderer * | renderer,
|  | int | x,
|  | int | y )

extern

Draw a point on the current rendering target.

SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, use SDL_RenderDrawPoints() instead.

Parameters

  renderer | the rendering context.
  x | the x coordinate of the point.
  y | the y coordinate of the point.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderDrawPointF()

int SDL_RenderDrawPointF | ( | SDL_Renderer * | renderer,
|  | float | x,
|  | float | y )

extern

Draw a point on the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should draw a point.
  x | The x coordinate of the point.
  y | The y coordinate of the point.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderDrawPoints()

int SDL_RenderDrawPoints | ( | SDL_Renderer * | renderer,
|  | const SDL_Point * | points,
|  | int | count )

extern

Draw multiple points on the current rendering target.

Parameters

  renderer | the rendering context.
  points | an array of SDL_Point structures that represent the points to draw.
  count | the number of points to draw.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderDrawPointsF()

int SDL_RenderDrawPointsF | ( | SDL_Renderer * | renderer,
|  | const SDL_FPoint * | points,
|  | int | count )

extern

Draw multiple points on the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should draw multiple points.
  points | The points to draw.
  count | The number of points to draw.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderDrawRect()

int SDL_RenderDrawRect | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rect )

extern

Draw a rectangle on the current rendering target.

Parameters

  renderer | the rendering context.
  rect | an SDL_Rect structure representing the rectangle to draw, or NULL to outline the entire rendering target.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderDrawRectF()

int SDL_RenderDrawRectF | ( | SDL_Renderer * | renderer,
|  | const SDL_FRect * | rect )

extern

Draw a rectangle on the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should draw a rectangle.
  rect | A pointer to the destination rectangle, or NULL to outline the entire rendering target.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderDrawRects()

int SDL_RenderDrawRects | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rects,
|  | int | count )

extern

Draw some number of rectangles on the current rendering target.

Parameters

  renderer | the rendering context.
  rects | an array of SDL_Rect structures representing the rectangles to be drawn.
  count | the number of rectangles.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderDrawRectsF()

int SDL_RenderDrawRectsF | ( | SDL_Renderer * | renderer,
|  | const SDL_FRect * | rects,
|  | int | count )

extern

Draw some number of rectangles on the current rendering target at subpixel precision.

Parameters

  renderer | The renderer which should draw multiple rectangles.
  rects | A pointer to an array of destination rectangles.
  count | The number of rectangles.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderFillRect()

int SDL_RenderFillRect | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rect )

extern

Fill a rectangle on the current rendering target with the drawing color.

The current drawing color is set by SDL_SetRenderDrawColor(), and the color's alpha value is ignored unless blending is enabled with the appropriate call to SDL_SetRenderDrawBlendMode().

Parameters

  renderer | the rendering context.
  rect | the SDL_Rect structure representing the rectangle to fill, or NULL for the entire rendering target.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRects
  SDL_RenderPresent
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderFillRectF()

int SDL_RenderFillRectF | ( | SDL_Renderer * | renderer,
|  | const SDL_FRect * | rect )

extern

Fill a rectangle on the current rendering target with the drawing color at subpixel precision.

Parameters

  renderer | The renderer which should fill a rectangle.
  rect | A pointer to the destination rectangle, or NULL for the entire rendering target.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderFillRects()

int SDL_RenderFillRects | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rects,
|  | int | count )

extern

Fill some number of rectangles on the current rendering target with the drawing color.

Parameters

  renderer | the rendering context.
  rects | an array of SDL_Rect structures representing the rectangles to be filled.
  count | the number of rectangles.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderPresent

## SDL_RenderFillRectsF()

int SDL_RenderFillRectsF | ( | SDL_Renderer * | renderer,
|  | const SDL_FRect * | rects,
|  | int | count )

extern

Fill some number of rectangles on the current rendering target with the drawing color at subpixel precision.

Parameters

  renderer | The renderer which should fill multiple rectangles.
  rects | A pointer to an array of destination rectangles.
  count | The number of rectangles.

Returns
  0 on success, or -1 on error.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderFlush()

int SDL_RenderFlush | ( | SDL_Renderer * | renderer | ) |

extern

Force the rendering context to flush any pending commands to the underlying rendering API.

You do not need to (and in fact, shouldn't) call this function unless you are planning to call into OpenGL/Direct3D/Metal/whatever directly in addition to using an SDL_Renderer.

This is for a very-specific case: if you are using SDL's render API, you asked for a specific renderer backend (OpenGL, Direct3D, etc), you set SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever calls in addition to SDL render API calls. If all of this applies, you should call SDL_RenderFlush() between calls to SDL's render API and the low-level API you're using in cooperation.

In all other cases, you can ignore this function. This is only here to get maximum performance out of a specific situation. In all other cases, SDL will do the right thing, perhaps at a performance loss.

This function is first available in SDL 2.0.10, and is not needed in 2.0.9 and earlier, as earlier versions did not queue rendering commands at all, instead flushing them to the OS immediately.

Parameters

  renderer | the rendering context.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.10.

## SDL_RenderGeometry()

int SDL_RenderGeometry | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture,
|  | const SDL_Vertex * | vertices,
|  | int | num_vertices,
|  | const int * | indices,
|  | int | num_indices )

extern

Render a list of triangles, optionally using a texture and indices into the vertex array Color and alpha modulation is done per vertex (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).

Parameters

  renderer | The rendering context.
  texture | (optional) The SDL texture to use.
  vertices | Vertices.
  num_vertices | Number of vertices.
  indices | (optional) An array of integer indices into the 'vertices' array, if NULL all vertices will be rendered in sequential order.
  num_indices | Number of indices.

Returns
  0 on success, or -1 if the operation is not supported.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_RenderGeometryRaw
  SDL_Vertex

## SDL_RenderGeometryRaw()

int SDL_RenderGeometryRaw | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture,
|  | const float * | xy,
|  | int | xy_stride,
|  | const SDL_Color * | color,
|  | int | color_stride,
|  | const float * | uv,
|  | int | uv_stride,
|  | int | num_vertices,
|  | const void * | indices,
|  | int | num_indices,
|  | int | size_indices )

extern

Render a list of triangles, optionally using a texture and indices into the vertex arrays Color and alpha modulation is done per vertex (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).

Parameters

  renderer | The rendering context.
  texture | (optional) The SDL texture to use.
  xy | Vertex positions.
  xy_stride | Byte size to move from one element to the next element.
  color | Vertex colors (as SDL_Color).
  color_stride | Byte size to move from one element to the next element.
  uv | Vertex normalized texture coordinates.
  uv_stride | Byte size to move from one element to the next element.
  num_vertices | Number of vertices.
  indices | (optional) An array of indices into the 'vertices' arrays, if NULL all vertices will be rendered in sequential order.
  num_indices | Number of indices.
  size_indices | Index size: 1 (byte), 2 (short), 4 (int).

Returns
  0 on success, or -1 if the operation is not supported.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_RenderGeometry
  SDL_Vertex

## SDL_RenderGetClipRect()

void SDL_RenderGetClipRect | ( | SDL_Renderer * | renderer,
|  | SDL_Rect * | rect )

extern

Get the clip rectangle for the current target.

Parameters

  renderer | the rendering context from which clip rectangle should be queried.
  rect | an SDL_Rect structure filled in with the current clipping area or an empty rectangle if clipping is disabled.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderIsClipEnabled
  SDL_RenderSetClipRect

## SDL_RenderGetIntegerScale()

SDL_bool SDL_RenderGetIntegerScale | ( | SDL_Renderer * | renderer | ) |

extern

Get whether integer scales are forced for resolution-independent rendering.

Parameters

  renderer | the renderer from which integer scaling should be queried.

Returns
  SDL_TRUE if integer scales are forced or SDL_FALSE if not and on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.5.

See also
  SDL_RenderSetIntegerScale

## SDL_RenderGetLogicalSize()

void SDL_RenderGetLogicalSize | ( | SDL_Renderer * | renderer,
|  | int * | w,
|  | int * | h )

extern

Get device independent resolution for rendering.

When using the main rendering target (eg no target texture is set): this may return 0 for w and h if the SDL_Renderer has never had its logical size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical width and height.

When using a target texture: Never return 0 for w and h at first. Then it returns the logical width and height that are set.

Parameters

  renderer | a rendering context.
  w | an int to be filled with the width.
  h | an int to be filled with the height.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderSetLogicalSize

## SDL_RenderGetMetalCommandEncoder()

void * SDL_RenderGetMetalCommandEncoder | ( | SDL_Renderer * | renderer | ) |

extern

Get the Metal command encoder for the current frame

This function returns void *, so SDL doesn't have to include Metal's headers, but it can be safely cast to an id<MTLRenderCommandEncoder>.

Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give SDL a drawable to render to, which might happen if the window is hidden/minimized/offscreen. This doesn't apply to command encoders for render targets, just the window's backbuffer. Check your return values!

Parameters

  renderer | The renderer to query.

Returns
  an id<MTLRenderCommandEncoder> on success, or NULL if the renderer isn't a Metal renderer or there was an error.

Since
  This function is available since SDL 2.0.8.

See also
  SDL_RenderGetMetalLayer

## SDL_RenderGetMetalLayer()

void * SDL_RenderGetMetalLayer | ( | SDL_Renderer * | renderer | ) |

extern

Get the CAMetalLayer associated with the given Metal renderer.

This function returns void *, so SDL doesn't have to include Metal's headers, but it can be safely cast to a CAMetalLayer *.

Parameters

  renderer | The renderer to query.

Returns
  a CAMetalLayer * on success, or NULL if the renderer isn't a Metal renderer.

Since
  This function is available since SDL 2.0.8.

See also
  SDL_RenderGetMetalCommandEncoder

## SDL_RenderGetScale()

void SDL_RenderGetScale | ( | SDL_Renderer * | renderer,
|  | float * | scaleX,
|  | float * | scaleY )

extern

Get the drawing scale for the current target.

Parameters

  renderer | the renderer from which drawing scale should be queried.
  scaleX | a pointer filled in with the horizontal scaling factor.
  scaleY | a pointer filled in with the vertical scaling factor.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderSetScale

## SDL_RenderGetViewport()

void SDL_RenderGetViewport | ( | SDL_Renderer * | renderer,
|  | SDL_Rect * | rect )

extern

Get the drawing area for the current target.

Parameters

  renderer | the rendering context.
  rect | an SDL_Rect structure filled in with the current drawing area.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderSetViewport

## SDL_RenderGetWindow()

SDL_Window * SDL_RenderGetWindow | ( | SDL_Renderer * | renderer | ) |

extern

Get the window associated with a renderer.

Parameters

  renderer | the renderer to query.

Returns
  the window on success or NULL on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.22.

## SDL_RenderIsClipEnabled()

SDL_bool SDL_RenderIsClipEnabled | ( | SDL_Renderer * | renderer | ) |

extern

Get whether clipping is enabled on the given renderer.

Parameters

  renderer | the renderer from which clip state should be queried.

Returns
  SDL_TRUE if clipping is enabled or SDL_FALSE if not; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.4.

See also
  SDL_RenderGetClipRect
  SDL_RenderSetClipRect

## SDL_RenderLogicalToWindow()

void SDL_RenderLogicalToWindow | ( | SDL_Renderer * | renderer,
|  | float | logicalX,
|  | float | logicalY,
|  | int * | windowX,
|  | int * | windowY )

extern

Get real coordinates of point in window when given logical coordinates of point in renderer.

Logical coordinates will differ from real coordinates when render is scaled and logical renderer size set

Parameters

  renderer | the renderer from which the window coordinates should be calculated.
  logicalX | the logical x coordinate.
  logicalY | the logical y coordinate.
  windowX | the pointer filled with the real X coordinate in the window.
  windowY | the pointer filled with the real Y coordinate in the window.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_RenderGetScale
  SDL_RenderSetScale
  SDL_RenderGetLogicalSize
  SDL_RenderSetLogicalSize

## SDL_RenderPresent()

void SDL_RenderPresent | ( | SDL_Renderer * | renderer | ) |

extern

Update the screen with any rendering performed since the previous call.

SDL's rendering functions operate on a backbuffer; that is, calling a rendering function such as SDL_RenderDrawLine() does not directly put a line on the screen, but rather updates the backbuffer. As such, you compose your entire scene and present the composed backbuffer to the screen as a complete picture.

Therefore, when using SDL's rendering API, one does all drawing intended for the frame, and then calls this function once per frame to present the final drawing to the user.

The backbuffer should be considered invalidated after each present; do not assume that previous contents will exist between frames. You are strongly encouraged to call SDL_RenderClear() to initialize the backbuffer before starting each new frame's drawing, even if you plan to overwrite every pixel.

Parameters

  renderer | the rendering context.

\threadsafety You may only call this function on the main thread. If this happens to work on a background thread on any given platform or backend, it's purely by luck and you should not rely on it to work next time.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateRenderer
  SDL_RenderClear
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects
  SDL_SetRenderDrawBlendMode
  SDL_SetRenderDrawColor

## SDL_RenderReadPixels()

int SDL_RenderReadPixels | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rect,
|  | Uint32 | format,
|  | void * | pixels,
|  | int | pitch )

extern

Read pixels from the current rendering target to an array of pixels.

WARNING: This is a very slow operation, and should not be used frequently. If you're using this on the main rendering target, it should be called after rendering and before SDL_RenderPresent().

pitch specifies the number of bytes between rows in the destination pixels data. This allows you to write to a subrectangle or have padded rows in the destination. Generally, pitch should equal the number of pixels per row in the pixels data times the number of bytes per pixel, but it might contain additional padding (for example, 24bit RGB Windows Bitmap data pads all rows to multiples of 4 bytes).

Parameters

  renderer | the rendering context.
  rect | an SDL_Rect structure representing the area to read, or NULL for the entire render target.
  format | an SDL_PixelFormatEnum value of the desired format of the pixel data, or 0 to use the format of the rendering target.
  pixels | a pointer to the pixel data to copy into.
  pitch | the pitch of the pixels parameter.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

## SDL_RenderSetClipRect()

int SDL_RenderSetClipRect | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rect )

extern

Set the clip rectangle for rendering on the specified target.

Parameters

  renderer | the rendering context for which clip rectangle should be set.
  rect | an SDL_Rect structure representing the clip area, relative to the viewport, or NULL to disable clipping.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderGetClipRect
  SDL_RenderIsClipEnabled

## SDL_RenderSetIntegerScale()

int SDL_RenderSetIntegerScale | ( | SDL_Renderer * | renderer,
|  | SDL_bool | enable )

extern

Set whether to force integer scales for resolution-independent rendering.

This function restricts the logical viewport to integer values - that is, when a resolution is between two multiples of a logical size, the viewport size is rounded down to the lower multiple.

Parameters

  renderer | the renderer for which integer scaling should be set.
  enable | enable or disable the integer scaling for rendering.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.5.

See also
  SDL_RenderGetIntegerScale
  SDL_RenderSetLogicalSize

## SDL_RenderSetLogicalSize()

int SDL_RenderSetLogicalSize | ( | SDL_Renderer * | renderer,
|  | int | w,
|  | int | h )

extern

Set a device independent resolution for rendering.

This function uses the viewport and scaling functionality to allow a fixed logical resolution for rendering, regardless of the actual output resolution. If the actual output resolution doesn't have the same aspect ratio the output rendering will be centered within the output display.

If the output display is a window, mouse and touch events in the window will be filtered and scaled so they seem to arrive within the logical resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether relative motion events are also scaled.

If this function results in scaling or subpixel drawing by the rendering backend, it will be handled using the appropriate quality hints.

Parameters

  renderer | the renderer for which resolution should be set.
  w | the width of the logical resolution.
  h | the height of the logical resolution.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderGetLogicalSize

## SDL_RenderSetScale()

int SDL_RenderSetScale | ( | SDL_Renderer * | renderer,
|  | float | scaleX,
|  | float | scaleY )

extern

Set the drawing scale for rendering on the current target.

The drawing coordinates are scaled by the x/y scaling factors before they are used by the renderer. This allows resolution independent drawing with a single coordinate system.

If this results in scaling or subpixel drawing by the rendering backend, it will be handled using the appropriate quality hints. For best results use integer scaling factors.

Parameters

  renderer | a rendering context.
  scaleX | the horizontal scaling factor.
  scaleY | the vertical scaling factor.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderGetScale
  SDL_RenderSetLogicalSize

## SDL_RenderSetViewport()

int SDL_RenderSetViewport | ( | SDL_Renderer * | renderer,
|  | const SDL_Rect * | rect )

extern

Set the drawing area for rendering on the current target.

When the window is resized, the viewport is reset to fill the entire new window size.

Parameters

  renderer | the rendering context.
  rect | the SDL_Rect structure representing the drawing area, or NULL to set the viewport to the entire target.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_RenderGetViewport

## SDL_RenderSetVSync()

int SDL_RenderSetVSync | ( | SDL_Renderer * | renderer,
|  | int | vsync )

extern

Toggle VSync of the given renderer.

Parameters

  renderer | The renderer to toggle.
  vsync | 1 for on, 0 for off. All other values are reserved.

Returns
  a 0 int on success, or non-zero on failure.

Since
  This function is available since SDL 2.0.18.

## SDL_RenderTargetSupported()

SDL_bool SDL_RenderTargetSupported | ( | SDL_Renderer * | renderer | ) |

extern

Determine whether a renderer supports the use of render targets.

Parameters

  renderer | the renderer that will be checked.

Returns
  SDL_TRUE if supported or SDL_FALSE if not.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_SetRenderTarget

## SDL_RenderWindowToLogical()

void SDL_RenderWindowToLogical | ( | SDL_Renderer * | renderer,
|  | int | windowX,
|  | int | windowY,
|  | float * | logicalX,
|  | float * | logicalY )

extern

Get logical coordinates of point in renderer when given real coordinates of point in window.

Logical coordinates will differ from real coordinates when render is scaled and logical renderer size set

Parameters

  renderer | the renderer from which the logical coordinates should be calculated.
  windowX | the real X coordinate in the window.
  windowY | the real Y coordinate in the window.
  logicalX | the pointer filled with the logical x coordinate.
  logicalY | the pointer filled with the logical y coordinate.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_RenderGetScale
  SDL_RenderSetScale
  SDL_RenderGetLogicalSize
  SDL_RenderSetLogicalSize

## SDL_SetRenderDrawBlendMode()

int SDL_SetRenderDrawBlendMode | ( | SDL_Renderer * | renderer,
|  | SDL_BlendMode | blendMode )

extern

Set the blend mode used for drawing operations (Fill and Line).

If the blend mode is not supported, the closest supported mode is chosen.

Parameters

  renderer | the rendering context.
  blendMode | the SDL_BlendMode to use for blending.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetRenderDrawBlendMode
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects

## SDL_SetRenderDrawColor()

int SDL_SetRenderDrawColor | ( | SDL_Renderer * | renderer,
|  | Uint8 | r,
|  | Uint8 | g,
|  | Uint8 | b,
|  | Uint8 | a )

extern

Set the color used for drawing operations (Rect, Line and Clear).

Set the color for drawing or filling rectangles, lines, and points, and for SDL_RenderClear().

Parameters

  renderer | the rendering context.
  r | the red value used to draw on the rendering target.
  g | the green value used to draw on the rendering target.
  b | the blue value used to draw on the rendering target.
  a | the alpha value used to draw on the rendering target; usually SDL_ALPHA_OPAQUE (255). Use SDL_SetRenderDrawBlendMode to specify how the alpha channel is used.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetRenderDrawColor
  SDL_RenderClear
  SDL_RenderDrawLine
  SDL_RenderDrawLines
  SDL_RenderDrawPoint
  SDL_RenderDrawPoints
  SDL_RenderDrawRect
  SDL_RenderDrawRects
  SDL_RenderFillRect
  SDL_RenderFillRects

## SDL_SetRenderTarget()

int SDL_SetRenderTarget | ( | SDL_Renderer * | renderer,
|  | SDL_Texture * | texture )

extern

Set a texture as the current rendering target.

Before using this function, you should check the SDL_RENDERER_TARGETTEXTURE bit in the flags of SDL_RendererInfo to see if render targets are supported.

The default render target is the window for which the renderer was created. To stop rendering to a texture and render to the window again, call this function with a NULL texture. This will reset the renderer's viewport, clipping rectangle, and scaling settings to the state they were in before setting a non-NULL texture target, losing any changes made in the meantime.

Parameters

  renderer | the rendering context.
  texture | the targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL to render to the window instead of a texture.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetRenderTarget

## SDL_SetTextureAlphaMod()

int SDL_SetTextureAlphaMod | ( | SDL_Texture * | texture,
|  | Uint8 | alpha )

extern

Set an additional alpha value multiplied into render copy operations.

When this texture is rendered, during the copy operation the source alpha value is modulated by this alpha value according to the following formula:

srcA = srcA * (alpha / 255)

Alpha modulation is not always supported by the renderer; it will return -1 if alpha modulation is not supported.

Parameters

  texture | the texture to update.
  alpha | the source alpha value multiplied into copy operations.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetTextureAlphaMod
  SDL_SetTextureColorMod

## SDL_SetTextureBlendMode()

int SDL_SetTextureBlendMode | ( | SDL_Texture * | texture,
|  | SDL_BlendMode | blendMode )

extern

Set the blend mode for a texture, used by SDL_RenderCopy().

If the blend mode is not supported, the closest supported mode is chosen and this function returns -1.

Parameters

  texture | the texture to update.
  blendMode | the SDL_BlendMode to use for texture blending.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetTextureBlendMode
  SDL_RenderCopy

## SDL_SetTextureColorMod()

int SDL_SetTextureColorMod | ( | SDL_Texture * | texture,
|  | Uint8 | r,
|  | Uint8 | g,
|  | Uint8 | b )

extern

Set an additional color value multiplied into render copy operations.

When this texture is rendered, during the copy operation each source color channel is modulated by the appropriate color value according to the following formula:

srcC = srcC * (color / 255)

Color modulation is not always supported by the renderer; it will return -1 if color modulation is not supported.

Parameters

  texture | the texture to update.
  r | the red color value multiplied into copy operations.
  g | the green color value multiplied into copy operations.
  b | the blue color value multiplied into copy operations.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GetTextureColorMod
  SDL_SetTextureAlphaMod

## SDL_SetTextureScaleMode()

int SDL_SetTextureScaleMode | ( | SDL_Texture * | texture,
|  | SDL_ScaleMode | scaleMode )

extern

Set the scale mode used for texture scale operations.

If the scale mode is not supported, the closest supported mode is chosen.

Parameters

  texture | The texture to update.
  scaleMode | the SDL_ScaleMode to use for texture scaling.

Returns
  0 on success, or -1 if the texture is not valid.

Since
  This function is available since SDL 2.0.12.

See also
  SDL_GetTextureScaleMode

## SDL_SetTextureUserData()

int SDL_SetTextureUserData | ( | SDL_Texture * | texture,
|  | void * | userdata )

extern

Associate a user-specified pointer with a texture.

Parameters

  texture | the texture to update.
  userdata | the pointer to associate with the texture.

Returns
  0 on success, or -1 if the texture is not valid.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_GetTextureUserData

## SDL_UnlockTexture()

void SDL_UnlockTexture | ( | SDL_Texture * | texture | ) |

extern

Unlock a texture, uploading the changes to video memory, if needed.

Warning: Please note that SDL_LockTexture() is intended to be write-only; it will not guarantee the previous contents of the texture will be provided. You must fully initialize any area of a texture that you lock before unlocking it, as the pixels might otherwise be uninitialized memory.

Which is to say: locking and immediately unlocking a texture can result in corrupted textures, depending on the renderer in use.

Parameters

  texture | a texture locked by SDL_LockTexture().

Since
  This function is available since SDL 2.0.0.

See also
  SDL_LockTexture

## SDL_UpdateNVTexture()

int SDL_UpdateNVTexture | ( | SDL_Texture * | texture,
|  | const SDL_Rect * | rect,
|  | const Uint8 * | Yplane,
|  | int | Ypitch,
|  | const Uint8 * | UVplane,
|  | int | UVpitch )

extern

Update a rectangle within a planar NV12 or NV21 texture with new pixels.

You can use SDL_UpdateTexture() as long as your pixel data is a contiguous block of NV12/21 planes in the proper order, but this function is available if your pixel data is not contiguous.

Parameters

  texture | the texture to update.
  rect | a pointer to the rectangle of pixels to update, or NULL to update the entire texture.
  Yplane | the raw pixel data for the Y plane.
  Ypitch | the number of bytes between rows of pixel data for the Y plane.
  UVplane | the raw pixel data for the UV plane.
  UVpitch | the number of bytes between rows of pixel data for the UV plane.

Returns
  0 on success, or -1 if the texture is not valid.

Since
  This function is available since SDL 2.0.16.

## SDL_UpdateTexture()

int SDL_UpdateTexture | ( | SDL_Texture * | texture,
|  | const SDL_Rect * | rect,
|  | const void * | pixels,
|  | int | pitch )

extern

Update the given texture rectangle with new pixel data.

The pixel data must be in the pixel format of the texture. Use SDL_QueryTexture() to query the pixel format of the texture.

This is a fairly slow function, intended for use with static textures that do not change often.

If the texture is intended to be updated often, it is preferred to create the texture as streaming and use the locking functions referenced below. While this function will work with streaming textures, for optimization reasons you may not get the pixels back if you lock the texture afterward.

Parameters

  texture | the texture to update.
  rect | an SDL_Rect structure representing the area to update, or NULL to update the entire texture.
  pixels | the raw pixel data in the format of the texture.
  pitch | the number of bytes in a row of pixel data, including padding between lines.

Returns
  0 on success or a negative error code on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_CreateTexture
  SDL_LockTexture
  SDL_UnlockTexture

## SDL_UpdateYUVTexture()

int SDL_UpdateYUVTexture | ( | SDL_Texture * | texture,
|  | const SDL_Rect * | rect,
|  | const Uint8 * | Yplane,
|  | int | Ypitch,
|  | const Uint8 * | Uplane,
|  | int | Upitch,
|  | const Uint8 * | Vplane,
|  | int | Vpitch )

extern

Update a rectangle within a planar YV12 or IYUV texture with new pixel data.

You can use SDL_UpdateTexture() as long as your pixel data is a contiguous block of Y and U/V planes in the proper order, but this function is available if your pixel data is not contiguous.

Parameters

  texture | the texture to update.
  rect | a pointer to the rectangle of pixels to update, or NULL to update the entire texture.
  Yplane | the raw pixel data for the Y plane.
  Ypitch | the number of bytes between rows of pixel data for the Y plane.
  Uplane | the raw pixel data for the U plane.
  Upitch | the number of bytes between rows of pixel data for the U plane.
  Vplane | the raw pixel data for the V plane.
  Vpitch | the number of bytes between rows of pixel data for the V plane.

Returns
  0 on success or -1 if the texture is not valid; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.1.

See also
  SDL_UpdateTexture