2015-06-21 23:33:46 +08:00
/*
Simple DirectMedia Layer
2024-01-02 05:15:26 +08:00
Copyright ( C ) 1997 - 2024 Sam Lantinga < slouken @ libsdl . org >
2015-06-21 23:33:46 +08:00
This software is provided ' as - is ' , without any express or implied
warranty . In no event will the authors be held liable for any damages
arising from the use of this software .
Permission is granted to anyone to use this software for any purpose ,
including commercial applications , and to alter it and redistribute it
freely , subject to the following restrictions :
1. The origin of this software must not be misrepresented ; you must not
claim that you wrote the original software . If you use this software
in a product , an acknowledgment in the product documentation would be
appreciated but is not required .
2. Altered source versions must be plainly marked as such , and must not be
misrepresented as being the original software .
3. This notice may not be removed or altered from any source distribution .
*/
/**
* \ file SDL_render . h
*
2023-11-06 23:26:06 +08:00
* Header file for SDL 2 D rendering functions .
2015-06-21 23:33:46 +08:00
*
* 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 2 D 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 3 D engines .
*
* These functions must be called from the main thread .
2023-09-07 22:44:09 +08:00
* See this bug for details : https : //github.com/libsdl-org/SDL/issues/986
2015-06-21 23:33:46 +08:00
*/
2016-11-21 13:34:54 +08:00
# ifndef SDL_render_h_
# define SDL_render_h_
2015-06-21 23:33:46 +08:00
2022-11-27 12:43:38 +08:00
# include <SDL3/SDL_stdinc.h>
2023-02-14 09:50:29 +08:00
# include <SDL3/SDL_events.h>
2023-10-12 07:59:51 +08:00
# include <SDL3/SDL_properties.h>
2022-11-27 12:43:38 +08:00
# include <SDL3/SDL_rect.h>
# include <SDL3/SDL_video.h>
2015-06-21 23:33:46 +08:00
2022-12-23 00:38:59 +08:00
# include <SDL3/SDL_begin_code.h>
2015-06-21 23:33:46 +08:00
/* Set up for C function definitions, even when using C++ */
# ifdef __cplusplus
extern " C " {
# endif
/**
2021-03-22 02:18:39 +08:00
* Flags used when creating a rendering context
2015-06-21 23:33:46 +08:00
*/
typedef enum
{
SDL_RENDERER_SOFTWARE = 0x00000001 , /**< The renderer is a software fallback */
SDL_RENDERER_ACCELERATED = 0x00000002 , /**< The renderer uses hardware
acceleration */
2023-06-28 12:52:33 +08:00
SDL_RENDERER_PRESENTVSYNC = 0x00000004 /**< Present is synchronized
2015-06-21 23:33:46 +08:00
with the refresh rate */
} SDL_RendererFlags ;
/**
2021-03-22 02:18:39 +08:00
* Information on the capabilities of a render driver or context .
2015-06-21 23:33:46 +08:00
*/
typedef struct SDL_RendererInfo
{
const char * name ; /**< The name of the renderer */
Uint32 flags ; /**< Supported ::SDL_RendererFlags */
Uint32 num_texture_formats ; /**< The number of available texture formats */
Uint32 texture_formats [ 16 ] ; /**< The available texture formats */
int max_texture_width ; /**< The maximum texture width */
int max_texture_height ; /**< The maximum texture height */
} SDL_RendererInfo ;
2021-04-01 15:55:00 +08:00
/**
2021-08-19 05:54:37 +08:00
* Vertex structure
2021-04-01 15:55:00 +08:00
*/
typedef struct SDL_Vertex
{
SDL_FPoint position ; /**< Vertex position, in SDL_Renderer coordinates */
2024-01-30 05:28:33 +08:00
SDL_FColor color ; /**< Vertex color */
2021-04-01 15:55:00 +08:00
SDL_FPoint tex_coord ; /**< Normalized texture coordinates, if needed */
} SDL_Vertex ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* The access pattern allowed for a texture .
2015-06-21 23:33:46 +08:00
*/
typedef enum
{
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 ;
2023-02-04 04:25:46 +08:00
/**
* How the logical size is mapped to the output
*/
typedef enum
{
SDL_LOGICAL_PRESENTATION_DISABLED , /**< There is no logical size in effect */
SDL_LOGICAL_PRESENTATION_STRETCH , /**< The rendered content is stretched to the output resolution */
SDL_LOGICAL_PRESENTATION_LETTERBOX , /**< The rendered content is fit to the largest dimension and the other dimension is letterboxed with black bars */
SDL_LOGICAL_PRESENTATION_OVERSCAN , /**< The rendered content is fit to the smallest dimension and the other dimension extends beyond the output bounds */
2023-06-28 12:52:33 +08:00
SDL_LOGICAL_PRESENTATION_INTEGER_SCALE /**< The rendered content is scaled up by integer multiples to fit the output resolution */
2023-02-04 04:25:46 +08:00
} SDL_RendererLogicalPresentation ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* A structure representing rendering state
2015-06-21 23:33:46 +08:00
*/
struct SDL_Renderer ;
typedef struct SDL_Renderer SDL_Renderer ;
/**
2021-03-22 02:18:39 +08:00
* An efficient driver - specific representation of pixel data
2015-06-21 23:33:46 +08:00
*/
struct SDL_Texture ;
typedef struct SDL_Texture SDL_Texture ;
/* Function prototypes */
/**
2021-03-22 02:18:39 +08:00
* Get the number of 2 D rendering drivers available for the current display .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-22 02:18:39 +08:00
*
* \ sa SDL_CreateRenderer
2022-12-14 12:26:49 +08:00
* \ sa SDL_GetRenderDriver
2015-06-21 23:33:46 +08:00
*/
extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers ( void ) ;
/**
2022-12-14 12:26:49 +08:00
* Use this function to get the name of a built in 2 D rendering driver .
2015-06-21 23:33:46 +08:00
*
2022-12-14 12:26:49 +08:00
* The list of rendering drivers is given in the order that they are normally
* initialized by default ; the drivers that seem more reasonable to choose
* first ( as far as the SDL developers believe ) are earlier in the list .
*
* The names of drivers are all simple , low - ASCII identifiers , like " opengl " ,
* " direct3d12 " or " metal " . These never have Unicode characters , and are not
* meant to be proper names .
*
* The returned value points to a static , read - only string ; do not modify or
* free it !
*
* \ param index the index of the rendering driver ; the value ranges from 0 to
* SDL_GetNumRenderDrivers ( ) - 1
* \ returns the name of the rendering driver at the requested index , or NULL
* if an invalid index was specified .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetNumRenderDrivers
2015-06-21 23:33:46 +08:00
*/
2022-12-14 12:26:49 +08:00
extern DECLSPEC const char * SDLCALL SDL_GetRenderDriver ( int index ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Create a window and default renderer .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param width the width of the window
* \ param height the height of the window
* \ param window_flags the flags used to create the window ( see
* SDL_CreateWindow ( ) )
* \ param window a pointer filled with the window , or NULL on error
* \ param renderer a pointer filled with the renderer , or NULL on error
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateRenderer
* \ sa SDL_CreateWindow
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer ( int width , int height , Uint32 window_flags , SDL_Window * * window , SDL_Renderer * * renderer ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Create a 2 D rendering context for a window .
2015-06-21 23:33:46 +08:00
*
2023-01-26 01:58:29 +08:00
* If you want a specific renderer , you can specify its name here . A list of
* available renderers can be obtained by calling SDL_GetRenderDriver multiple
* times , with indices from 0 to SDL_GetNumRenderDrivers ( ) - 1. If you don ' t
2023-11-14 04:13:20 +08:00
* need a specific renderer , specify NULL and SDL will attempt to choose the
2023-01-26 01:58:29 +08:00
* best option for you , based on what is available on the user ' s system .
2022-12-14 12:26:49 +08:00
*
2024-01-28 04:47:21 +08:00
* If you pass SDL_RENDERER_SOFTWARE in the flags , you will get a software
* renderer , otherwise you will get a hardware accelerated renderer if
* available .
2024-01-28 04:45:25 +08:00
*
2023-05-17 07:29:52 +08:00
* By default the rendering size matches the window size in pixels , but you
2023-05-18 03:59:14 +08:00
* can call SDL_SetRenderLogicalPresentation ( ) to change the content size and
* scaling options .
2023-02-04 04:25:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param window the window where rendering is displayed
2022-12-14 12:26:49 +08:00
* \ param name the name of the rendering driver to initialize , or NULL to
* initialize the first one supporting the requested flags
2021-03-22 02:18:39 +08:00
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2023-11-14 04:13:20 +08:00
* \ sa SDL_CreateRendererWithProperties
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateSoftwareRenderer
* \ sa SDL_DestroyRenderer
* \ sa SDL_GetNumRenderDrivers
2022-12-14 12:26:49 +08:00
* \ sa SDL_GetRenderDriver
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetRendererInfo
2015-06-21 23:33:46 +08:00
*/
2023-11-14 04:13:20 +08:00
extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer ( SDL_Window * window , const char * name , Uint32 flags ) ;
/**
* Create a 2 D rendering context for a window , with the specified properties .
*
* These are the supported properties :
*
2024-02-06 17:53:03 +08:00
* - ` SDL_PROP_RENDERER_CREATE_NAME_STRING ` : the name of the rendering driver
* to use , if a specific one is desired
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_RENDERER_CREATE_WINDOW_POINTER ` : the window where rendering is
2024-02-06 17:53:03 +08:00
* displayed , required if this isn ' t a software renderer using a surface
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_RENDERER_CREATE_SURFACE_POINTER ` : the surface where rendering
* is displayed , if you want a software renderer without a window
2024-01-31 01:49:26 +08:00
* - ` SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER ` : an SDL_ColorSpace
* value describing the colorspace for output to the display , defaults to
2024-02-22 11:26:22 +08:00
* SDL_COLORSPACE_SRGB . The direct3d11 , direct3d12 , and metal renderers
* support SDL_COLORSPACE_SRGB_LINEAR , which is a linear color space and
* supports HDR output . If you select SDL_COLORSPACE_SRGB_LINEAR , drawing
* still uses the sRGB colorspace , but values can go beyond 1.0 and float
* ( linear ) format textures can be used for HDR content .
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN ` : true if you want
2024-01-09 01:34:23 +08:00
* present synchronized with the refresh rate
2024-01-08 09:02:25 +08:00
*
* \ param props the properties to use
* \ 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 3.0 .0 .
*
* \ sa SDL_CreateRenderer
* \ sa SDL_CreateSoftwareRenderer
* \ sa SDL_DestroyRenderer
* \ sa SDL_GetRendererInfo
*/
2023-11-14 04:13:20 +08:00
extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRendererWithProperties ( SDL_PropertiesID props ) ;
2015-06-21 23:33:46 +08:00
2024-02-06 17:53:03 +08:00
# define SDL_PROP_RENDERER_CREATE_NAME_STRING "name"
2024-01-30 10:32:27 +08:00
# define SDL_PROP_RENDERER_CREATE_WINDOW_POINTER "window"
# define SDL_PROP_RENDERER_CREATE_SURFACE_POINTER "surface"
# define SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER "output_colorspace"
# define SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN "present_vsync"
2024-01-09 01:13:18 +08:00
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Create a 2 D software rendering context for a surface .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateRenderer
* \ sa SDL_CreateWindowRenderer
* \ sa SDL_DestroyRenderer
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer ( SDL_Surface * surface ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the renderer associated with a window .
*
* \ param window the window to query
* \ returns the rendering context on success or NULL on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateRenderer
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer ( SDL_Window * window ) ;
2015-06-21 23:33:46 +08:00
2022-03-24 00:07:56 +08:00
/**
* Get the window associated with a renderer .
*
* \ param renderer the renderer to query
2022-03-24 00:09:05 +08:00
* \ returns the window on success or NULL on failure ; call SDL_GetError ( ) for
* more information .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2022-03-24 00:07:56 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_Window * SDLCALL SDL_GetRenderWindow ( SDL_Renderer * renderer ) ;
2022-03-24 00:07:56 +08:00
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get information about a rendering context .
*
* \ param renderer the rendering context
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateRenderer
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetRendererInfo ( SDL_Renderer * renderer , SDL_RendererInfo * info ) ;
2015-06-21 23:33:46 +08:00
2023-10-12 07:59:51 +08:00
/**
* Get the properties associated with a renderer .
*
2023-11-14 04:13:20 +08:00
* The following read - only properties are provided by SDL :
2024-01-08 09:02:25 +08:00
*
2024-02-06 17:53:03 +08:00
* - ` SDL_PROP_RENDERER_NAME_STRING ` : the name of the rendering driver
2024-02-06 18:49:24 +08:00
* - ` SDL_PROP_RENDERER_WINDOW_POINTER ` : the window where rendering is
* displayed , if any
* - ` SDL_PROP_RENDERER_SURFACE_POINTER ` : the surface where rendering is
* displayed , if this is a software renderer without a window
* - ` SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER ` : an SDL_ColorSpace value
* describing the colorspace for output to the display , defaults to
* SDL_COLORSPACE_SRGB .
2024-02-22 11:26:22 +08:00
* - ` SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN ` : true if the output colorspace is
* SDL_COLORSPACE_SRGB_LINEAR and the renderer is showing on a display with
* HDR enabled .
* - ` SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT ` : the value of SDR white in the
* SDL_COLORSPACE_SRGB_LINEAR colorspace . When HDR is enabled , this value is
* automatically multiplied into the color scale .
* - ` SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT ` : the additional high dynamic range
* that can be displayed , in terms of the SDR white point . When HDR is not
* enabled , this will be 1.0 .
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_RENDERER_D3D9_DEVICE_POINTER ` : the IDirect3DDevice9 associated
* with the renderer
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_RENDERER_D3D11_DEVICE_POINTER ` : the ID3D11Device associated
2024-01-09 01:34:23 +08:00
* with the renderer
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_RENDERER_D3D12_DEVICE_POINTER ` : the ID3D12Device associated
2024-01-09 01:34:23 +08:00
* with the renderer
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER ` : the ID3D12CommandQueue
* associated with the renderer
2024-01-09 01:16:19 +08:00
*
2024-01-08 09:02:25 +08:00
* \ param renderer the rendering context
* \ returns a valid property ID on success or 0 on failure ; call
* SDL_GetError ( ) for more information .
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_GetProperty
* \ sa SDL_SetProperty
*/
2023-10-12 07:59:51 +08:00
extern DECLSPEC SDL_PropertiesID SDLCALL SDL_GetRendererProperties ( SDL_Renderer * renderer ) ;
2024-02-06 17:53:03 +08:00
# define SDL_PROP_RENDERER_NAME_STRING "SDL.renderer.name"
# define SDL_PROP_RENDERER_WINDOW_POINTER "SDL.renderer.window"
# define SDL_PROP_RENDERER_SURFACE_POINTER "SDL.renderer.surface"
# define SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER "SDL.renderer.output_colorspace"
2024-02-20 00:45:02 +08:00
# define SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN "SDL.renderer.HDR_enabled"
# define SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT "SDL.renderer.SDR_white_point"
# define SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT "SDL.renderer.HDR_headroom"
2024-01-28 05:00:37 +08:00
# define SDL_PROP_RENDERER_D3D9_DEVICE_POINTER "SDL.renderer.d3d9.device"
# define SDL_PROP_RENDERER_D3D11_DEVICE_POINTER "SDL.renderer.d3d11.device"
# define SDL_PROP_RENDERER_D3D12_DEVICE_POINTER "SDL.renderer.d3d12.device"
# define SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER "SDL.renderer.d3d12.command_queue"
2024-01-09 01:13:18 +08:00
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the output size in pixels of a rendering context .
*
2023-02-25 00:49:41 +08:00
* This returns the true output size in pixels , ignoring any render targets or
* logical size and presentation .
2023-02-04 04:25:46 +08:00
*
* \ param renderer the rendering context
* \ param w a pointer filled in with the width in pixels
* \ param h a pointer filled in with the height in pixels
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_GetRenderer
*/
extern DECLSPEC int SDLCALL SDL_GetRenderOutputSize ( SDL_Renderer * renderer , int * w , int * h ) ;
/**
* Get the current output size in pixels of a rendering context .
*
2023-02-25 00:49:41 +08:00
* If a rendering target is active , this will return the size of the rendering
* target in pixels , otherwise if a logical size is set , it will return the
* logical size , otherwise it will return the value of
2023-02-04 04:25:46 +08:00
* SDL_GetRenderOutputSize ( ) .
2021-03-22 02:18:39 +08:00
*
* \ param renderer the rendering context
2023-02-04 04:25:46 +08:00
* \ param w a pointer filled in with the current width
* \ param h a pointer filled in with the current height
2021-03-22 02:18:39 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-22 02:18:39 +08:00
*
2023-02-04 04:25:46 +08:00
* \ sa SDL_GetRenderOutputSize
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetRenderer
2015-06-21 23:33:46 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_GetCurrentRenderOutputSize ( SDL_Renderer * renderer , int * w , int * h ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Create a texture for a rendering context .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* You can set the texture scaling method by setting
* ` SDL_HINT_RENDER_SCALE_QUALITY ` before creating the texture .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ param format one of the enumerated values in SDL_PixelFormatEnum
* \ param access one of the enumerated values in SDL_TextureAccess
* \ param w the width of the texture in pixels
* \ param 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 .
2017-08-13 04:05:26 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateTextureFromSurface
2023-11-14 04:13:20 +08:00
* \ sa SDL_CreateTextureWithProperties
2021-03-22 02:18:39 +08:00
* \ sa SDL_DestroyTexture
* \ sa SDL_QueryTexture
* \ sa SDL_UpdateTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture ( SDL_Renderer * renderer , Uint32 format , int access , int w , int h ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Create a texture from an existing surface .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* The surface is not modified or freed by this function .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* The SDL_TextureAccess hint for the created texture is
* ` SDL_TEXTUREACCESS_STATIC ` .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateTexture
2023-11-14 04:13:20 +08:00
* \ sa SDL_CreateTextureWithProperties
2021-03-22 02:18:39 +08:00
* \ sa SDL_DestroyTexture
* \ sa SDL_QueryTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface ( SDL_Renderer * renderer , SDL_Surface * surface ) ;
2015-06-21 23:33:46 +08:00
2023-11-14 04:13:20 +08:00
/**
* Create a texture for a rendering context with the specified properties .
*
* These are the supported properties :
*
2024-01-31 01:49:26 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER ` : an SDL_ColorSpace value
2024-02-22 11:26:22 +08:00
* describing the texture colorspace , defaults to SDL_COLORSPACE_SRGB_LINEAR
* for floating point textures , SDL_COLORSPACE_HDR10 for 10 - bit textures ,
2024-02-05 05:10:23 +08:00
* SDL_COLORSPACE_SRGB for other RGB textures and SDL_COLORSPACE_JPEG for
* YUV textures .
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER ` : one of the enumerated values in
* SDL_PixelFormatEnum , defaults to the best RGBA format for the renderer
* - ` SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER ` : one of the enumerated values in
* SDL_TextureAccess , defaults to SDL_TEXTUREACCESS_STATIC
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER ` : the width of the texture in
2024-01-09 01:34:23 +08:00
* pixels , required
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER ` : the height of the texture in
2024-01-09 01:34:23 +08:00
* pixels , required
2024-02-22 11:26:22 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT ` : for HDR10 and floating
* point textures , this defines the value of 100 % diffuse white , with higher
* values being displayed in the High Dynamic Range headroom . This defaults
* to 100 for HDR10 textures and 1.0 for floating point textures .
* - ` SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT ` : for HDR10 and floating
* point textures , this defines the maximum dynamic range used by the
* content , in terms of the SDR white point . This would be equivalent to
* maxCLL / SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT for HDR10 content .
* If this is defined , any values outside the range supported by the display
* will be scaled into the available HDR headroom , otherwise they are
* clipped .
2024-01-08 09:02:25 +08:00
*
* With the direct3d11 renderer :
*
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER ` : the ID3D11Texture2D
2024-01-09 01:34:23 +08:00
* associated with the texture , if you want to wrap an existing texture .
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER ` : the ID3D11Texture2D
* associated with the U plane of a YUV texture , if you want to wrap an
* existing texture .
* - ` SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER ` : the ID3D11Texture2D
* associated with the V plane of a YUV texture , if you want to wrap an
* existing texture .
2024-01-08 09:02:25 +08:00
*
* With the direct3d12 renderer :
*
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER ` : the ID3D12Resource
2024-01-09 01:34:23 +08:00
* associated with the texture , if you want to wrap an existing texture .
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER ` : the ID3D12Resource
2024-01-09 01:34:23 +08:00
* associated with the U plane of a YUV texture , if you want to wrap an
* existing texture .
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER ` : the ID3D12Resource
2024-01-09 01:34:23 +08:00
* associated with the V plane of a YUV texture , if you want to wrap an
2024-01-09 01:16:19 +08:00
* existing texture .
2024-01-08 09:02:25 +08:00
*
2024-02-07 05:54:05 +08:00
* With the metal renderer :
*
2024-02-07 07:41:23 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER ` : the CVPixelBufferRef
* associated with the texture , if you want to create a texture from an
* existing pixel buffer .
2024-02-07 05:54:05 +08:00
*
2024-01-08 09:02:25 +08:00
* With the opengl renderer :
*
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the texture , if you want to wrap an existing texture .
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER ` : the GLuint texture
* associated with the UV plane of an NV12 texture , if you want to wrap an
* existing texture .
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the U plane of a YUV texture , if you want to wrap an
* existing texture .
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the V plane of a YUV texture , if you want to wrap an
2024-01-09 01:16:19 +08:00
* existing texture .
2024-01-08 09:02:25 +08:00
*
* With the opengles2 renderer :
*
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER ` : the GLuint texture
* associated with the texture , if you want to wrap an existing texture .
* - ` SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER ` : the GLuint texture
* associated with the texture , if you want to wrap an existing texture .
* - ` SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER ` : the GLuint texture
* associated with the UV plane of an NV12 texture , if you want to wrap an
* existing texture .
* - ` SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER ` : the GLuint texture
* associated with the U plane of a YUV texture , if you want to wrap an
* existing texture .
* - ` SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER ` : the GLuint texture
* associated with the V plane of a YUV texture , if you want to wrap an
* existing texture .
2024-01-08 09:02:25 +08:00
*
* \ param renderer the rendering context
* \ param props the properties to use
* \ 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 3.0 .0 .
*
* \ sa SDL_CreateTextureFromSurface
* \ sa SDL_CreateTexture
* \ sa SDL_DestroyTexture
* \ sa SDL_QueryTexture
* \ sa SDL_UpdateTexture
*/
2023-11-14 04:13:20 +08:00
extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureWithProperties ( SDL_Renderer * renderer , SDL_PropertiesID props ) ;
2024-01-30 10:32:27 +08:00
# define SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER "colorspace"
2024-01-28 05:00:37 +08:00
# define SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER "format"
# define SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER "access"
# define SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER "width"
# define SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER "height"
2024-02-20 00:45:02 +08:00
# define SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT "SDR_white_point"
# define SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT "HDR_headroom"
2024-01-28 05:00:37 +08:00
# define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER "d3d11.texture"
# define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER "d3d11.texture_u"
# define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER "d3d11.texture_v"
# define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER "d3d12.texture"
# define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER "d3d12.texture_u"
# define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER "d3d12.texture_v"
2024-02-07 05:54:05 +08:00
# define SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER "metal.pixelbuffer"
2024-01-28 05:00:37 +08:00
# define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER "opengl.texture"
# define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER "opengl.texture_uv"
# define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER "opengl.texture_u"
# define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER "opengl.texture_v"
# define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER "opengles2.texture"
# define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER "opengles2.texture"
# define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER "opengles2.texture_uv"
# define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER "opengles2.texture_u"
# define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER "opengles2.texture_v"
2024-01-09 01:13:18 +08:00
2024-01-08 09:02:25 +08:00
/**
* Get the properties associated with a texture .
*
* The following read - only properties are provided by SDL :
*
2024-01-31 01:49:26 +08:00
* - ` SDL_PROP_TEXTURE_COLORSPACE_NUMBER ` : an SDL_ColorSpace value describing
* the colorspace used by the texture
2024-02-22 11:26:22 +08:00
* - ` SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT ` : for HDR10 and floating point
* textures , this defines the value of 100 % diffuse white , with higher
* values being displayed in the High Dynamic Range headroom . This defaults
* to 100 for HDR10 textures and 1.0 for other textures .
* - ` SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT ` : for HDR10 and floating point
* textures , this defines the maximum dynamic range used by the content , in
* terms of the SDR white point . If this is defined , any values outside the
* range supported by the display will be scaled into the available HDR
* headroom , otherwise they are clipped . This defaults to 1.0 for SDR
* textures , 4.0 for HDR10 textures , and no default for floating point
* textures .
2024-01-30 10:32:27 +08:00
*
2024-01-08 09:02:25 +08:00
* With the direct3d11 renderer :
*
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER ` : the ID3D11Texture2D associated
* with the texture
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER ` : the ID3D11Texture2D
2024-01-09 01:34:23 +08:00
* associated with the U plane of a YUV texture
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER ` : the ID3D11Texture2D
2024-01-09 01:34:23 +08:00
* associated with the V plane of a YUV texture
2024-01-08 09:02:25 +08:00
*
* With the direct3d12 renderer :
*
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER ` : the ID3D12Resource associated
* with the texture
* - ` SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER ` : the ID3D12Resource associated
* with the U plane of a YUV texture
* - ` SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER ` : the ID3D12Resource associated
* with the V plane of a YUV texture
2024-01-08 09:02:25 +08:00
*
* With the opengl renderer :
*
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER ` : the GLuint texture associated
* with the texture
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the UV plane of an NV12 texture
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER ` : the GLuint texture associated
* with the U plane of a YUV texture
* - ` SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER ` : the GLuint texture associated
* with the V plane of a YUV texture
2024-02-12 13:12:20 +08:00
* - ` SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER ` : the GLenum for the
* texture target ( ` GL_TEXTURE_2D ` , ` GL_TEXTURE_RECTANGLE_ARB ` , etc )
2024-01-28 05:01:19 +08:00
* - ` SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT ` : the texture coordinate width of
* the texture ( 0.0 - 1.0 )
* - ` SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT ` : the texture coordinate height of
* the texture ( 0.0 - 1.0 )
2024-01-08 09:02:25 +08:00
*
* With the opengles2 renderer :
*
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the texture
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the UV plane of an NV12 texture
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the U plane of a YUV texture
2024-01-28 05:00:37 +08:00
* - ` SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER ` : the GLuint texture
2024-01-09 01:34:23 +08:00
* associated with the V plane of a YUV texture
2024-02-12 13:12:20 +08:00
* - ` SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER ` : the GLenum for the
* texture target ( ` GL_TEXTURE_2D ` , ` GL_TEXTURE_EXTERNAL_OES ` , etc )
2024-01-08 09:02:25 +08:00
*
* \ param texture the texture to query
2023-10-13 03:20:53 +08:00
* \ returns a valid property ID on success or 0 on failure ; call
* SDL_GetError ( ) for more information .
2023-10-12 07:59:51 +08:00
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_GetProperty
* \ sa SDL_SetProperty
*/
extern DECLSPEC SDL_PropertiesID SDLCALL SDL_GetTextureProperties ( SDL_Texture * texture ) ;
2024-01-30 10:32:27 +08:00
# define SDL_PROP_TEXTURE_COLORSPACE_NUMBER "SDL.texture.colorspace"
2024-02-20 00:45:02 +08:00
# define SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT "SDL.texture.SDR_white_point"
# define SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT "SDL.texture.HDR_headroom"
2024-01-28 05:00:37 +08:00
# define SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER "SDL.texture.d3d11.texture"
# define SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER "SDL.texture.d3d11.texture_u"
# define SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER "SDL.texture.d3d11.texture_v"
# define SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER "SDL.texture.d3d12.texture"
# define SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER "SDL.texture.d3d12.texture_u"
# define SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER "SDL.texture.d3d12.texture_v"
# define SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER "SDL.texture.opengl.texture"
# define SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER "SDL.texture.opengl.texture_uv"
# define SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER "SDL.texture.opengl.texture_u"
# define SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER "SDL.texture.opengl.texture_v"
2024-02-12 13:12:20 +08:00
# define SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER "SDL.texture.opengl.target"
2024-01-28 05:00:37 +08:00
# define SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT "SDL.texture.opengl.tex_w"
# define SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT "SDL.texture.opengl.tex_h"
# define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER "SDL.texture.opengles2.texture"
# define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER "SDL.texture.opengles2.texture_uv"
# define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER "SDL.texture.opengles2.texture_u"
# define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER "SDL.texture.opengles2.texture_v"
2024-02-12 13:12:20 +08:00
# define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER "SDL.texture.opengles2.target"
2024-01-09 01:13:18 +08:00
2024-01-08 23:17:38 +08:00
/**
* Get the renderer that created an SDL_Texture .
*
* \ param texture the texture to query
2024-01-08 23:18:26 +08:00
* \ returns a pointer to the SDL_Renderer that created the texture , or NULL on
* failure ; call SDL_GetError ( ) for more information .
2024-01-08 23:17:38 +08:00
*
* \ threadsafety It is safe to call this function from any thread .
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_CreateTexture
* \ sa SDL_CreateTextureFromSurface
* \ sa SDL_CreateTextureWithProperties
*/
2024-01-09 03:15:56 +08:00
extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRendererFromTexture ( SDL_Texture * texture ) ;
2024-01-08 23:17:38 +08:00
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Query the attributes of a texture .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to query
* \ param format a pointer filled in with the raw format of the texture ; the
* actual format may differ , but pixel transfers will use this
2022-02-02 00:58:05 +08:00
* format ( one of the SDL_PixelFormatEnum values ) . This argument
* can be NULL if you don ' t need this information .
2021-03-22 02:18:39 +08:00
* \ param access a pointer filled in with the actual access to the texture
2022-02-02 00:58:05 +08:00
* ( one of the SDL_TextureAccess values ) . This argument can be
* NULL if you don ' t need this information .
* \ param 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 .
* \ param 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 .
2021-03-22 02:18:39 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_QueryTexture ( SDL_Texture * texture , Uint32 * format , int * access , int * w , int * h ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* 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 :
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* ` srcC = srcC * ( color / 255 ) `
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* Color modulation is not always supported by the renderer ; it will return - 1
* if color modulation is not supported .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to update
* \ param r the red color value multiplied into copy operations
* \ param g the green color value multiplied into copy operations
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetTextureColorMod
* \ sa SDL_SetTextureAlphaMod
2024-01-30 05:28:33 +08:00
* \ sa SDL_SetTextureColorModFloat
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetTextureColorMod ( SDL_Texture * texture , Uint8 r , Uint8 g , Uint8 b ) ;
2015-06-21 23:33:46 +08:00
2024-01-30 05:28:33 +08:00
/**
* 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 `
*
* Color modulation is not always supported by the renderer ; it will return - 1
* if color modulation is not supported .
*
* \ param texture the texture to update
* \ param r the red color value multiplied into copy operations
* \ param g the green color value multiplied into copy operations
* \ param 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 3.0 .0 .
*
* \ sa SDL_GetTextureColorModFloat
* \ sa SDL_SetTextureAlphaModFloat
* \ sa SDL_SetTextureColorMod
*/
extern DECLSPEC int SDLCALL SDL_SetTextureColorModFloat ( SDL_Texture * texture , float r , float g , float b ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the additional color value multiplied into render copy operations .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to query
* \ param r a pointer filled in with the current red color value
* \ param g a pointer filled in with the current green color value
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetTextureAlphaMod
2024-01-30 05:28:33 +08:00
* \ sa SDL_GetTextureColorModFloat
2021-03-22 02:18:39 +08:00
* \ sa SDL_SetTextureColorMod
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetTextureColorMod ( SDL_Texture * texture , Uint8 * r , Uint8 * g , Uint8 * b ) ;
2015-06-21 23:33:46 +08:00
2024-01-30 05:28:33 +08:00
/**
* Get the additional color value multiplied into render copy operations .
*
* \ param texture the texture to query
* \ param r a pointer filled in with the current red color value
* \ param g a pointer filled in with the current green color value
* \ param 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 3.0 .0 .
*
* \ sa SDL_GetTextureAlphaModFloat
* \ sa SDL_GetTextureColorMod
* \ sa SDL_SetTextureColorModFloat
*/
extern DECLSPEC int SDLCALL SDL_GetTextureColorModFloat ( SDL_Texture * texture , float * r , float * g , float * b ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Set an additional alpha value multiplied into render copy operations .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* When this texture is rendered , during the copy operation the source alpha
* value is modulated by this alpha value according to the following formula :
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* ` srcA = srcA * ( alpha / 255 ) `
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* Alpha modulation is not always supported by the renderer ; it will return - 1
* if alpha modulation is not supported .
*
* \ param texture the texture to update
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetTextureAlphaMod
2024-01-30 05:28:33 +08:00
* \ sa SDL_SetTextureAlphaModFloat
2021-03-22 02:18:39 +08:00
* \ sa SDL_SetTextureColorMod
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod ( SDL_Texture * texture , Uint8 alpha ) ;
2015-06-21 23:33:46 +08:00
2024-01-30 05:28:33 +08:00
/**
* 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 `
*
* Alpha modulation is not always supported by the renderer ; it will return - 1
* if alpha modulation is not supported .
*
* \ param texture the texture to update
* \ param 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 3.0 .0 .
*
* \ sa SDL_GetTextureAlphaModFloat
* \ sa SDL_SetTextureAlphaMod
* \ sa SDL_SetTextureColorModFloat
*/
extern DECLSPEC int SDLCALL SDL_SetTextureAlphaModFloat ( SDL_Texture * texture , float alpha ) ;
2015-06-21 23:33:46 +08:00
/**
2021-07-15 05:07:04 +08:00
* Get the additional alpha value multiplied into render copy operations .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to query
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2024-01-30 05:28:33 +08:00
* \ sa SDL_GetTextureAlphaModFloat
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetTextureColorMod
* \ sa SDL_SetTextureAlphaMod
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod ( SDL_Texture * texture , Uint8 * alpha ) ;
2015-06-21 23:33:46 +08:00
2024-01-30 05:28:33 +08:00
/**
* Get the additional alpha value multiplied into render copy operations .
*
* \ param texture the texture to query
* \ param 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 3.0 .0 .
*
* \ sa SDL_GetTextureAlphaMod
* \ sa SDL_GetTextureColorModFloat
* \ sa SDL_SetTextureAlphaModFloat
*/
extern DECLSPEC int SDLCALL SDL_GetTextureAlphaModFloat ( SDL_Texture * texture , float * alpha ) ;
2015-06-21 23:33:46 +08:00
/**
2022-12-27 22:21:13 +08:00
* Set the blend mode for a texture , used by SDL_RenderTexture ( ) .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* If the blend mode is not supported , the closest supported mode is chosen
* and this function returns - 1.
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to update
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetTextureBlendMode
2022-12-27 22:21:13 +08:00
* \ sa SDL_RenderTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode ( SDL_Texture * texture , SDL_BlendMode blendMode ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the blend mode used for texture copy operations .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to query
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_SetTextureBlendMode
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode ( SDL_Texture * texture , SDL_BlendMode * blendMode ) ;
2015-06-21 23:33:46 +08:00
2019-12-23 05:39:44 +08:00
/**
2021-03-22 02:18:39 +08:00
* Set the scale mode used for texture scale operations .
2019-12-23 05:39:44 +08:00
*
2024-02-12 11:07:07 +08:00
* The default texture scale mode is SDL_SCALEMODE_LINEAR .
*
2021-03-22 02:18:39 +08:00
* If the scale mode is not supported , the closest supported mode is chosen .
2019-12-23 05:39:44 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture The texture to update .
* \ param scaleMode the SDL_ScaleMode to use for texture scaling .
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2019-12-23 05:39:44 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-07-15 05:07:04 +08:00
* \ sa SDL_GetTextureScaleMode
2019-12-23 05:39:44 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode ( SDL_Texture * texture , SDL_ScaleMode scaleMode ) ;
2019-12-23 05:39:44 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the scale mode used for texture scale operations .
2019-12-23 05:39:44 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to query .
* \ param scaleMode a pointer filled in with the current scale mode .
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2019-12-23 05:39:44 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-07-15 05:07:04 +08:00
* \ sa SDL_SetTextureScaleMode
2019-12-23 05:39:44 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode ( SDL_Texture * texture , SDL_ScaleMode * scaleMode ) ;
2019-12-23 05:39:44 +08:00
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Update the given texture rectangle with new pixel data .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* The pixel data must be in the pixel format of the texture . Use
* SDL_QueryTexture ( ) to query the pixel format of the texture .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* This is a fairly slow function , intended for use with static textures that
* do not change often .
2017-08-11 02:57:19 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to update
* \ param rect an SDL_Rect structure representing the area to update , or NULL
* to update the entire texture
* \ param pixels the raw pixel data in the format of the texture
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateTexture
* \ sa SDL_LockTexture
* \ sa SDL_UnlockTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_UpdateTexture ( SDL_Texture * texture , const SDL_Rect * rect , const void * pixels , int pitch ) ;
2015-06-21 23:33:46 +08:00
/**
2021-07-15 05:07:04 +08:00
* Update a rectangle within a planar YV12 or IYUV texture with new pixel
* data .
2021-03-22 02:18:39 +08:00
*
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to update
* \ param rect a pointer to the rectangle of pixels to update , or NULL to
* update the entire texture
* \ param Yplane the raw pixel data for the Y plane
* \ param Ypitch the number of bytes between rows of pixel data for the Y
* plane
* \ param Uplane the raw pixel data for the U plane
* \ param Upitch the number of bytes between rows of pixel data for the U
* plane
* \ param Vplane the raw pixel data for the V plane
* \ param Vpitch the number of bytes between rows of pixel data for the V
* plane
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
2021-03-22 02:18:39 +08:00
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_UpdateTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture ( SDL_Texture * texture ,
const SDL_Rect * rect ,
2015-06-21 23:33:46 +08:00
const Uint8 * Yplane , int Ypitch ,
const Uint8 * Uplane , int Upitch ,
const Uint8 * Vplane , int Vpitch ) ;
2021-01-05 18:56:22 +08:00
/**
2021-03-22 02:18:39 +08:00
* Update a rectangle within a planar NV12 or NV21 texture with new pixels .
2021-01-05 18:56:22 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2021-01-05 18:56:22 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to update
* \ param rect a pointer to the rectangle of pixels to update , or NULL to
* update the entire texture .
* \ param Yplane the raw pixel data for the Y plane .
2021-07-15 05:07:04 +08:00
* \ param Ypitch the number of bytes between rows of pixel data for the Y
* plane .
2021-03-22 02:18:39 +08:00
* \ param UVplane the raw pixel data for the UV plane .
2021-07-15 05:07:04 +08:00
* \ param UVpitch the number of bytes between rows of pixel data for the UV
* plane .
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-01-05 18:56:22 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_UpdateNVTexture ( SDL_Texture * texture ,
const SDL_Rect * rect ,
2021-01-05 18:56:22 +08:00
const Uint8 * Yplane , int Ypitch ,
const Uint8 * UVplane , int UVpitch ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Lock a portion of the texture for * * write - only * * pixel access .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* You must use SDL_UnlockTexture ( ) to unlock the pixels and apply any
* changes .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param texture the texture to lock for access , which was created with
* ` SDL_TEXTUREACCESS_STREAMING `
* \ param rect an SDL_Rect structure representing the area to lock for access ;
* NULL to lock the entire texture
* \ param pixels this is filled in with a pointer to the locked pixels ,
* appropriately offset by the locked area
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-07-15 05:07:04 +08:00
* \ sa SDL_UnlockTexture
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_LockTexture ( SDL_Texture * texture ,
const SDL_Rect * rect ,
2015-06-21 23:33:46 +08:00
void * * pixels , int * pitch ) ;
2019-10-01 02:58:44 +08:00
/**
2021-03-22 02:18:39 +08:00
* 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 .
2019-10-01 02:58:44 +08:00
*
2021-03-22 02:18:39 +08:00
* The returned surface is freed internally after calling SDL_UnlockTexture ( )
* or SDL_DestroyTexture ( ) . The caller should not free it .
2019-10-01 02:58:44 +08:00
*
2023-02-12 17:09:42 +08:00
* \ param texture the texture to lock for access , which must be created with
2021-03-22 02:18:39 +08:00
* ` SDL_TEXTUREACCESS_STREAMING `
* \ param rect a pointer to the rectangle to lock for access . If the rect is
* NULL , the entire texture will be locked
* \ param surface this is filled in with an SDL surface representing the
* locked area
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2019-10-01 02:58:44 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-07-15 05:07:04 +08:00
* \ sa SDL_LockTexture
* \ sa SDL_UnlockTexture
2019-10-01 02:58:44 +08:00
*/
extern DECLSPEC int SDLCALL SDL_LockTextureToSurface ( SDL_Texture * texture ,
const SDL_Rect * rect ,
SDL_Surface * * surface ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Unlock a texture , uploading the changes to video memory , if needed .
*
* * * Warning * * : Please note that SDL_LockTexture ( ) is intended to be
2021-10-26 23:30:06 +08:00
* write - only ; it will not guarantee the previous contents of the texture will
2021-03-22 02:18:39 +08:00
* 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 .
*
2021-07-15 05:07:04 +08:00
* Which is to say : locking and immediately unlocking a texture can result in
* corrupted textures , depending on the renderer in use .
2021-03-22 02:18:39 +08:00
*
* \ param texture a texture locked by SDL_LockTexture ( )
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_LockTexture
2015-06-21 23:33:46 +08:00
*/
2023-02-10 03:16:41 +08:00
extern DECLSPEC void SDLCALL SDL_UnlockTexture ( SDL_Texture * texture ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Set a texture as the current rendering target .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 ` .
*
* \ param renderer the rendering context
* \ param texture the targeted texture , which must be created with the
2021-07-15 05:07:04 +08:00
* ` SDL_TEXTUREACCESS_TARGET ` flag , or NULL to render to the
* window instead of a texture .
2021-03-22 02:18:39 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetRenderTarget
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderTarget ( SDL_Renderer * renderer , SDL_Texture * texture ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the current render target .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* The default render target is the window for which the renderer was created ,
* and is reported a NULL here .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ returns the current render target or NULL for the default render target .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-22 02:18:39 +08:00
*
* \ sa SDL_SetRenderTarget
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget ( SDL_Renderer * renderer ) ;
2015-06-21 23:33:46 +08:00
/**
2023-02-04 04:25:46 +08:00
* Set a device independent resolution and presentation mode for rendering .
*
2023-02-25 00:49:41 +08:00
* This function sets the width and height of the logical rendering output . A
* render target is created at the specified size and used for rendering and
* then copied to the output during presentation .
2021-03-22 02:18:39 +08:00
*
2023-02-04 04:25:46 +08:00
* You can disable logical coordinates by setting the mode to
2023-05-18 03:59:14 +08:00
* SDL_LOGICAL_PRESENTATION_DISABLED , and in that case you get the full pixel
* resolution of the output window .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* You can convert coordinates in an event into rendering coordinates using
* SDL_ConvertEventToRenderCoordinates ( ) .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ param w the width of the logical resolution
* \ param h the height of the logical resolution
2023-02-04 04:25:46 +08:00
* \ param mode the presentation mode used
* \ param scale_mode the scale mode used
2021-03-22 02:18:39 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ sa SDL_ConvertEventToRenderCoordinates
* \ sa SDL_GetRenderLogicalPresentation
2015-06-21 23:33:46 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderLogicalPresentation ( SDL_Renderer * renderer , int w , int h , SDL_RendererLogicalPresentation mode , SDL_ScaleMode scale_mode ) ;
2015-06-21 23:33:46 +08:00
/**
2023-02-04 04:25:46 +08:00
* Get device independent resolution and presentation mode for rendering .
2022-05-12 15:36:49 +08:00
*
2023-02-25 00:49:41 +08:00
* This function gets the width and height of the logical rendering output , or
* the output size in pixels if a logical resolution is not enabled .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ param w an int to be filled with the width
* \ param h an int to be filled with the height
2023-02-04 04:25:46 +08:00
* \ param mode a pointer filled in with the presentation mode
* \ param scale_mode a pointer filled in with the scale mode
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-03-22 02:18:39 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-22 02:18:39 +08:00
*
2023-02-04 04:25:46 +08:00
* \ sa SDL_SetRenderLogicalPresentation
2015-06-21 23:33:46 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_GetRenderLogicalPresentation ( SDL_Renderer * renderer , int * w , int * h , SDL_RendererLogicalPresentation * mode , SDL_ScaleMode * scale_mode ) ;
2015-06-21 23:33:46 +08:00
2016-01-06 05:39:18 +08:00
/**
2023-05-17 07:29:52 +08:00
* Get a point in render coordinates when given a point in window coordinates .
2016-01-06 05:39:18 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
* \ param window_x the x coordinate in window coordinates
* \ param window_y the y coordinate in window coordinates
* \ param x a pointer filled with the x coordinate in render coordinates
* \ param y a pointer filled with the y coordinate in render coordinates
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2016-01-06 05:39:18 +08:00
*
2023-02-04 04:25:46 +08:00
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_SetRenderLogicalPresentation
* \ sa SDL_SetRenderScale
*/
extern DECLSPEC int SDLCALL SDL_RenderCoordinatesFromWindow ( SDL_Renderer * renderer , float window_x , float window_y , float * x , float * y ) ;
/**
2023-05-17 07:29:52 +08:00
* Get a point in window coordinates when given a point in render coordinates .
2023-02-04 04:25:46 +08:00
*
* \ param renderer the rendering context
* \ param x the x coordinate in render coordinates
* \ param y the y coordinate in render coordinates
2023-02-25 00:49:41 +08:00
* \ param window_x a pointer filled with the x coordinate in window
* coordinates
* \ param window_y a pointer filled with the y coordinate in window
* coordinates
2021-03-22 02:18:39 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2016-01-06 05:39:18 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-22 02:18:39 +08:00
*
2023-02-04 04:25:46 +08:00
* \ sa SDL_SetRenderLogicalPresentation
* \ sa SDL_SetRenderScale
2016-01-06 05:39:18 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_RenderCoordinatesToWindow ( SDL_Renderer * renderer , float x , float y , float * window_x , float * window_y ) ;
2016-01-06 05:39:18 +08:00
/**
2023-02-04 04:25:46 +08:00
* Convert the coordinates in an event to render coordinates .
*
* Touch coordinates are converted from normalized coordinates in the window
* to non - normalized rendering coordinates .
2021-03-22 02:18:39 +08:00
*
2023-02-04 04:25:46 +08:00
* Once converted , the coordinates may be outside the rendering area .
*
* \ param renderer the rendering context
* \ param event the event to modify
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2016-01-06 05:39:18 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2016-01-06 05:39:18 +08:00
*
2023-02-04 04:25:46 +08:00
* \ sa SDL_GetRenderCoordinatesFromWindowCoordinates
2016-01-06 05:39:18 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_ConvertEventToRenderCoordinates ( SDL_Renderer * renderer , SDL_Event * event ) ;
2016-01-06 05:39:18 +08:00
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Set the drawing area for rendering on the current target .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_GetRenderViewport
2024-02-10 08:37:04 +08:00
* \ sa SDL_RenderViewportSet
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderViewport ( SDL_Renderer * renderer , const SDL_Rect * rect ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the drawing area for the current target .
*
* \ param renderer the rendering context
* \ param rect an SDL_Rect structure filled in with the current drawing area
2023-02-04 04:25:46 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2024-02-10 08:37:04 +08:00
* \ sa SDL_RenderViewportSet
2022-12-27 22:21:13 +08:00
* \ sa SDL_SetRenderViewport
2015-06-21 23:33:46 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_GetRenderViewport ( SDL_Renderer * renderer , SDL_Rect * rect ) ;
2015-06-21 23:33:46 +08:00
2024-02-10 08:37:04 +08:00
/**
* Return whether an explicit rectangle was set as the viewport .
*
2024-02-10 08:38:20 +08:00
* This is useful if you ' re saving and restoring the viewport and want to know
* whether you should restore a specific rectangle or NULL . Note that the
* viewport is always reset when changing rendering targets .
2024-02-10 08:37:04 +08:00
*
* \ param renderer the rendering context
2024-02-10 08:38:20 +08:00
* \ returns SDL_TRUE if the viewport was set to a specific rectangle , or
* SDL_FALSE if it was set to NULL ( the entire target )
2024-02-10 08:37:04 +08:00
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_GetRenderViewport
* \ sa SDL_SetRenderViewport
*/
extern DECLSPEC SDL_bool SDLCALL SDL_RenderViewportSet ( SDL_Renderer * renderer ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Set the clip rectangle for rendering on the specified target .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_GetRenderClipRect
2022-12-29 11:34:01 +08:00
* \ sa SDL_RenderClipEnabled
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderClipRect ( SDL_Renderer * renderer , const SDL_Rect * rect ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the clip rectangle for the current target .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ param rect an SDL_Rect structure filled in with the current clipping area
* or an empty rectangle if clipping is disabled
2023-02-04 04:25:46 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2022-12-29 11:34:01 +08:00
* \ sa SDL_RenderClipEnabled
2022-12-27 22:21:13 +08:00
* \ sa SDL_SetRenderClipRect
2015-06-21 23:33:46 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_GetRenderClipRect ( SDL_Renderer * renderer , SDL_Rect * rect ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get whether clipping is enabled on the given renderer .
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ returns SDL_TRUE if clipping is enabled or SDL_FALSE if not ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_GetRenderClipRect
* \ sa SDL_SetRenderClipRect
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC SDL_bool SDLCALL SDL_RenderClipEnabled ( SDL_Renderer * renderer ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* 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 .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ param scaleX the horizontal scaling factor
* \ param scaleY the vertical scaling factor
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_GetRenderScale
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderScale ( SDL_Renderer * renderer , float scaleX , float scaleY ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the drawing scale for the current target .
2015-06-21 23:33:46 +08:00
*
2023-02-04 04:25:46 +08:00
* \ param renderer the rendering context
2021-03-22 02:18:39 +08:00
* \ param scaleX a pointer filled in with the horizontal scaling factor
* \ param scaleY a pointer filled in with the vertical scaling factor
2023-02-04 04:25:46 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-22 02:18:39 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_SetRenderScale
2015-06-21 23:33:46 +08:00
*/
2023-02-04 04:25:46 +08:00
extern DECLSPEC int SDLCALL SDL_GetRenderScale ( SDL_Renderer * renderer , float * scaleX , float * scaleY ) ;
2021-11-11 04:21:01 +08:00
2024-02-01 13:46:02 +08:00
/**
* Set the color used for drawing operations .
2021-03-22 02:18:39 +08:00
*
2021-07-15 05:07:04 +08:00
* Set the color for drawing or filling rectangles , lines , and points , and for
* SDL_RenderClear ( ) .
2021-03-22 02:18:39 +08:00
*
* \ param renderer the rendering context
* \ param r the red value used to draw on the rendering target
* \ param g the green value used to draw on the rendering target
* \ param b the blue value used to draw on the rendering target
* \ param 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 .
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetRenderDrawColor
* \ sa SDL_RenderClear
2024-01-30 05:28:33 +08:00
* \ sa SDL_RenderFillRect
* \ sa SDL_RenderFillRects
2022-12-27 22:21:13 +08:00
* \ sa SDL_RenderLine
* \ sa SDL_RenderLines
* \ sa SDL_RenderPoint
* \ sa SDL_RenderPoints
* \ sa SDL_RenderRect
* \ sa SDL_RenderRects
2024-01-30 05:28:33 +08:00
* \ sa SDL_SetRenderDrawColorFloat
*/
extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor ( SDL_Renderer * renderer , Uint8 r , Uint8 g , Uint8 b , Uint8 a ) ;
/**
* 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 ( ) .
*
* \ param renderer the rendering context
* \ param r the red value used to draw on the rendering target
* \ param g the green value used to draw on the rendering target
* \ param b the blue value used to draw on the rendering target
2024-01-31 01:49:26 +08:00
* \ param a the alpha value used to draw on the rendering target . Use
* SDL_SetRenderDrawBlendMode to specify how the alpha channel is
* used
2024-01-30 05:28:33 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_GetRenderDrawColorFloat
* \ sa SDL_RenderClear
2021-03-22 02:18:39 +08:00
* \ sa SDL_RenderFillRect
* \ sa SDL_RenderFillRects
2024-01-30 05:28:33 +08:00
* \ sa SDL_RenderLine
* \ sa SDL_RenderLines
* \ sa SDL_RenderPoint
* \ sa SDL_RenderPoints
* \ sa SDL_RenderRect
* \ sa SDL_RenderRects
* \ sa SDL_SetRenderDrawColor
2015-06-21 23:33:46 +08:00
*/
2024-01-30 05:28:33 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderDrawColorFloat ( SDL_Renderer * renderer , float r , float g , float b , float a ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the color used for drawing operations ( Rect , Line and Clear ) .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ param r a pointer filled in with the red value used to draw on the
* rendering target
* \ param g a pointer filled in with the green value used to draw on the
* rendering target
* \ param b a pointer filled in with the blue value used to draw on the
* rendering target
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2024-01-30 05:28:33 +08:00
* \ sa SDL_GetRenderDrawColorFloat
2021-03-22 02:18:39 +08:00
* \ sa SDL_SetRenderDrawColor
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor ( SDL_Renderer * renderer , Uint8 * r , Uint8 * g , Uint8 * b , Uint8 * a ) ;
2015-06-21 23:33:46 +08:00
2024-01-30 05:28:33 +08:00
/**
* Get the color used for drawing operations ( Rect , Line and Clear ) .
*
* \ param renderer the rendering context
* \ param r a pointer filled in with the red value used to draw on the
* rendering target
* \ param g a pointer filled in with the green value used to draw on the
* rendering target
* \ param b a pointer filled in with the blue value used to draw on the
* rendering target
* \ param a a pointer filled in with the alpha value used to draw on the
* 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 3.0 .0 .
*
* \ sa SDL_SetRenderDrawColorFloat
* \ sa SDL_GetRenderDrawColor
*/
extern DECLSPEC int SDLCALL SDL_GetRenderDrawColorFloat ( SDL_Renderer * renderer , float * r , float * g , float * b , float * a ) ;
2024-02-06 15:20:43 +08:00
/**
* Set the color scale used for render operations .
*
2024-02-06 18:49:24 +08:00
* The color scale is an additional scale multiplied into the pixel color
* value while rendering . This can be used to adjust the brightness of colors
* during HDR rendering , or changing HDR video brightness when playing on an
* SDR display .
2024-02-06 15:20:43 +08:00
*
2024-02-06 18:49:24 +08:00
* The color scale does not affect the alpha channel , only the color
* brightness .
2024-02-06 15:20:43 +08:00
*
* \ param renderer the rendering context
* \ param scale the color scale 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 3.0 .0 .
*
* \ sa SDL_GetRenderColorScale
*/
extern DECLSPEC int SDLCALL SDL_SetRenderColorScale ( SDL_Renderer * renderer , float scale ) ;
/**
* Get the color scale used for render operations .
*
* \ param renderer the rendering context
* \ param scale a pointer filled in with the current color scale 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 3.0 .0 .
*
* \ sa SDL_SetRenderColorScale
*/
extern DECLSPEC int SDLCALL SDL_GetRenderColorScale ( SDL_Renderer * renderer , float * scale ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Set the blend mode used for drawing operations ( Fill and Line ) .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* If the blend mode is not supported , the closest supported mode is chosen .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_GetRenderDrawBlendMode
2022-12-27 22:21:13 +08:00
* \ sa SDL_RenderLine
* \ sa SDL_RenderLines
* \ sa SDL_RenderPoint
* \ sa SDL_RenderPoints
* \ sa SDL_RenderRect
* \ sa SDL_RenderRects
2021-03-22 02:18:39 +08:00
* \ sa SDL_RenderFillRect
* \ sa SDL_RenderFillRects
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode ( SDL_Renderer * renderer , SDL_BlendMode blendMode ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the blend mode used for drawing operations .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ param 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 .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_SetRenderDrawBlendMode
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode ( SDL_Renderer * renderer , SDL_BlendMode * blendMode ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Clear the current rendering target with the drawing color .
*
* This function clears the entire rendering target , ignoring the viewport and
* the clip rectangle .
*
* \ param renderer the rendering context
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_SetRenderDrawColor
2015-06-21 23:33:46 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderClear ( SDL_Renderer * renderer ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Draw a point on the current rendering target at subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should draw a point .
* \ param x The x coordinate of the point .
* \ param y The y coordinate of the point .
2023-02-11 05:26:35 +08:00
* \ returns 0 on success , or - 1 on error
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderPoint ( SDL_Renderer * renderer , float x , float y ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Draw multiple points on the current rendering target at subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should draw multiple points .
* \ param points The points to draw
* \ param count The number of points to draw
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderPoints ( SDL_Renderer * renderer , const SDL_FPoint * points , int count ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Draw a line on the current rendering target at subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should draw a line .
* \ param x1 The x coordinate of the start point .
* \ param y1 The y coordinate of the start point .
* \ param x2 The x coordinate of the end point .
* \ param y2 The y coordinate of the end point .
2023-02-11 05:26:35 +08:00
* \ returns 0 on success , or - 1 on error
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderLine ( SDL_Renderer * renderer , float x1 , float y1 , float x2 , float y2 ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Draw a series of connected lines on the current rendering target at
* subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should draw multiple lines .
* \ param points The points along the lines
* \ param count The number of points , drawing count - 1 lines
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderLines ( SDL_Renderer * renderer , const SDL_FPoint * points , int count ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Draw a rectangle on the current rendering target at subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should draw a rectangle .
2021-07-15 05:07:04 +08:00
* \ param rect A pointer to the destination rectangle , or NULL to outline the
* entire rendering target .
2023-02-11 05:26:35 +08:00
* \ returns 0 on success , or - 1 on error
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderRect ( SDL_Renderer * renderer , const SDL_FRect * rect ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Draw some number of rectangles on the current rendering target at subpixel
* precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should draw multiple rectangles .
* \ param rects A pointer to an array of destination rectangles .
* \ param count The number of rectangles .
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderRects ( SDL_Renderer * renderer , const SDL_FRect * rects , int count ) ;
2018-10-23 13:34:03 +08:00
/**
2021-07-15 05:07:04 +08:00
* Fill a rectangle on the current rendering target with the drawing color at
* subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should fill a rectangle .
* \ param rect A pointer to the destination rectangle , or NULL for the entire
* rendering target .
2023-02-11 05:26:35 +08:00
* \ returns 0 on success , or - 1 on error
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderFillRect ( SDL_Renderer * renderer , const SDL_FRect * rect ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Fill some number of rectangles on the current rendering target with the
* drawing color at subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should fill multiple rectangles .
* \ param rects A pointer to an array of destination rectangles .
* \ param count The number of rectangles .
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderFillRects ( SDL_Renderer * renderer , const SDL_FRect * rects , int count ) ;
2018-10-23 13:34:03 +08:00
/**
2021-03-22 02:18:39 +08:00
* Copy a portion of the texture to the current rendering target at subpixel
* precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should copy parts of a texture .
* \ param texture The source texture .
* \ param srcrect A pointer to the source rectangle , or NULL for the entire
* texture .
* \ param dstrect A pointer to the destination rectangle , or NULL for the
* entire rendering target .
2023-02-11 05:26:35 +08:00
* \ returns 0 on success , or - 1 on error
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-03-03 00:56:54 +08:00
extern DECLSPEC int SDLCALL SDL_RenderTexture ( SDL_Renderer * renderer , SDL_Texture * texture , const SDL_FRect * srcrect , const SDL_FRect * dstrect ) ;
2018-10-23 13:34:03 +08:00
/**
2021-07-15 05:07:04 +08:00
* Copy a portion of the source texture to the current rendering target , with
* rotation and flipping , at subpixel precision .
2018-10-23 13:34:03 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer which should copy parts of a texture .
* \ param texture The source texture .
* \ param srcrect A pointer to the source rectangle , or NULL for the entire
* texture .
* \ param dstrect A pointer to the destination rectangle , or NULL for the
* entire rendering target .
2021-07-15 05:07:04 +08:00
* \ param angle An angle in degrees that indicates the rotation that will be
* applied to dstrect , rotating it in a clockwise direction
* \ param 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 ) .
2024-01-20 22:33:19 +08:00
* \ param flip An SDL_FlipMode value stating which flipping actions should be
* performed on the texture
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-23 13:34:03 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_RenderTextureRotated ( SDL_Renderer * renderer , SDL_Texture * texture ,
2023-03-03 00:56:54 +08:00
const SDL_FRect * srcrect , const SDL_FRect * dstrect ,
2023-01-01 03:19:32 +08:00
const double angle , const SDL_FPoint * center ,
2024-01-20 22:31:37 +08:00
const SDL_FlipMode flip ) ;
2018-10-23 13:34:03 +08:00
2021-04-01 15:55:00 +08:00
/**
2021-08-19 06:13:05 +08:00
* 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 ) .
2021-04-01 15:55:00 +08:00
*
2022-03-28 00:52:04 +08:00
* \ param renderer The rendering context .
2021-08-19 06:13:05 +08:00
* \ param texture ( optional ) The SDL texture to use .
* \ param vertices Vertices .
* \ param num_vertices Number of vertices .
* \ param indices ( optional ) An array of integer indices into the ' vertices '
* array , if NULL all vertices will be rendered in sequential
* order .
* \ param num_indices Number of indices .
2023-02-11 05:26:35 +08:00
* \ returns 0 on success , or - 1 if the operation is not supported
2021-04-01 15:55:00 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2022-01-11 04:40:05 +08:00
* \ sa SDL_RenderGeometryRaw
2021-08-19 06:13:05 +08:00
* \ sa SDL_Vertex
2021-04-01 15:55:00 +08:00
*/
extern DECLSPEC int SDLCALL SDL_RenderGeometry ( SDL_Renderer * renderer ,
SDL_Texture * texture ,
const SDL_Vertex * vertices , int num_vertices ,
const int * indices , int num_indices ) ;
2021-03-16 22:07:44 +08:00
/**
2021-08-19 06:13:05 +08:00
* 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 ) .
*
2022-03-28 00:52:04 +08:00
* \ param renderer The rendering context .
2021-08-19 06:13:05 +08:00
* \ param texture ( optional ) The SDL texture to use .
* \ param xy Vertex positions
* \ param xy_stride Byte size to move from one element to the next element
2024-02-07 09:23:07 +08:00
* \ param color Vertex colors ( as SDL_Color )
2021-08-19 06:13:05 +08:00
* \ param color_stride Byte size to move from one element to the next element
* \ param uv Vertex normalized texture coordinates
* \ param uv_stride Byte size to move from one element to the next element
* \ param num_vertices Number of vertices .
* \ param indices ( optional ) An array of indices into the ' vertices ' arrays ,
* if NULL all vertices will be rendered in sequential order .
* \ param num_indices Number of indices .
* \ param size_indices Index size : 1 ( byte ) , 2 ( short ) , 4 ( int )
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2022-01-11 04:35:04 +08:00
*
* \ sa SDL_RenderGeometry
* \ sa SDL_Vertex
2021-03-16 22:07:44 +08:00
*/
2021-04-01 15:49:16 +08:00
extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw ( SDL_Renderer * renderer ,
2024-02-07 09:23:07 +08:00
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 ) ;
/**
* 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 ) .
*
* \ param renderer The rendering context .
* \ param texture ( optional ) The SDL texture to use .
* \ param xy Vertex positions
* \ param xy_stride Byte size to move from one element to the next element
* \ param color Vertex colors ( as SDL_FColor )
* \ param color_stride Byte size to move from one element to the next element
* \ param uv Vertex normalized texture coordinates
* \ param uv_stride Byte size to move from one element to the next element
* \ param num_vertices Number of vertices .
* \ param indices ( optional ) An array of indices into the ' vertices ' arrays ,
* if NULL all vertices will be rendered in sequential order .
* \ param num_indices Number of indices .
* \ param size_indices Index size : 1 ( byte ) , 2 ( short ) , 4 ( int )
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
* \ since This function is available since SDL 3.0 .0 .
*
* \ sa SDL_RenderGeometry
* \ sa SDL_Vertex
*/
extern DECLSPEC int SDLCALL SDL_RenderGeometryRawFloat ( SDL_Renderer * renderer ,
2021-03-16 22:07:44 +08:00
SDL_Texture * texture ,
2021-04-01 15:49:16 +08:00
const float * xy , int xy_stride ,
2024-01-30 05:28:33 +08:00
const SDL_FColor * color , int color_stride ,
2021-04-01 15:49:16 +08:00
const float * uv , int uv_stride ,
int num_vertices ,
2021-04-23 18:00:14 +08:00
const void * indices , int num_indices , int size_indices ) ;
2021-03-16 22:07:44 +08:00
2015-06-21 23:33:46 +08:00
/**
2024-02-04 02:18:12 +08:00
* Read pixels from the current rendering target .
*
* The returned surface should be freed with SDL_DestroySurface ( )
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* * * WARNING * * : This is a very slow operation , and should not be used
2022-03-19 01:30:05 +08:00
* frequently . If you ' re using this on the main rendering target , it should be
* called after rendering and before SDL_RenderPresent ( ) .
2015-06-21 23:33:46 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
2023-02-04 04:25:46 +08:00
* \ param rect an SDL_Rect structure representing the area in pixels relative
* to the to current viewport , or NULL for the entire viewport
2024-02-04 02:18:12 +08:00
* \ returns a new SDL_Surface on success or NULL on failure ; call
2021-03-22 02:18:39 +08:00
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 23:33:46 +08:00
*/
2024-02-04 02:18:12 +08:00
extern DECLSPEC SDL_Surface * SDLCALL SDL_RenderReadPixels ( SDL_Renderer * renderer , const SDL_Rect * rect ) ;
2015-06-21 23:33:46 +08:00
/**
2021-07-15 05:07:04 +08:00
* Update the screen with any rendering performed since the previous call .
2021-03-22 02:18:39 +08:00
*
* SDL ' s rendering functions operate on a backbuffer ; that is , calling a
2023-01-26 01:58:29 +08:00
* rendering function such as SDL_RenderLine ( ) 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
2021-03-22 02:18:39 +08:00
* 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 .
*
* \ param renderer the rendering context
2023-02-07 03:24:12 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-03-22 02:18:39 +08:00
*
2023-01-26 02:15:34 +08:00
* \ threadsafety You may only call this function on the main thread .
2021-10-27 09:36:05 +08:00
*
2023-01-26 01:58:29 +08:00
* \ since This function is available since SDL 3.0 .0 .
2023-01-25 11:13:25 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_RenderClear
2022-12-27 22:21:13 +08:00
* \ sa SDL_RenderLine
* \ sa SDL_RenderLines
* \ sa SDL_RenderPoint
* \ sa SDL_RenderPoints
* \ sa SDL_RenderRect
* \ sa SDL_RenderRects
2021-03-22 02:18:39 +08:00
* \ sa SDL_RenderFillRect
* \ sa SDL_RenderFillRects
* \ sa SDL_SetRenderDrawBlendMode
* \ sa SDL_SetRenderDrawColor
2015-06-21 23:33:46 +08:00
*/
2023-02-07 03:24:12 +08:00
extern DECLSPEC int SDLCALL SDL_RenderPresent ( SDL_Renderer * renderer ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Destroy the specified texture .
*
* Passing NULL or an otherwise invalid texture will set the SDL error message
* to " Invalid texture " .
*
* \ param texture the texture to destroy
2015-06-21 23:33:46 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateTexture
* \ sa SDL_CreateTextureFromSurface
2015-06-21 23:33:46 +08:00
*/
2023-02-09 23:53:47 +08:00
extern DECLSPEC void SDLCALL SDL_DestroyTexture ( SDL_Texture * texture ) ;
2015-06-21 23:33:46 +08:00
/**
2021-03-22 02:18:39 +08:00
* Destroy the rendering context for a window and free associated textures .
2015-06-21 23:33:46 +08:00
*
2022-08-21 22:05:04 +08:00
* If ` renderer ` is NULL , this function will return immediately after setting
* the SDL error message to " Invalid renderer " . See SDL_GetError ( ) .
2022-08-21 01:50:04 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2021-03-22 02:18:39 +08:00
* \ sa SDL_CreateRenderer
2015-06-21 23:33:46 +08:00
*/
2023-02-09 23:53:47 +08:00
extern DECLSPEC void SDLCALL SDL_DestroyRenderer ( SDL_Renderer * renderer ) ;
2015-06-21 23:33:46 +08:00
2018-10-05 04:34:44 +08:00
/**
2023-11-26 11:41:23 +08:00
* Force the rendering context to flush any pending commands and state .
2021-03-22 02:18:39 +08:00
*
2021-07-15 05:07:04 +08:00
* You do not need to ( and in fact , shouldn ' t ) call this function unless you
2023-11-26 11:41:23 +08:00
* are planning to call into OpenGL / Direct3D / Metal / whatever directly , in
2021-07-15 05:07:04 +08:00
* addition to using an SDL_Renderer .
2021-03-22 02:18:39 +08:00
*
2023-11-21 09:26:12 +08:00
* This is for a very - specific case : if you are using SDL ' s render API , and
* you plan to make OpenGL / D3D / whatever calls in addition to SDL render API
2023-11-26 11:41:23 +08:00
* calls . If this applies , you should call this function between calls to
2023-11-21 09:26:12 +08:00
* SDL ' s render API and the low - level API you ' re using in cooperation .
*
* In all other cases , you can ignore this function .
2018-10-05 04:34:44 +08:00
*
2023-11-30 23:22:19 +08:00
* This call makes SDL flush any pending rendering work it was queueing up to
* do later in a single batch , and marks any internal cached state as invalid ,
* so it ' ll prepare all its state again later , from scratch .
2023-11-26 11:41:23 +08:00
*
* This means you do not need to save state in your rendering code to protect
2023-11-30 23:22:19 +08:00
* the SDL renderer . However , there lots of arbitrary pieces of Direct3D and
* OpenGL state that can confuse things ; you should use your best judgement
* and be prepared to make changes if specific state needs to be protected .
2023-11-26 11:41:23 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer the rendering context
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2018-10-05 04:34:44 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2018-10-05 04:34:44 +08:00
*/
2023-11-26 11:41:23 +08:00
extern DECLSPEC int SDLCALL SDL_FlushRenderer ( SDL_Renderer * renderer ) ;
2018-10-05 04:34:44 +08:00
2017-12-09 06:30:10 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the CAMetalLayer associated with the given Metal renderer .
2017-12-09 06:30:10 +08:00
*
2021-03-22 02:18:39 +08:00
* This function returns ` void * ` , so SDL doesn ' t have to include Metal ' s
* headers , but it can be safely cast to a ` CAMetalLayer * ` .
2017-12-09 06:30:10 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer to query
2021-07-15 05:07:04 +08:00
* \ returns a ` CAMetalLayer * ` on success , or NULL if the renderer isn ' t a
* Metal renderer
2017-12-09 06:30:10 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_GetRenderMetalCommandEncoder
2017-12-09 06:30:10 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC void * SDLCALL SDL_GetRenderMetalLayer ( SDL_Renderer * renderer ) ;
2017-12-09 06:30:10 +08:00
/**
2021-03-22 02:18:39 +08:00
* Get the Metal command encoder for the current frame
2017-12-09 06:30:10 +08:00
*
2021-03-22 02:18:39 +08:00
* This function returns ` void * ` , so SDL doesn ' t have to include Metal ' s
* headers , but it can be safely cast to an ` id < MTLRenderCommandEncoder > ` .
2017-12-09 06:30:10 +08:00
*
2021-11-11 04:21:01 +08:00
* 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
2021-11-10 00:50:49 +08:00
* hidden / minimized / offscreen . This doesn ' t apply to command encoders for
2023-08-06 22:45:11 +08:00
* render targets , just the window ' s backbuffer . Check your return values !
2021-11-10 00:50:49 +08:00
*
2021-03-22 02:18:39 +08:00
* \ param renderer The renderer to query
2021-07-15 05:07:04 +08:00
* \ returns an ` id < MTLRenderCommandEncoder > ` on success , or NULL if the
2021-11-10 00:50:49 +08:00
* renderer isn ' t a Metal renderer or there was an error .
2017-12-09 06:30:10 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-27 09:36:05 +08:00
*
2022-12-27 22:21:13 +08:00
* \ sa SDL_GetRenderMetalLayer
2017-12-09 06:30:10 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC void * SDLCALL SDL_GetRenderMetalCommandEncoder ( SDL_Renderer * renderer ) ;
2015-06-21 23:33:46 +08:00
2021-03-08 07:20:45 +08:00
/**
* Toggle VSync of the given renderer .
*
* \ param renderer The renderer to toggle
2021-09-15 06:51:17 +08:00
* \ param vsync 1 for on , 0 for off . All other values are reserved
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-10-27 09:36:05 +08:00
*
2022-11-23 06:40:14 +08:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-08 07:20:45 +08:00
*/
2023-01-01 03:19:32 +08:00
extern DECLSPEC int SDLCALL SDL_SetRenderVSync ( SDL_Renderer * renderer , int vsync ) ;
2021-03-08 07:20:45 +08:00
2023-01-03 03:21:02 +08:00
/**
* Get VSync of the given renderer .
*
* \ param renderer The renderer to toggle
2023-01-26 01:58:29 +08:00
* \ param vsync an int filled with 1 for on , 0 for off . All other values are
* reserved
2023-02-12 17:09:42 +08:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2023-01-03 03:21:02 +08:00
*
* \ since This function is available since SDL 3.0 .0 .
*/
extern DECLSPEC int SDLCALL SDL_GetRenderVSync ( SDL_Renderer * renderer , int * vsync ) ;
2015-06-21 23:33:46 +08:00
/* Ends C function definitions when using C++ */
# ifdef __cplusplus
}
# endif
2022-12-23 00:38:59 +08:00
# include <SDL3/SDL_close_code.h>
2015-06-21 23:33:46 +08:00
2016-11-21 13:34:54 +08:00
# endif /* SDL_render_h_ */