Mercurial > foo_out_sdl
comparison SDL3/SDL_render.h @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:e9bb126753e7 | 1:20d02a178406 |
|---|---|
| 1 /* | |
| 2 Simple DirectMedia Layer | |
| 3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org> | |
| 4 | |
| 5 This software is provided 'as-is', without any express or implied | |
| 6 warranty. In no event will the authors be held liable for any damages | |
| 7 arising from the use of this software. | |
| 8 | |
| 9 Permission is granted to anyone to use this software for any purpose, | |
| 10 including commercial applications, and to alter it and redistribute it | |
| 11 freely, subject to the following restrictions: | |
| 12 | |
| 13 1. The origin of this software must not be misrepresented; you must not | |
| 14 claim that you wrote the original software. If you use this software | |
| 15 in a product, an acknowledgment in the product documentation would be | |
| 16 appreciated but is not required. | |
| 17 2. Altered source versions must be plainly marked as such, and must not be | |
| 18 misrepresented as being the original software. | |
| 19 3. This notice may not be removed or altered from any source distribution. | |
| 20 */ | |
| 21 | |
| 22 /** | |
| 23 * # CategoryRender | |
| 24 * | |
| 25 * Header file for SDL 2D rendering functions. | |
| 26 * | |
| 27 * This API supports the following features: | |
| 28 * | |
| 29 * - single pixel points | |
| 30 * - single pixel lines | |
| 31 * - filled rectangles | |
| 32 * - texture images | |
| 33 * - 2D polygons | |
| 34 * | |
| 35 * The primitives may be drawn in opaque, blended, or additive modes. | |
| 36 * | |
| 37 * The texture images may be drawn in opaque, blended, or additive modes. They | |
| 38 * can have an additional color tint or alpha modulation applied to them, and | |
| 39 * may also be stretched with linear interpolation. | |
| 40 * | |
| 41 * This API is designed to accelerate simple 2D operations. You may want more | |
| 42 * functionality such as 3D polygons and particle effects, and in that case | |
| 43 * you should use SDL's OpenGL/Direct3D support, the SDL3 GPU API, or one of | |
| 44 * the many good 3D engines. | |
| 45 * | |
| 46 * These functions must be called from the main thread. See this bug for | |
| 47 * details: https://github.com/libsdl-org/SDL/issues/986 | |
| 48 */ | |
| 49 | |
| 50 #ifndef SDL_render_h_ | |
| 51 #define SDL_render_h_ | |
| 52 | |
| 53 #include <SDL3/SDL_stdinc.h> | |
| 54 #include <SDL3/SDL_blendmode.h> | |
| 55 #include <SDL3/SDL_error.h> | |
| 56 #include <SDL3/SDL_events.h> | |
| 57 #include <SDL3/SDL_pixels.h> | |
| 58 #include <SDL3/SDL_properties.h> | |
| 59 #include <SDL3/SDL_rect.h> | |
| 60 #include <SDL3/SDL_surface.h> | |
| 61 #include <SDL3/SDL_video.h> | |
| 62 #include <SDL3/SDL_gpu.h> | |
| 63 | |
| 64 #include <SDL3/SDL_begin_code.h> | |
| 65 /* Set up for C function definitions, even when using C++ */ | |
| 66 #ifdef __cplusplus | |
| 67 extern "C" { | |
| 68 #endif | |
| 69 | |
| 70 /** | |
| 71 * The name of the software renderer. | |
| 72 * | |
| 73 * \since This macro is available since SDL 3.2.0. | |
| 74 */ | |
| 75 #define SDL_SOFTWARE_RENDERER "software" | |
| 76 | |
| 77 /** | |
| 78 * The name of the GPU renderer. | |
| 79 * | |
| 80 * \since This macro is available since SDL 3.4.0. | |
| 81 */ | |
| 82 #define SDL_GPU_RENDERER "gpu" | |
| 83 | |
| 84 /** | |
| 85 * Vertex structure. | |
| 86 * | |
| 87 * \since This struct is available since SDL 3.2.0. | |
| 88 */ | |
| 89 typedef struct SDL_Vertex | |
| 90 { | |
| 91 SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ | |
| 92 SDL_FColor color; /**< Vertex color */ | |
| 93 SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ | |
| 94 } SDL_Vertex; | |
| 95 | |
| 96 /** | |
| 97 * The access pattern allowed for a texture. | |
| 98 * | |
| 99 * \since This enum is available since SDL 3.2.0. | |
| 100 */ | |
| 101 typedef enum SDL_TextureAccess | |
| 102 { | |
| 103 SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ | |
| 104 SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ | |
| 105 SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ | |
| 106 } SDL_TextureAccess; | |
| 107 | |
| 108 /** | |
| 109 * The addressing mode for a texture when used in SDL_RenderGeometry(). | |
| 110 * | |
| 111 * This affects how texture coordinates are interpreted outside of [0, 1] | |
| 112 * | |
| 113 * Texture wrapping is always supported for power of two texture sizes, and is | |
| 114 * supported for other texture sizes if | |
| 115 * SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN is set to true. | |
| 116 * | |
| 117 * \since This enum is available since SDL 3.4.0. | |
| 118 */ | |
| 119 typedef enum SDL_TextureAddressMode | |
| 120 { | |
| 121 SDL_TEXTURE_ADDRESS_INVALID = -1, | |
| 122 SDL_TEXTURE_ADDRESS_AUTO, /**< Wrapping is enabled if texture coordinates are outside [0, 1], this is the default */ | |
| 123 SDL_TEXTURE_ADDRESS_CLAMP, /**< Texture coordinates are clamped to the [0, 1] range */ | |
| 124 SDL_TEXTURE_ADDRESS_WRAP /**< The texture is repeated (tiled) */ | |
| 125 } SDL_TextureAddressMode; | |
| 126 | |
| 127 /** | |
| 128 * How the logical size is mapped to the output. | |
| 129 * | |
| 130 * \since This enum is available since SDL 3.2.0. | |
| 131 */ | |
| 132 typedef enum SDL_RendererLogicalPresentation | |
| 133 { | |
| 134 SDL_LOGICAL_PRESENTATION_DISABLED, /**< There is no logical size in effect */ | |
| 135 SDL_LOGICAL_PRESENTATION_STRETCH, /**< The rendered content is stretched to the output resolution */ | |
| 136 SDL_LOGICAL_PRESENTATION_LETTERBOX, /**< The rendered content is fit to the largest dimension and the other dimension is letterboxed with the clear color */ | |
| 137 SDL_LOGICAL_PRESENTATION_OVERSCAN, /**< The rendered content is fit to the smallest dimension and the other dimension extends beyond the output bounds */ | |
| 138 SDL_LOGICAL_PRESENTATION_INTEGER_SCALE /**< The rendered content is scaled up by integer multiples to fit the output resolution */ | |
| 139 } SDL_RendererLogicalPresentation; | |
| 140 | |
| 141 /** | |
| 142 * A structure representing rendering state | |
| 143 * | |
| 144 * \since This struct is available since SDL 3.2.0. | |
| 145 */ | |
| 146 typedef struct SDL_Renderer SDL_Renderer; | |
| 147 | |
| 148 #ifndef SDL_INTERNAL | |
| 149 | |
| 150 /** | |
| 151 * An efficient driver-specific representation of pixel data | |
| 152 * | |
| 153 * \since This struct is available since SDL 3.2.0. | |
| 154 * | |
| 155 * \sa SDL_CreateTexture | |
| 156 * \sa SDL_CreateTextureFromSurface | |
| 157 * \sa SDL_CreateTextureWithProperties | |
| 158 * \sa SDL_DestroyTexture | |
| 159 */ | |
| 160 struct SDL_Texture | |
| 161 { | |
| 162 SDL_PixelFormat format; /**< The format of the texture, read-only */ | |
| 163 int w; /**< The width of the texture, read-only. */ | |
| 164 int h; /**< The height of the texture, read-only. */ | |
| 165 | |
| 166 int refcount; /**< Application reference count, used when freeing texture */ | |
| 167 }; | |
| 168 #endif /* !SDL_INTERNAL */ | |
| 169 | |
| 170 typedef struct SDL_Texture SDL_Texture; | |
| 171 | |
| 172 /* Function prototypes */ | |
| 173 | |
| 174 /** | |
| 175 * Get the number of 2D rendering drivers available for the current display. | |
| 176 * | |
| 177 * A render driver is a set of code that handles rendering and texture | |
| 178 * management on a particular display. Normally there is only one, but some | |
| 179 * drivers may have several available with different capabilities. | |
| 180 * | |
| 181 * There may be none if SDL was compiled without render support. | |
| 182 * | |
| 183 * \returns the number of built in render drivers. | |
| 184 * | |
| 185 * \threadsafety It is safe to call this function from any thread. | |
| 186 * | |
| 187 * \since This function is available since SDL 3.2.0. | |
| 188 * | |
| 189 * \sa SDL_CreateRenderer | |
| 190 * \sa SDL_GetRenderDriver | |
| 191 */ | |
| 192 extern SDL_DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); | |
| 193 | |
| 194 /** | |
| 195 * Use this function to get the name of a built in 2D rendering driver. | |
| 196 * | |
| 197 * The list of rendering drivers is given in the order that they are normally | |
| 198 * initialized by default; the drivers that seem more reasonable to choose | |
| 199 * first (as far as the SDL developers believe) are earlier in the list. | |
| 200 * | |
| 201 * The names of drivers are all simple, low-ASCII identifiers, like "opengl", | |
| 202 * "direct3d12" or "metal". These never have Unicode characters, and are not | |
| 203 * meant to be proper names. | |
| 204 * | |
| 205 * \param index the index of the rendering driver; the value ranges from 0 to | |
| 206 * SDL_GetNumRenderDrivers() - 1. | |
| 207 * \returns the name of the rendering driver at the requested index, or NULL | |
| 208 * if an invalid index was specified. | |
| 209 * | |
| 210 * \threadsafety It is safe to call this function from any thread. | |
| 211 * | |
| 212 * \since This function is available since SDL 3.2.0. | |
| 213 * | |
| 214 * \sa SDL_GetNumRenderDrivers | |
| 215 */ | |
| 216 extern SDL_DECLSPEC const char * SDLCALL SDL_GetRenderDriver(int index); | |
| 217 | |
| 218 /** | |
| 219 * Create a window and default renderer. | |
| 220 * | |
| 221 * \param title the title of the window, in UTF-8 encoding. | |
| 222 * \param width the width of the window. | |
| 223 * \param height the height of the window. | |
| 224 * \param window_flags the flags used to create the window (see | |
| 225 * SDL_CreateWindow()). | |
| 226 * \param window a pointer filled with the window, or NULL on error. | |
| 227 * \param renderer a pointer filled with the renderer, or NULL on error. | |
| 228 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 229 * information. | |
| 230 * | |
| 231 * \threadsafety This function should only be called on the main thread. | |
| 232 * | |
| 233 * \since This function is available since SDL 3.2.0. | |
| 234 * | |
| 235 * \sa SDL_CreateRenderer | |
| 236 * \sa SDL_CreateWindow | |
| 237 */ | |
| 238 extern SDL_DECLSPEC bool SDLCALL SDL_CreateWindowAndRenderer(const char *title, int width, int height, SDL_WindowFlags window_flags, SDL_Window **window, SDL_Renderer **renderer); | |
| 239 | |
| 240 /** | |
| 241 * Create a 2D rendering context for a window. | |
| 242 * | |
| 243 * If you want a specific renderer, you can specify its name here. A list of | |
| 244 * available renderers can be obtained by calling SDL_GetRenderDriver() | |
| 245 * multiple times, with indices from 0 to SDL_GetNumRenderDrivers()-1. If you | |
| 246 * don't need a specific renderer, specify NULL and SDL will attempt to choose | |
| 247 * the best option for you, based on what is available on the user's system. | |
| 248 * | |
| 249 * If `name` is a comma-separated list, SDL will try each name, in the order | |
| 250 * listed, until one succeeds or all of them fail. | |
| 251 * | |
| 252 * By default the rendering size matches the window size in pixels, but you | |
| 253 * can call SDL_SetRenderLogicalPresentation() to change the content size and | |
| 254 * scaling options. | |
| 255 * | |
| 256 * \param window the window where rendering is displayed. | |
| 257 * \param name the name of the rendering driver to initialize, or NULL to let | |
| 258 * SDL choose one. | |
| 259 * \returns a valid rendering context or NULL if there was an error; call | |
| 260 * SDL_GetError() for more information. | |
| 261 * | |
| 262 * \threadsafety This function should only be called on the main thread. | |
| 263 * | |
| 264 * \since This function is available since SDL 3.2.0. | |
| 265 * | |
| 266 * \sa SDL_CreateRendererWithProperties | |
| 267 * \sa SDL_CreateSoftwareRenderer | |
| 268 * \sa SDL_DestroyRenderer | |
| 269 * \sa SDL_GetNumRenderDrivers | |
| 270 * \sa SDL_GetRenderDriver | |
| 271 * \sa SDL_GetRendererName | |
| 272 */ | |
| 273 extern SDL_DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window *window, const char *name); | |
| 274 | |
| 275 /** | |
| 276 * Create a 2D rendering context for a window, with the specified properties. | |
| 277 * | |
| 278 * These are the supported properties: | |
| 279 * | |
| 280 * - `SDL_PROP_RENDERER_CREATE_NAME_STRING`: the name of the rendering driver | |
| 281 * to use, if a specific one is desired | |
| 282 * - `SDL_PROP_RENDERER_CREATE_WINDOW_POINTER`: the window where rendering is | |
| 283 * displayed, required if this isn't a software renderer using a surface | |
| 284 * - `SDL_PROP_RENDERER_CREATE_SURFACE_POINTER`: the surface where rendering | |
| 285 * is displayed, if you want a software renderer without a window | |
| 286 * - `SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER`: an SDL_Colorspace | |
| 287 * value describing the colorspace for output to the display, defaults to | |
| 288 * SDL_COLORSPACE_SRGB. The direct3d11, direct3d12, and metal renderers | |
| 289 * support SDL_COLORSPACE_SRGB_LINEAR, which is a linear color space and | |
| 290 * supports HDR output. If you select SDL_COLORSPACE_SRGB_LINEAR, drawing | |
| 291 * still uses the sRGB colorspace, but values can go beyond 1.0 and float | |
| 292 * (linear) format textures can be used for HDR content. | |
| 293 * - `SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER`: non-zero if you want | |
| 294 * present synchronized with the refresh rate. This property can take any | |
| 295 * value that is supported by SDL_SetRenderVSync() for the renderer. | |
| 296 * | |
| 297 * With the SDL GPU renderer (since SDL 3.4.0): | |
| 298 * | |
| 299 * - `SDL_PROP_RENDERER_CREATE_GPU_DEVICE_POINTER`: the device to use with the | |
| 300 * renderer, optional. | |
| 301 * - `SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN`: the app is able to | |
| 302 * provide SPIR-V shaders to SDL_GPURenderState, optional. | |
| 303 * - `SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN`: the app is able to | |
| 304 * provide DXIL shaders to SDL_GPURenderState, optional. | |
| 305 * - `SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN`: the app is able to | |
| 306 * provide MSL shaders to SDL_GPURenderState, optional. | |
| 307 * | |
| 308 * With the vulkan renderer: | |
| 309 * | |
| 310 * - `SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER`: the VkInstance to use | |
| 311 * with the renderer, optional. | |
| 312 * - `SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER`: the VkSurfaceKHR to use | |
| 313 * with the renderer, optional. | |
| 314 * - `SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER`: the | |
| 315 * VkPhysicalDevice to use with the renderer, optional. | |
| 316 * - `SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER`: the VkDevice to use | |
| 317 * with the renderer, optional. | |
| 318 * - `SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER`: the | |
| 319 * queue family index used for rendering. | |
| 320 * - `SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER`: the | |
| 321 * queue family index used for presentation. | |
| 322 * | |
| 323 * \param props the properties to use. | |
| 324 * \returns a valid rendering context or NULL if there was an error; call | |
| 325 * SDL_GetError() for more information. | |
| 326 * | |
| 327 * \threadsafety This function should only be called on the main thread. | |
| 328 * | |
| 329 * \since This function is available since SDL 3.2.0. | |
| 330 * | |
| 331 * \sa SDL_CreateProperties | |
| 332 * \sa SDL_CreateRenderer | |
| 333 * \sa SDL_CreateSoftwareRenderer | |
| 334 * \sa SDL_DestroyRenderer | |
| 335 * \sa SDL_GetRendererName | |
| 336 */ | |
| 337 extern SDL_DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRendererWithProperties(SDL_PropertiesID props); | |
| 338 | |
| 339 #define SDL_PROP_RENDERER_CREATE_NAME_STRING "SDL.renderer.create.name" | |
| 340 #define SDL_PROP_RENDERER_CREATE_WINDOW_POINTER "SDL.renderer.create.window" | |
| 341 #define SDL_PROP_RENDERER_CREATE_SURFACE_POINTER "SDL.renderer.create.surface" | |
| 342 #define SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER "SDL.renderer.create.output_colorspace" | |
| 343 #define SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER "SDL.renderer.create.present_vsync" | |
| 344 #define SDL_PROP_RENDERER_CREATE_GPU_DEVICE_POINTER "SDL.renderer.create.gpu.device" | |
| 345 #define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN "SDL.renderer.create.gpu.shaders_spirv" | |
| 346 #define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN "SDL.renderer.create.gpu.shaders_dxil" | |
| 347 #define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN "SDL.renderer.create.gpu.shaders_msl" | |
| 348 #define SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER "SDL.renderer.create.vulkan.instance" | |
| 349 #define SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER "SDL.renderer.create.vulkan.surface" | |
| 350 #define SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER "SDL.renderer.create.vulkan.physical_device" | |
| 351 #define SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER "SDL.renderer.create.vulkan.device" | |
| 352 #define SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER "SDL.renderer.create.vulkan.graphics_queue_family_index" | |
| 353 #define SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER "SDL.renderer.create.vulkan.present_queue_family_index" | |
| 354 | |
| 355 /** | |
| 356 * Create a 2D GPU rendering context. | |
| 357 * | |
| 358 * The GPU device to use is passed in as a parameter. If this is NULL, then a | |
| 359 * device will be created normally and can be retrieved using | |
| 360 * SDL_GetGPURendererDevice(). | |
| 361 * | |
| 362 * The window to use is passed in as a parameter. If this is NULL, then this | |
| 363 * will become an offscreen renderer. In that case, you should call | |
| 364 * SDL_SetRenderTarget() to setup rendering to a texture, and then call | |
| 365 * SDL_RenderPresent() normally to complete drawing a frame. | |
| 366 * | |
| 367 * \param device the GPU device to use with the renderer, or NULL to create a | |
| 368 * device. | |
| 369 * \param window the window where rendering is displayed, or NULL to create an | |
| 370 * offscreen renderer. | |
| 371 * \returns a valid rendering context or NULL if there was an error; call | |
| 372 * SDL_GetError() for more information. | |
| 373 * | |
| 374 * \threadsafety If this function is called with a valid GPU device, it should | |
| 375 * be called on the thread that created the device. If this | |
| 376 * function is called with a valid window, it should be called | |
| 377 * on the thread that created the window. | |
| 378 * | |
| 379 * \since This function is available since SDL 3.4.0. | |
| 380 * | |
| 381 * \sa SDL_CreateRendererWithProperties | |
| 382 * \sa SDL_GetGPURendererDevice | |
| 383 * \sa SDL_CreateGPUShader | |
| 384 * \sa SDL_CreateGPURenderState | |
| 385 * \sa SDL_SetGPURenderState | |
| 386 */ | |
| 387 extern SDL_DECLSPEC SDL_Renderer * SDLCALL SDL_CreateGPURenderer(SDL_GPUDevice *device, SDL_Window *window); | |
| 388 | |
| 389 /** | |
| 390 * Return the GPU device used by a renderer. | |
| 391 * | |
| 392 * \param renderer the rendering context. | |
| 393 * \returns the GPU device used by the renderer, or NULL if the renderer is | |
| 394 * not a GPU renderer; call SDL_GetError() for more information. | |
| 395 * | |
| 396 * \threadsafety It is safe to call this function from any thread. | |
| 397 * | |
| 398 * \since This function is available since SDL 3.4.0. | |
| 399 */ | |
| 400 extern SDL_DECLSPEC SDL_GPUDevice * SDLCALL SDL_GetGPURendererDevice(SDL_Renderer *renderer); | |
| 401 | |
| 402 /** | |
| 403 * Create a 2D software rendering context for a surface. | |
| 404 * | |
| 405 * Two other API which can be used to create SDL_Renderer: | |
| 406 * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ | |
| 407 * create a software renderer, but they are intended to be used with an | |
| 408 * SDL_Window as the final destination and not an SDL_Surface. | |
| 409 * | |
| 410 * \param surface the SDL_Surface structure representing the surface where | |
| 411 * rendering is done. | |
| 412 * \returns a valid rendering context or NULL if there was an error; call | |
| 413 * SDL_GetError() for more information. | |
| 414 * | |
| 415 * \threadsafety It is safe to call this function from any thread. | |
| 416 * | |
| 417 * \since This function is available since SDL 3.2.0. | |
| 418 * | |
| 419 * \sa SDL_DestroyRenderer | |
| 420 */ | |
| 421 extern SDL_DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface *surface); | |
| 422 | |
| 423 /** | |
| 424 * Get the renderer associated with a window. | |
| 425 * | |
| 426 * \param window the window to query. | |
| 427 * \returns the rendering context on success or NULL on failure; call | |
| 428 * SDL_GetError() for more information. | |
| 429 * | |
| 430 * \threadsafety It is safe to call this function from any thread. | |
| 431 * | |
| 432 * \since This function is available since SDL 3.2.0. | |
| 433 */ | |
| 434 extern SDL_DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window *window); | |
| 435 | |
| 436 /** | |
| 437 * Get the window associated with a renderer. | |
| 438 * | |
| 439 * \param renderer the renderer to query. | |
| 440 * \returns the window on success or NULL on failure; call SDL_GetError() for | |
| 441 * more information. | |
| 442 * | |
| 443 * \threadsafety It is safe to call this function from any thread. | |
| 444 * | |
| 445 * \since This function is available since SDL 3.2.0. | |
| 446 */ | |
| 447 extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_GetRenderWindow(SDL_Renderer *renderer); | |
| 448 | |
| 449 /** | |
| 450 * Get the name of a renderer. | |
| 451 * | |
| 452 * \param renderer the rendering context. | |
| 453 * \returns the name of the selected renderer, or NULL on failure; call | |
| 454 * SDL_GetError() for more information. | |
| 455 * | |
| 456 * \threadsafety It is safe to call this function from any thread. | |
| 457 * | |
| 458 * \since This function is available since SDL 3.2.0. | |
| 459 * | |
| 460 * \sa SDL_CreateRenderer | |
| 461 * \sa SDL_CreateRendererWithProperties | |
| 462 */ | |
| 463 extern SDL_DECLSPEC const char * SDLCALL SDL_GetRendererName(SDL_Renderer *renderer); | |
| 464 | |
| 465 /** | |
| 466 * Get the properties associated with a renderer. | |
| 467 * | |
| 468 * The following read-only properties are provided by SDL: | |
| 469 * | |
| 470 * - `SDL_PROP_RENDERER_NAME_STRING`: the name of the rendering driver | |
| 471 * - `SDL_PROP_RENDERER_WINDOW_POINTER`: the window where rendering is | |
| 472 * displayed, if any | |
| 473 * - `SDL_PROP_RENDERER_SURFACE_POINTER`: the surface where rendering is | |
| 474 * displayed, if this is a software renderer without a window | |
| 475 * - `SDL_PROP_RENDERER_VSYNC_NUMBER`: the current vsync setting | |
| 476 * - `SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER`: the maximum texture width | |
| 477 * and height | |
| 478 * - `SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER`: a (const SDL_PixelFormat *) | |
| 479 * array of pixel formats, terminated with SDL_PIXELFORMAT_UNKNOWN, | |
| 480 * representing the available texture formats for this renderer. | |
| 481 * - `SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN`: true if the renderer | |
| 482 * supports SDL_TEXTURE_ADDRESS_WRAP on non-power-of-two textures. | |
| 483 * - `SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER`: an SDL_Colorspace value | |
| 484 * describing the colorspace for output to the display, defaults to | |
| 485 * SDL_COLORSPACE_SRGB. | |
| 486 * - `SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN`: true if the output colorspace is | |
| 487 * SDL_COLORSPACE_SRGB_LINEAR and the renderer is showing on a display with | |
| 488 * HDR enabled. This property can change dynamically when | |
| 489 * SDL_EVENT_WINDOW_HDR_STATE_CHANGED is sent. | |
| 490 * - `SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT`: the value of SDR white in the | |
| 491 * SDL_COLORSPACE_SRGB_LINEAR colorspace. When HDR is enabled, this value is | |
| 492 * automatically multiplied into the color scale. This property can change | |
| 493 * dynamically when SDL_EVENT_WINDOW_HDR_STATE_CHANGED is sent. | |
| 494 * - `SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT`: the additional high dynamic range | |
| 495 * that can be displayed, in terms of the SDR white point. When HDR is not | |
| 496 * enabled, this will be 1.0. This property can change dynamically when | |
| 497 * SDL_EVENT_WINDOW_HDR_STATE_CHANGED is sent. | |
| 498 * | |
| 499 * With the direct3d renderer: | |
| 500 * | |
| 501 * - `SDL_PROP_RENDERER_D3D9_DEVICE_POINTER`: the IDirect3DDevice9 associated | |
| 502 * with the renderer | |
| 503 * | |
| 504 * With the direct3d11 renderer: | |
| 505 * | |
| 506 * - `SDL_PROP_RENDERER_D3D11_DEVICE_POINTER`: the ID3D11Device associated | |
| 507 * with the renderer | |
| 508 * - `SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER`: the IDXGISwapChain1 | |
| 509 * associated with the renderer. This may change when the window is resized. | |
| 510 * | |
| 511 * With the direct3d12 renderer: | |
| 512 * | |
| 513 * - `SDL_PROP_RENDERER_D3D12_DEVICE_POINTER`: the ID3D12Device associated | |
| 514 * with the renderer | |
| 515 * - `SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER`: the IDXGISwapChain4 | |
| 516 * associated with the renderer. | |
| 517 * - `SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER`: the ID3D12CommandQueue | |
| 518 * associated with the renderer | |
| 519 * | |
| 520 * With the vulkan renderer: | |
| 521 * | |
| 522 * - `SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER`: the VkInstance associated | |
| 523 * with the renderer | |
| 524 * - `SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER`: the VkSurfaceKHR associated | |
| 525 * with the renderer | |
| 526 * - `SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER`: the VkPhysicalDevice | |
| 527 * associated with the renderer | |
| 528 * - `SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER`: the VkDevice associated with | |
| 529 * the renderer | |
| 530 * - `SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER`: the queue | |
| 531 * family index used for rendering | |
| 532 * - `SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER`: the queue | |
| 533 * family index used for presentation | |
| 534 * - `SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER`: the number of | |
| 535 * swapchain images, or potential frames in flight, used by the Vulkan | |
| 536 * renderer | |
| 537 * | |
| 538 * With the gpu renderer: | |
| 539 * | |
| 540 * - `SDL_PROP_RENDERER_GPU_DEVICE_POINTER`: the SDL_GPUDevice associated with | |
| 541 * the renderer | |
| 542 * | |
| 543 * \param renderer the rendering context. | |
| 544 * \returns a valid property ID on success or 0 on failure; call | |
| 545 * SDL_GetError() for more information. | |
| 546 * | |
| 547 * \threadsafety It is safe to call this function from any thread. | |
| 548 * | |
| 549 * \since This function is available since SDL 3.2.0. | |
| 550 */ | |
| 551 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetRendererProperties(SDL_Renderer *renderer); | |
| 552 | |
| 553 #define SDL_PROP_RENDERER_NAME_STRING "SDL.renderer.name" | |
| 554 #define SDL_PROP_RENDERER_WINDOW_POINTER "SDL.renderer.window" | |
| 555 #define SDL_PROP_RENDERER_SURFACE_POINTER "SDL.renderer.surface" | |
| 556 #define SDL_PROP_RENDERER_VSYNC_NUMBER "SDL.renderer.vsync" | |
| 557 #define SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER "SDL.renderer.max_texture_size" | |
| 558 #define SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER "SDL.renderer.texture_formats" | |
| 559 #define SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN "SDL.renderer.texture_wrapping" | |
| 560 #define SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER "SDL.renderer.output_colorspace" | |
| 561 #define SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN "SDL.renderer.HDR_enabled" | |
| 562 #define SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT "SDL.renderer.SDR_white_point" | |
| 563 #define SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT "SDL.renderer.HDR_headroom" | |
| 564 #define SDL_PROP_RENDERER_D3D9_DEVICE_POINTER "SDL.renderer.d3d9.device" | |
| 565 #define SDL_PROP_RENDERER_D3D11_DEVICE_POINTER "SDL.renderer.d3d11.device" | |
| 566 #define SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER "SDL.renderer.d3d11.swap_chain" | |
| 567 #define SDL_PROP_RENDERER_D3D12_DEVICE_POINTER "SDL.renderer.d3d12.device" | |
| 568 #define SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER "SDL.renderer.d3d12.swap_chain" | |
| 569 #define SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER "SDL.renderer.d3d12.command_queue" | |
| 570 #define SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER "SDL.renderer.vulkan.instance" | |
| 571 #define SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER "SDL.renderer.vulkan.surface" | |
| 572 #define SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER "SDL.renderer.vulkan.physical_device" | |
| 573 #define SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER "SDL.renderer.vulkan.device" | |
| 574 #define SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER "SDL.renderer.vulkan.graphics_queue_family_index" | |
| 575 #define SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER "SDL.renderer.vulkan.present_queue_family_index" | |
| 576 #define SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER "SDL.renderer.vulkan.swapchain_image_count" | |
| 577 #define SDL_PROP_RENDERER_GPU_DEVICE_POINTER "SDL.renderer.gpu.device" | |
| 578 | |
| 579 /** | |
| 580 * Get the output size in pixels of a rendering context. | |
| 581 * | |
| 582 * This returns the true output size in pixels, ignoring any render targets or | |
| 583 * logical size and presentation. | |
| 584 * | |
| 585 * For the output size of the current rendering target, with logical size | |
| 586 * adjustments, use SDL_GetCurrentRenderOutputSize() instead. | |
| 587 * | |
| 588 * \param renderer the rendering context. | |
| 589 * \param w a pointer filled in with the width in pixels. | |
| 590 * \param h a pointer filled in with the height in pixels. | |
| 591 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 592 * information. | |
| 593 * | |
| 594 * \threadsafety This function should only be called on the main thread. | |
| 595 * | |
| 596 * \since This function is available since SDL 3.2.0. | |
| 597 * | |
| 598 * \sa SDL_GetCurrentRenderOutputSize | |
| 599 */ | |
| 600 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderOutputSize(SDL_Renderer *renderer, int *w, int *h); | |
| 601 | |
| 602 /** | |
| 603 * Get the current output size in pixels of a rendering context. | |
| 604 * | |
| 605 * If a rendering target is active, this will return the size of the rendering | |
| 606 * target in pixels, otherwise return the value of SDL_GetRenderOutputSize(). | |
| 607 * | |
| 608 * Rendering target or not, the output will be adjusted by the current logical | |
| 609 * presentation state, dictated by SDL_SetRenderLogicalPresentation(). | |
| 610 * | |
| 611 * \param renderer the rendering context. | |
| 612 * \param w a pointer filled in with the current width. | |
| 613 * \param h a pointer filled in with the current height. | |
| 614 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 615 * information. | |
| 616 * | |
| 617 * \threadsafety This function should only be called on the main thread. | |
| 618 * | |
| 619 * \since This function is available since SDL 3.2.0. | |
| 620 * | |
| 621 * \sa SDL_GetRenderOutputSize | |
| 622 */ | |
| 623 extern SDL_DECLSPEC bool SDLCALL SDL_GetCurrentRenderOutputSize(SDL_Renderer *renderer, int *w, int *h); | |
| 624 | |
| 625 /** | |
| 626 * Create a texture for a rendering context. | |
| 627 * | |
| 628 * The contents of a texture when first created are not defined. | |
| 629 * | |
| 630 * \param renderer the rendering context. | |
| 631 * \param format one of the enumerated values in SDL_PixelFormat. | |
| 632 * \param access one of the enumerated values in SDL_TextureAccess. | |
| 633 * \param w the width of the texture in pixels. | |
| 634 * \param h the height of the texture in pixels. | |
| 635 * \returns the created texture or NULL on failure; call SDL_GetError() for | |
| 636 * more information. | |
| 637 * | |
| 638 * \threadsafety This function should only be called on the main thread. | |
| 639 * | |
| 640 * \since This function is available since SDL 3.2.0. | |
| 641 * | |
| 642 * \sa SDL_CreateTextureFromSurface | |
| 643 * \sa SDL_CreateTextureWithProperties | |
| 644 * \sa SDL_DestroyTexture | |
| 645 * \sa SDL_GetTextureSize | |
| 646 * \sa SDL_UpdateTexture | |
| 647 */ | |
| 648 extern SDL_DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer *renderer, SDL_PixelFormat format, SDL_TextureAccess access, int w, int h); | |
| 649 | |
| 650 /** | |
| 651 * Create a texture from an existing surface. | |
| 652 * | |
| 653 * The surface is not modified or freed by this function. | |
| 654 * | |
| 655 * The SDL_TextureAccess hint for the created texture is | |
| 656 * `SDL_TEXTUREACCESS_STATIC`. | |
| 657 * | |
| 658 * The pixel format of the created texture may be different from the pixel | |
| 659 * format of the surface, and can be queried using the | |
| 660 * SDL_PROP_TEXTURE_FORMAT_NUMBER property. | |
| 661 * | |
| 662 * \param renderer the rendering context. | |
| 663 * \param surface the SDL_Surface structure containing pixel data used to fill | |
| 664 * the texture. | |
| 665 * \returns the created texture or NULL on failure; call SDL_GetError() for | |
| 666 * more information. | |
| 667 * | |
| 668 * \threadsafety This function should only be called on the main thread. | |
| 669 * | |
| 670 * \since This function is available since SDL 3.2.0. | |
| 671 * | |
| 672 * \sa SDL_CreateTexture | |
| 673 * \sa SDL_CreateTextureWithProperties | |
| 674 * \sa SDL_DestroyTexture | |
| 675 */ | |
| 676 extern SDL_DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer *renderer, SDL_Surface *surface); | |
| 677 | |
| 678 /** | |
| 679 * Create a texture for a rendering context with the specified properties. | |
| 680 * | |
| 681 * These are the supported properties: | |
| 682 * | |
| 683 * - `SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER`: an SDL_Colorspace value | |
| 684 * describing the texture colorspace, defaults to SDL_COLORSPACE_SRGB_LINEAR | |
| 685 * for floating point textures, SDL_COLORSPACE_HDR10 for 10-bit textures, | |
| 686 * SDL_COLORSPACE_SRGB for other RGB textures and SDL_COLORSPACE_JPEG for | |
| 687 * YUV textures. | |
| 688 * - `SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER`: one of the enumerated values in | |
| 689 * SDL_PixelFormat, defaults to the best RGBA format for the renderer | |
| 690 * - `SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER`: one of the enumerated values in | |
| 691 * SDL_TextureAccess, defaults to SDL_TEXTUREACCESS_STATIC | |
| 692 * - `SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER`: the width of the texture in | |
| 693 * pixels, required | |
| 694 * - `SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER`: the height of the texture in | |
| 695 * pixels, required | |
| 696 * - `SDL_PROP_TEXTURE_CREATE_PALETTE_POINTER`: an SDL_Palette to use with | |
| 697 * palettized texture formats. This can be set later with | |
| 698 * SDL_SetTexturePalette() | |
| 699 * - `SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT`: for HDR10 and floating | |
| 700 * point textures, this defines the value of 100% diffuse white, with higher | |
| 701 * values being displayed in the High Dynamic Range headroom. This defaults | |
| 702 * to 100 for HDR10 textures and 1.0 for floating point textures. | |
| 703 * - `SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT`: for HDR10 and floating | |
| 704 * point textures, this defines the maximum dynamic range used by the | |
| 705 * content, in terms of the SDR white point. This would be equivalent to | |
| 706 * maxCLL / SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT for HDR10 content. | |
| 707 * If this is defined, any values outside the range supported by the display | |
| 708 * will be scaled into the available HDR headroom, otherwise they are | |
| 709 * clipped. | |
| 710 * | |
| 711 * With the direct3d11 renderer: | |
| 712 * | |
| 713 * - `SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER`: the ID3D11Texture2D | |
| 714 * associated with the texture, if you want to wrap an existing texture. | |
| 715 * - `SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER`: the ID3D11Texture2D | |
| 716 * associated with the U plane of a YUV texture, if you want to wrap an | |
| 717 * existing texture. | |
| 718 * - `SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER`: the ID3D11Texture2D | |
| 719 * associated with the V plane of a YUV texture, if you want to wrap an | |
| 720 * existing texture. | |
| 721 * | |
| 722 * With the direct3d12 renderer: | |
| 723 * | |
| 724 * - `SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER`: the ID3D12Resource | |
| 725 * associated with the texture, if you want to wrap an existing texture. | |
| 726 * - `SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER`: the ID3D12Resource | |
| 727 * associated with the U plane of a YUV texture, if you want to wrap an | |
| 728 * existing texture. | |
| 729 * - `SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER`: the ID3D12Resource | |
| 730 * associated with the V plane of a YUV texture, if you want to wrap an | |
| 731 * existing texture. | |
| 732 * | |
| 733 * With the metal renderer: | |
| 734 * | |
| 735 * - `SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER`: the CVPixelBufferRef | |
| 736 * associated with the texture, if you want to create a texture from an | |
| 737 * existing pixel buffer. | |
| 738 * | |
| 739 * With the opengl renderer: | |
| 740 * | |
| 741 * - `SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER`: the GLuint texture | |
| 742 * associated with the texture, if you want to wrap an existing texture. | |
| 743 * - `SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER`: the GLuint texture | |
| 744 * associated with the UV plane of an NV12 texture, if you want to wrap an | |
| 745 * existing texture. | |
| 746 * - `SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER`: the GLuint texture | |
| 747 * associated with the U plane of a YUV texture, if you want to wrap an | |
| 748 * existing texture. | |
| 749 * - `SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER`: the GLuint texture | |
| 750 * associated with the V plane of a YUV texture, if you want to wrap an | |
| 751 * existing texture. | |
| 752 * | |
| 753 * With the opengles2 renderer: | |
| 754 * | |
| 755 * - `SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER`: the GLuint texture | |
| 756 * associated with the texture, if you want to wrap an existing texture. | |
| 757 * - `SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER`: the GLuint texture | |
| 758 * associated with the texture, if you want to wrap an existing texture. | |
| 759 * - `SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER`: the GLuint texture | |
| 760 * associated with the UV plane of an NV12 texture, if you want to wrap an | |
| 761 * existing texture. | |
| 762 * - `SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER`: the GLuint texture | |
| 763 * associated with the U plane of a YUV texture, if you want to wrap an | |
| 764 * existing texture. | |
| 765 * - `SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER`: the GLuint texture | |
| 766 * associated with the V plane of a YUV texture, if you want to wrap an | |
| 767 * existing texture. | |
| 768 * | |
| 769 * With the vulkan renderer: | |
| 770 * | |
| 771 * - `SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER`: the VkImage associated | |
| 772 * with the texture, if you want to wrap an existing texture. | |
| 773 * - `SDL_PROP_TEXTURE_CREATE_VULKAN_LAYOUT_NUMBER`: the VkImageLayout for the | |
| 774 * VkImage, defaults to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL. | |
| 775 * | |
| 776 * With the GPU renderer: | |
| 777 * | |
| 778 * - `SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER`: the SDL_GPUTexture | |
| 779 * associated with the texture, if you want to wrap an existing texture. | |
| 780 * - `SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_UV_NUMBER`: the SDL_GPUTexture | |
| 781 * associated with the UV plane of an NV12 texture, if you want to wrap an | |
| 782 * existing texture. | |
| 783 * - `SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_U_NUMBER`: the SDL_GPUTexture | |
| 784 * associated with the U plane of a YUV texture, if you want to wrap an | |
| 785 * existing texture. | |
| 786 * - `SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_V_NUMBER`: the SDL_GPUTexture | |
| 787 * associated with the V plane of a YUV texture, if you want to wrap an | |
| 788 * existing texture. | |
| 789 * | |
| 790 * \param renderer the rendering context. | |
| 791 * \param props the properties to use. | |
| 792 * \returns the created texture or NULL on failure; call SDL_GetError() for | |
| 793 * more information. | |
| 794 * | |
| 795 * \threadsafety This function should only be called on the main thread. | |
| 796 * | |
| 797 * \since This function is available since SDL 3.2.0. | |
| 798 * | |
| 799 * \sa SDL_CreateProperties | |
| 800 * \sa SDL_CreateTexture | |
| 801 * \sa SDL_CreateTextureFromSurface | |
| 802 * \sa SDL_DestroyTexture | |
| 803 * \sa SDL_GetTextureSize | |
| 804 * \sa SDL_UpdateTexture | |
| 805 */ | |
| 806 extern SDL_DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureWithProperties(SDL_Renderer *renderer, SDL_PropertiesID props); | |
| 807 | |
| 808 #define SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER "SDL.texture.create.colorspace" | |
| 809 #define SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER "SDL.texture.create.format" | |
| 810 #define SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER "SDL.texture.create.access" | |
| 811 #define SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER "SDL.texture.create.width" | |
| 812 #define SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER "SDL.texture.create.height" | |
| 813 #define SDL_PROP_TEXTURE_CREATE_PALETTE_POINTER "SDL.texture.create.palette" | |
| 814 #define SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT "SDL.texture.create.SDR_white_point" | |
| 815 #define SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT "SDL.texture.create.HDR_headroom" | |
| 816 #define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER "SDL.texture.create.d3d11.texture" | |
| 817 #define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER "SDL.texture.create.d3d11.texture_u" | |
| 818 #define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER "SDL.texture.create.d3d11.texture_v" | |
| 819 #define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER "SDL.texture.create.d3d12.texture" | |
| 820 #define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER "SDL.texture.create.d3d12.texture_u" | |
| 821 #define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER "SDL.texture.create.d3d12.texture_v" | |
| 822 #define SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER "SDL.texture.create.metal.pixelbuffer" | |
| 823 #define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER "SDL.texture.create.opengl.texture" | |
| 824 #define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER "SDL.texture.create.opengl.texture_uv" | |
| 825 #define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER "SDL.texture.create.opengl.texture_u" | |
| 826 #define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER "SDL.texture.create.opengl.texture_v" | |
| 827 #define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER "SDL.texture.create.opengles2.texture" | |
| 828 #define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER "SDL.texture.create.opengles2.texture_uv" | |
| 829 #define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER "SDL.texture.create.opengles2.texture_u" | |
| 830 #define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER "SDL.texture.create.opengles2.texture_v" | |
| 831 #define SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER "SDL.texture.create.vulkan.texture" | |
| 832 #define SDL_PROP_TEXTURE_CREATE_VULKAN_LAYOUT_NUMBER "SDL.texture.create.vulkan.layout" | |
| 833 #define SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER "SDL.texture.create.gpu.texture" | |
| 834 #define SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_UV_POINTER "SDL.texture.create.gpu.texture_uv" | |
| 835 #define SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_U_POINTER "SDL.texture.create.gpu.texture_u" | |
| 836 #define SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_V_POINTER "SDL.texture.create.gpu.texture_v" | |
| 837 | |
| 838 /** | |
| 839 * Get the properties associated with a texture. | |
| 840 * | |
| 841 * The following read-only properties are provided by SDL: | |
| 842 * | |
| 843 * - `SDL_PROP_TEXTURE_COLORSPACE_NUMBER`: an SDL_Colorspace value describing | |
| 844 * the texture colorspace. | |
| 845 * - `SDL_PROP_TEXTURE_FORMAT_NUMBER`: one of the enumerated values in | |
| 846 * SDL_PixelFormat. | |
| 847 * - `SDL_PROP_TEXTURE_ACCESS_NUMBER`: one of the enumerated values in | |
| 848 * SDL_TextureAccess. | |
| 849 * - `SDL_PROP_TEXTURE_WIDTH_NUMBER`: the width of the texture in pixels. | |
| 850 * - `SDL_PROP_TEXTURE_HEIGHT_NUMBER`: the height of the texture in pixels. | |
| 851 * - `SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT`: for HDR10 and floating point | |
| 852 * textures, this defines the value of 100% diffuse white, with higher | |
| 853 * values being displayed in the High Dynamic Range headroom. This defaults | |
| 854 * to 100 for HDR10 textures and 1.0 for other textures. | |
| 855 * - `SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT`: for HDR10 and floating point | |
| 856 * textures, this defines the maximum dynamic range used by the content, in | |
| 857 * terms of the SDR white point. If this is defined, any values outside the | |
| 858 * range supported by the display will be scaled into the available HDR | |
| 859 * headroom, otherwise they are clipped. This defaults to 1.0 for SDR | |
| 860 * textures, 4.0 for HDR10 textures, and no default for floating point | |
| 861 * textures. | |
| 862 * | |
| 863 * With the direct3d11 renderer: | |
| 864 * | |
| 865 * - `SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER`: the ID3D11Texture2D associated | |
| 866 * with the texture | |
| 867 * - `SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER`: the ID3D11Texture2D | |
| 868 * associated with the U plane of a YUV texture | |
| 869 * - `SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER`: the ID3D11Texture2D | |
| 870 * associated with the V plane of a YUV texture | |
| 871 * | |
| 872 * With the direct3d12 renderer: | |
| 873 * | |
| 874 * - `SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER`: the ID3D12Resource associated | |
| 875 * with the texture | |
| 876 * - `SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER`: the ID3D12Resource associated | |
| 877 * with the U plane of a YUV texture | |
| 878 * - `SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER`: the ID3D12Resource associated | |
| 879 * with the V plane of a YUV texture | |
| 880 * | |
| 881 * With the vulkan renderer: | |
| 882 * | |
| 883 * - `SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER`: the VkImage associated with the | |
| 884 * texture | |
| 885 * | |
| 886 * With the opengl renderer: | |
| 887 * | |
| 888 * - `SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER`: the GLuint texture associated | |
| 889 * with the texture | |
| 890 * - `SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER`: the GLuint texture | |
| 891 * associated with the UV plane of an NV12 texture | |
| 892 * - `SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER`: the GLuint texture associated | |
| 893 * with the U plane of a YUV texture | |
| 894 * - `SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER`: the GLuint texture associated | |
| 895 * with the V plane of a YUV texture | |
| 896 * - `SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER`: the GLenum for the | |
| 897 * texture target (`GL_TEXTURE_2D`, `GL_TEXTURE_RECTANGLE_ARB`, etc) | |
| 898 * - `SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT`: the texture coordinate width of | |
| 899 * the texture (0.0 - 1.0) | |
| 900 * - `SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT`: the texture coordinate height of | |
| 901 * the texture (0.0 - 1.0) | |
| 902 * | |
| 903 * With the opengles2 renderer: | |
| 904 * | |
| 905 * - `SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER`: the GLuint texture | |
| 906 * associated with the texture | |
| 907 * - `SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER`: the GLuint texture | |
| 908 * associated with the UV plane of an NV12 texture | |
| 909 * - `SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER`: the GLuint texture | |
| 910 * associated with the U plane of a YUV texture | |
| 911 * - `SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER`: the GLuint texture | |
| 912 * associated with the V plane of a YUV texture | |
| 913 * - `SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER`: the GLenum for the | |
| 914 * texture target (`GL_TEXTURE_2D`, `GL_TEXTURE_EXTERNAL_OES`, etc) | |
| 915 * | |
| 916 * With the gpu renderer: | |
| 917 * | |
| 918 * - `SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER`: the SDL_GPUTexture associated | |
| 919 * with the texture | |
| 920 * - `SDL_PROP_TEXTURE_GPU_TEXTURE_UV_POINTER`: the SDL_GPUTexture associated | |
| 921 * with the UV plane of an NV12 texture | |
| 922 * - `SDL_PROP_TEXTURE_GPU_TEXTURE_U_POINTER`: the SDL_GPUTexture associated | |
| 923 * with the U plane of a YUV texture | |
| 924 * - `SDL_PROP_TEXTURE_GPU_TEXTURE_V_POINTER`: the SDL_GPUTexture associated | |
| 925 * with the V plane of a YUV texture | |
| 926 * | |
| 927 * \param texture the texture to query. | |
| 928 * \returns a valid property ID on success or 0 on failure; call | |
| 929 * SDL_GetError() for more information. | |
| 930 * | |
| 931 * \threadsafety It is safe to call this function from any thread. | |
| 932 * | |
| 933 * \since This function is available since SDL 3.2.0. | |
| 934 */ | |
| 935 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetTextureProperties(SDL_Texture *texture); | |
| 936 | |
| 937 #define SDL_PROP_TEXTURE_COLORSPACE_NUMBER "SDL.texture.colorspace" | |
| 938 #define SDL_PROP_TEXTURE_FORMAT_NUMBER "SDL.texture.format" | |
| 939 #define SDL_PROP_TEXTURE_ACCESS_NUMBER "SDL.texture.access" | |
| 940 #define SDL_PROP_TEXTURE_WIDTH_NUMBER "SDL.texture.width" | |
| 941 #define SDL_PROP_TEXTURE_HEIGHT_NUMBER "SDL.texture.height" | |
| 942 #define SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT "SDL.texture.SDR_white_point" | |
| 943 #define SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT "SDL.texture.HDR_headroom" | |
| 944 #define SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER "SDL.texture.d3d11.texture" | |
| 945 #define SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER "SDL.texture.d3d11.texture_u" | |
| 946 #define SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER "SDL.texture.d3d11.texture_v" | |
| 947 #define SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER "SDL.texture.d3d12.texture" | |
| 948 #define SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER "SDL.texture.d3d12.texture_u" | |
| 949 #define SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER "SDL.texture.d3d12.texture_v" | |
| 950 #define SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER "SDL.texture.opengl.texture" | |
| 951 #define SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER "SDL.texture.opengl.texture_uv" | |
| 952 #define SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER "SDL.texture.opengl.texture_u" | |
| 953 #define SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER "SDL.texture.opengl.texture_v" | |
| 954 #define SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER "SDL.texture.opengl.target" | |
| 955 #define SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT "SDL.texture.opengl.tex_w" | |
| 956 #define SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT "SDL.texture.opengl.tex_h" | |
| 957 #define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER "SDL.texture.opengles2.texture" | |
| 958 #define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER "SDL.texture.opengles2.texture_uv" | |
| 959 #define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER "SDL.texture.opengles2.texture_u" | |
| 960 #define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER "SDL.texture.opengles2.texture_v" | |
| 961 #define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER "SDL.texture.opengles2.target" | |
| 962 #define SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER "SDL.texture.vulkan.texture" | |
| 963 #define SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER "SDL.texture.gpu.texture" | |
| 964 #define SDL_PROP_TEXTURE_GPU_TEXTURE_UV_POINTER "SDL.texture.gpu.texture_uv" | |
| 965 #define SDL_PROP_TEXTURE_GPU_TEXTURE_U_POINTER "SDL.texture.gpu.texture_u" | |
| 966 #define SDL_PROP_TEXTURE_GPU_TEXTURE_V_POINTER "SDL.texture.gpu.texture_v" | |
| 967 | |
| 968 /** | |
| 969 * Get the renderer that created an SDL_Texture. | |
| 970 * | |
| 971 * \param texture the texture to query. | |
| 972 * \returns a pointer to the SDL_Renderer that created the texture, or NULL on | |
| 973 * failure; call SDL_GetError() for more information. | |
| 974 * | |
| 975 * \threadsafety It is safe to call this function from any thread. | |
| 976 * | |
| 977 * \since This function is available since SDL 3.2.0. | |
| 978 */ | |
| 979 extern SDL_DECLSPEC SDL_Renderer * SDLCALL SDL_GetRendererFromTexture(SDL_Texture *texture); | |
| 980 | |
| 981 /** | |
| 982 * Get the size of a texture, as floating point values. | |
| 983 * | |
| 984 * \param texture the texture to query. | |
| 985 * \param w a pointer filled in with the width of the texture in pixels. This | |
| 986 * argument can be NULL if you don't need this information. | |
| 987 * \param h a pointer filled in with the height of the texture in pixels. This | |
| 988 * argument can be NULL if you don't need this information. | |
| 989 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 990 * information. | |
| 991 * | |
| 992 * \threadsafety This function should only be called on the main thread. | |
| 993 * | |
| 994 * \since This function is available since SDL 3.2.0. | |
| 995 */ | |
| 996 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureSize(SDL_Texture *texture, float *w, float *h); | |
| 997 | |
| 998 /** | |
| 999 * Set the palette used by a texture. | |
| 1000 * | |
| 1001 * Setting the palette keeps an internal reference to the palette, which can | |
| 1002 * be safely destroyed afterwards. | |
| 1003 * | |
| 1004 * A single palette can be shared with many textures. | |
| 1005 * | |
| 1006 * \param texture the texture to update. | |
| 1007 * \param palette the SDL_Palette structure to use. | |
| 1008 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1009 * information. | |
| 1010 * | |
| 1011 * \threadsafety This function should only be called on the main thread. | |
| 1012 * | |
| 1013 * \since This function is available since SDL 3.4.0. | |
| 1014 * | |
| 1015 * \sa SDL_CreatePalette | |
| 1016 * \sa SDL_GetTexturePalette | |
| 1017 */ | |
| 1018 extern SDL_DECLSPEC bool SDLCALL SDL_SetTexturePalette(SDL_Texture *texture, SDL_Palette *palette); | |
| 1019 | |
| 1020 /** | |
| 1021 * Get the palette used by a texture. | |
| 1022 * | |
| 1023 * \param texture the texture to query. | |
| 1024 * \returns a pointer to the palette used by the texture, or NULL if there is | |
| 1025 * no palette used. | |
| 1026 * | |
| 1027 * \threadsafety This function should only be called on the main thread. | |
| 1028 * | |
| 1029 * \since This function is available since SDL 3.4.0. | |
| 1030 * | |
| 1031 * \sa SDL_SetTexturePalette | |
| 1032 */ | |
| 1033 extern SDL_DECLSPEC SDL_Palette * SDLCALL SDL_GetTexturePalette(SDL_Texture *texture); | |
| 1034 | |
| 1035 /** | |
| 1036 * Set an additional color value multiplied into render copy operations. | |
| 1037 * | |
| 1038 * When this texture is rendered, during the copy operation each source color | |
| 1039 * channel is modulated by the appropriate color value according to the | |
| 1040 * following formula: | |
| 1041 * | |
| 1042 * `srcC = srcC * (color / 255)` | |
| 1043 * | |
| 1044 * Color modulation is not always supported by the renderer; it will return | |
| 1045 * false if color modulation is not supported. | |
| 1046 * | |
| 1047 * \param texture the texture to update. | |
| 1048 * \param r the red color value multiplied into copy operations. | |
| 1049 * \param g the green color value multiplied into copy operations. | |
| 1050 * \param b the blue color value multiplied into copy operations. | |
| 1051 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1052 * information. | |
| 1053 * | |
| 1054 * \threadsafety This function should only be called on the main thread. | |
| 1055 * | |
| 1056 * \since This function is available since SDL 3.2.0. | |
| 1057 * | |
| 1058 * \sa SDL_GetTextureColorMod | |
| 1059 * \sa SDL_SetTextureAlphaMod | |
| 1060 * \sa SDL_SetTextureColorModFloat | |
| 1061 */ | |
| 1062 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextureColorMod(SDL_Texture *texture, Uint8 r, Uint8 g, Uint8 b); | |
| 1063 | |
| 1064 | |
| 1065 /** | |
| 1066 * Set an additional color value multiplied into render copy operations. | |
| 1067 * | |
| 1068 * When this texture is rendered, during the copy operation each source color | |
| 1069 * channel is modulated by the appropriate color value according to the | |
| 1070 * following formula: | |
| 1071 * | |
| 1072 * `srcC = srcC * color` | |
| 1073 * | |
| 1074 * Color modulation is not always supported by the renderer; it will return | |
| 1075 * false if color modulation is not supported. | |
| 1076 * | |
| 1077 * \param texture the texture to update. | |
| 1078 * \param r the red color value multiplied into copy operations. | |
| 1079 * \param g the green color value multiplied into copy operations. | |
| 1080 * \param b the blue color value multiplied into copy operations. | |
| 1081 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1082 * information. | |
| 1083 * | |
| 1084 * \threadsafety This function should only be called on the main thread. | |
| 1085 * | |
| 1086 * \since This function is available since SDL 3.2.0. | |
| 1087 * | |
| 1088 * \sa SDL_GetTextureColorModFloat | |
| 1089 * \sa SDL_SetTextureAlphaModFloat | |
| 1090 * \sa SDL_SetTextureColorMod | |
| 1091 */ | |
| 1092 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextureColorModFloat(SDL_Texture *texture, float r, float g, float b); | |
| 1093 | |
| 1094 | |
| 1095 /** | |
| 1096 * Get the additional color value multiplied into render copy operations. | |
| 1097 * | |
| 1098 * \param texture the texture to query. | |
| 1099 * \param r a pointer filled in with the current red color value. | |
| 1100 * \param g a pointer filled in with the current green color value. | |
| 1101 * \param b a pointer filled in with the current blue color value. | |
| 1102 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1103 * information. | |
| 1104 * | |
| 1105 * \threadsafety This function should only be called on the main thread. | |
| 1106 * | |
| 1107 * \since This function is available since SDL 3.2.0. | |
| 1108 * | |
| 1109 * \sa SDL_GetTextureAlphaMod | |
| 1110 * \sa SDL_GetTextureColorModFloat | |
| 1111 * \sa SDL_SetTextureColorMod | |
| 1112 */ | |
| 1113 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureColorMod(SDL_Texture *texture, Uint8 *r, Uint8 *g, Uint8 *b); | |
| 1114 | |
| 1115 /** | |
| 1116 * Get the additional color value multiplied into render copy operations. | |
| 1117 * | |
| 1118 * \param texture the texture to query. | |
| 1119 * \param r a pointer filled in with the current red color value. | |
| 1120 * \param g a pointer filled in with the current green color value. | |
| 1121 * \param b a pointer filled in with the current blue color value. | |
| 1122 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1123 * information. | |
| 1124 * | |
| 1125 * \threadsafety This function should only be called on the main thread. | |
| 1126 * | |
| 1127 * \since This function is available since SDL 3.2.0. | |
| 1128 * | |
| 1129 * \sa SDL_GetTextureAlphaModFloat | |
| 1130 * \sa SDL_GetTextureColorMod | |
| 1131 * \sa SDL_SetTextureColorModFloat | |
| 1132 */ | |
| 1133 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureColorModFloat(SDL_Texture *texture, float *r, float *g, float *b); | |
| 1134 | |
| 1135 /** | |
| 1136 * Set an additional alpha value multiplied into render copy operations. | |
| 1137 * | |
| 1138 * When this texture is rendered, during the copy operation the source alpha | |
| 1139 * value is modulated by this alpha value according to the following formula: | |
| 1140 * | |
| 1141 * `srcA = srcA * (alpha / 255)` | |
| 1142 * | |
| 1143 * Alpha modulation is not always supported by the renderer; it will return | |
| 1144 * false if alpha modulation is not supported. | |
| 1145 * | |
| 1146 * \param texture the texture to update. | |
| 1147 * \param alpha the source alpha value multiplied into copy operations. | |
| 1148 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1149 * information. | |
| 1150 * | |
| 1151 * \threadsafety This function should only be called on the main thread. | |
| 1152 * | |
| 1153 * \since This function is available since SDL 3.2.0. | |
| 1154 * | |
| 1155 * \sa SDL_GetTextureAlphaMod | |
| 1156 * \sa SDL_SetTextureAlphaModFloat | |
| 1157 * \sa SDL_SetTextureColorMod | |
| 1158 */ | |
| 1159 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextureAlphaMod(SDL_Texture *texture, Uint8 alpha); | |
| 1160 | |
| 1161 /** | |
| 1162 * Set an additional alpha value multiplied into render copy operations. | |
| 1163 * | |
| 1164 * When this texture is rendered, during the copy operation the source alpha | |
| 1165 * value is modulated by this alpha value according to the following formula: | |
| 1166 * | |
| 1167 * `srcA = srcA * alpha` | |
| 1168 * | |
| 1169 * Alpha modulation is not always supported by the renderer; it will return | |
| 1170 * false if alpha modulation is not supported. | |
| 1171 * | |
| 1172 * \param texture the texture to update. | |
| 1173 * \param alpha the source alpha value multiplied into copy operations. | |
| 1174 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1175 * information. | |
| 1176 * | |
| 1177 * \threadsafety This function should only be called on the main thread. | |
| 1178 * | |
| 1179 * \since This function is available since SDL 3.2.0. | |
| 1180 * | |
| 1181 * \sa SDL_GetTextureAlphaModFloat | |
| 1182 * \sa SDL_SetTextureAlphaMod | |
| 1183 * \sa SDL_SetTextureColorModFloat | |
| 1184 */ | |
| 1185 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextureAlphaModFloat(SDL_Texture *texture, float alpha); | |
| 1186 | |
| 1187 /** | |
| 1188 * Get the additional alpha value multiplied into render copy operations. | |
| 1189 * | |
| 1190 * \param texture the texture to query. | |
| 1191 * \param alpha a pointer filled in with the current alpha value. | |
| 1192 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1193 * information. | |
| 1194 * | |
| 1195 * \threadsafety This function should only be called on the main thread. | |
| 1196 * | |
| 1197 * \since This function is available since SDL 3.2.0. | |
| 1198 * | |
| 1199 * \sa SDL_GetTextureAlphaModFloat | |
| 1200 * \sa SDL_GetTextureColorMod | |
| 1201 * \sa SDL_SetTextureAlphaMod | |
| 1202 */ | |
| 1203 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureAlphaMod(SDL_Texture *texture, Uint8 *alpha); | |
| 1204 | |
| 1205 /** | |
| 1206 * Get the additional alpha value multiplied into render copy operations. | |
| 1207 * | |
| 1208 * \param texture the texture to query. | |
| 1209 * \param alpha a pointer filled in with the current alpha value. | |
| 1210 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1211 * information. | |
| 1212 * | |
| 1213 * \threadsafety This function should only be called on the main thread. | |
| 1214 * | |
| 1215 * \since This function is available since SDL 3.2.0. | |
| 1216 * | |
| 1217 * \sa SDL_GetTextureAlphaMod | |
| 1218 * \sa SDL_GetTextureColorModFloat | |
| 1219 * \sa SDL_SetTextureAlphaModFloat | |
| 1220 */ | |
| 1221 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureAlphaModFloat(SDL_Texture *texture, float *alpha); | |
| 1222 | |
| 1223 /** | |
| 1224 * Set the blend mode for a texture, used by SDL_RenderTexture(). | |
| 1225 * | |
| 1226 * If the blend mode is not supported, the closest supported mode is chosen | |
| 1227 * and this function returns false. | |
| 1228 * | |
| 1229 * \param texture the texture to update. | |
| 1230 * \param blendMode the SDL_BlendMode to use for texture blending. | |
| 1231 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1232 * information. | |
| 1233 * | |
| 1234 * \threadsafety This function should only be called on the main thread. | |
| 1235 * | |
| 1236 * \since This function is available since SDL 3.2.0. | |
| 1237 * | |
| 1238 * \sa SDL_GetTextureBlendMode | |
| 1239 */ | |
| 1240 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextureBlendMode(SDL_Texture *texture, SDL_BlendMode blendMode); | |
| 1241 | |
| 1242 /** | |
| 1243 * Get the blend mode used for texture copy operations. | |
| 1244 * | |
| 1245 * \param texture the texture to query. | |
| 1246 * \param blendMode a pointer filled in with the current SDL_BlendMode. | |
| 1247 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1248 * information. | |
| 1249 * | |
| 1250 * \threadsafety This function should only be called on the main thread. | |
| 1251 * | |
| 1252 * \since This function is available since SDL 3.2.0. | |
| 1253 * | |
| 1254 * \sa SDL_SetTextureBlendMode | |
| 1255 */ | |
| 1256 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureBlendMode(SDL_Texture *texture, SDL_BlendMode *blendMode); | |
| 1257 | |
| 1258 /** | |
| 1259 * Set the scale mode used for texture scale operations. | |
| 1260 * | |
| 1261 * The default texture scale mode is SDL_SCALEMODE_LINEAR. | |
| 1262 * | |
| 1263 * If the scale mode is not supported, the closest supported mode is chosen. | |
| 1264 * | |
| 1265 * \param texture the texture to update. | |
| 1266 * \param scaleMode the SDL_ScaleMode to use for texture scaling. | |
| 1267 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1268 * information. | |
| 1269 * | |
| 1270 * \threadsafety This function should only be called on the main thread. | |
| 1271 * | |
| 1272 * \since This function is available since SDL 3.2.0. | |
| 1273 * | |
| 1274 * \sa SDL_GetTextureScaleMode | |
| 1275 */ | |
| 1276 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextureScaleMode(SDL_Texture *texture, SDL_ScaleMode scaleMode); | |
| 1277 | |
| 1278 /** | |
| 1279 * Get the scale mode used for texture scale operations. | |
| 1280 * | |
| 1281 * \param texture the texture to query. | |
| 1282 * \param scaleMode a pointer filled in with the current scale mode. | |
| 1283 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1284 * information. | |
| 1285 * | |
| 1286 * \threadsafety This function should only be called on the main thread. | |
| 1287 * | |
| 1288 * \since This function is available since SDL 3.2.0. | |
| 1289 * | |
| 1290 * \sa SDL_SetTextureScaleMode | |
| 1291 */ | |
| 1292 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureScaleMode(SDL_Texture *texture, SDL_ScaleMode *scaleMode); | |
| 1293 | |
| 1294 /** | |
| 1295 * Update the given texture rectangle with new pixel data. | |
| 1296 * | |
| 1297 * The pixel data must be in the pixel format of the texture, which can be | |
| 1298 * queried using the SDL_PROP_TEXTURE_FORMAT_NUMBER property. | |
| 1299 * | |
| 1300 * This is a fairly slow function, intended for use with static textures that | |
| 1301 * do not change often. | |
| 1302 * | |
| 1303 * If the texture is intended to be updated often, it is preferred to create | |
| 1304 * the texture as streaming and use the locking functions referenced below. | |
| 1305 * While this function will work with streaming textures, for optimization | |
| 1306 * reasons you may not get the pixels back if you lock the texture afterward. | |
| 1307 * | |
| 1308 * \param texture the texture to update. | |
| 1309 * \param rect an SDL_Rect structure representing the area to update, or NULL | |
| 1310 * to update the entire texture. | |
| 1311 * \param pixels the raw pixel data in the format of the texture. | |
| 1312 * \param pitch the number of bytes in a row of pixel data, including padding | |
| 1313 * between lines. | |
| 1314 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1315 * information. | |
| 1316 * | |
| 1317 * \threadsafety This function should only be called on the main thread. | |
| 1318 * | |
| 1319 * \since This function is available since SDL 3.2.0. | |
| 1320 * | |
| 1321 * \sa SDL_LockTexture | |
| 1322 * \sa SDL_UnlockTexture | |
| 1323 * \sa SDL_UpdateNVTexture | |
| 1324 * \sa SDL_UpdateYUVTexture | |
| 1325 */ | |
| 1326 extern SDL_DECLSPEC bool SDLCALL SDL_UpdateTexture(SDL_Texture *texture, const SDL_Rect *rect, const void *pixels, int pitch); | |
| 1327 | |
| 1328 /** | |
| 1329 * Update a rectangle within a planar YV12 or IYUV texture with new pixel | |
| 1330 * data. | |
| 1331 * | |
| 1332 * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous | |
| 1333 * block of Y and U/V planes in the proper order, but this function is | |
| 1334 * available if your pixel data is not contiguous. | |
| 1335 * | |
| 1336 * \param texture the texture to update. | |
| 1337 * \param rect a pointer to the rectangle of pixels to update, or NULL to | |
| 1338 * update the entire texture. | |
| 1339 * \param Yplane the raw pixel data for the Y plane. | |
| 1340 * \param Ypitch the number of bytes between rows of pixel data for the Y | |
| 1341 * plane. | |
| 1342 * \param Uplane the raw pixel data for the U plane. | |
| 1343 * \param Upitch the number of bytes between rows of pixel data for the U | |
| 1344 * plane. | |
| 1345 * \param Vplane the raw pixel data for the V plane. | |
| 1346 * \param Vpitch the number of bytes between rows of pixel data for the V | |
| 1347 * plane. | |
| 1348 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1349 * information. | |
| 1350 * | |
| 1351 * \threadsafety This function should only be called on the main thread. | |
| 1352 * | |
| 1353 * \since This function is available since SDL 3.2.0. | |
| 1354 * | |
| 1355 * \sa SDL_UpdateNVTexture | |
| 1356 * \sa SDL_UpdateTexture | |
| 1357 */ | |
| 1358 extern SDL_DECLSPEC bool SDLCALL SDL_UpdateYUVTexture(SDL_Texture *texture, | |
| 1359 const SDL_Rect *rect, | |
| 1360 const Uint8 *Yplane, int Ypitch, | |
| 1361 const Uint8 *Uplane, int Upitch, | |
| 1362 const Uint8 *Vplane, int Vpitch); | |
| 1363 | |
| 1364 /** | |
| 1365 * Update a rectangle within a planar NV12 or NV21 texture with new pixels. | |
| 1366 * | |
| 1367 * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous | |
| 1368 * block of NV12/21 planes in the proper order, but this function is available | |
| 1369 * if your pixel data is not contiguous. | |
| 1370 * | |
| 1371 * \param texture the texture to update. | |
| 1372 * \param rect a pointer to the rectangle of pixels to update, or NULL to | |
| 1373 * update the entire texture. | |
| 1374 * \param Yplane the raw pixel data for the Y plane. | |
| 1375 * \param Ypitch the number of bytes between rows of pixel data for the Y | |
| 1376 * plane. | |
| 1377 * \param UVplane the raw pixel data for the UV plane. | |
| 1378 * \param UVpitch the number of bytes between rows of pixel data for the UV | |
| 1379 * plane. | |
| 1380 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1381 * information. | |
| 1382 * | |
| 1383 * \threadsafety This function should only be called on the main thread. | |
| 1384 * | |
| 1385 * \since This function is available since SDL 3.2.0. | |
| 1386 * | |
| 1387 * \sa SDL_UpdateTexture | |
| 1388 * \sa SDL_UpdateYUVTexture | |
| 1389 */ | |
| 1390 extern SDL_DECLSPEC bool SDLCALL SDL_UpdateNVTexture(SDL_Texture *texture, | |
| 1391 const SDL_Rect *rect, | |
| 1392 const Uint8 *Yplane, int Ypitch, | |
| 1393 const Uint8 *UVplane, int UVpitch); | |
| 1394 | |
| 1395 /** | |
| 1396 * Lock a portion of the texture for **write-only** pixel access. | |
| 1397 * | |
| 1398 * As an optimization, the pixels made available for editing don't necessarily | |
| 1399 * contain the old texture data. This is a write-only operation, and if you | |
| 1400 * need to keep a copy of the texture data you should do that at the | |
| 1401 * application level. | |
| 1402 * | |
| 1403 * You must use SDL_UnlockTexture() to unlock the pixels and apply any | |
| 1404 * changes. | |
| 1405 * | |
| 1406 * \param texture the texture to lock for access, which was created with | |
| 1407 * `SDL_TEXTUREACCESS_STREAMING`. | |
| 1408 * \param rect an SDL_Rect structure representing the area to lock for access; | |
| 1409 * NULL to lock the entire texture. | |
| 1410 * \param pixels this is filled in with a pointer to the locked pixels, | |
| 1411 * appropriately offset by the locked area. | |
| 1412 * \param pitch this is filled in with the pitch of the locked pixels; the | |
| 1413 * pitch is the length of one row in bytes. | |
| 1414 * \returns true on success or false if the texture is not valid or was not | |
| 1415 * created with `SDL_TEXTUREACCESS_STREAMING`; call SDL_GetError() | |
| 1416 * for more information. | |
| 1417 * | |
| 1418 * \threadsafety This function should only be called on the main thread. | |
| 1419 * | |
| 1420 * \since This function is available since SDL 3.2.0. | |
| 1421 * | |
| 1422 * \sa SDL_LockTextureToSurface | |
| 1423 * \sa SDL_UnlockTexture | |
| 1424 */ | |
| 1425 extern SDL_DECLSPEC bool SDLCALL SDL_LockTexture(SDL_Texture *texture, | |
| 1426 const SDL_Rect *rect, | |
| 1427 void **pixels, int *pitch); | |
| 1428 | |
| 1429 /** | |
| 1430 * Lock a portion of the texture for **write-only** pixel access, and expose | |
| 1431 * it as a SDL surface. | |
| 1432 * | |
| 1433 * Besides providing an SDL_Surface instead of raw pixel data, this function | |
| 1434 * operates like SDL_LockTexture. | |
| 1435 * | |
| 1436 * As an optimization, the pixels made available for editing don't necessarily | |
| 1437 * contain the old texture data. This is a write-only operation, and if you | |
| 1438 * need to keep a copy of the texture data you should do that at the | |
| 1439 * application level. | |
| 1440 * | |
| 1441 * You must use SDL_UnlockTexture() to unlock the pixels and apply any | |
| 1442 * changes. | |
| 1443 * | |
| 1444 * The returned surface is freed internally after calling SDL_UnlockTexture() | |
| 1445 * or SDL_DestroyTexture(). The caller should not free it. | |
| 1446 * | |
| 1447 * \param texture the texture to lock for access, which must be created with | |
| 1448 * `SDL_TEXTUREACCESS_STREAMING`. | |
| 1449 * \param rect a pointer to the rectangle to lock for access. If the rect is | |
| 1450 * NULL, the entire texture will be locked. | |
| 1451 * \param surface a pointer to an SDL surface of size **rect**. Don't assume | |
| 1452 * any specific pixel content. | |
| 1453 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1454 * information. | |
| 1455 * | |
| 1456 * \threadsafety This function should only be called on the main thread. | |
| 1457 * | |
| 1458 * \since This function is available since SDL 3.2.0. | |
| 1459 * | |
| 1460 * \sa SDL_LockTexture | |
| 1461 * \sa SDL_UnlockTexture | |
| 1462 */ | |
| 1463 extern SDL_DECLSPEC bool SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, const SDL_Rect *rect, SDL_Surface **surface); | |
| 1464 | |
| 1465 /** | |
| 1466 * Unlock a texture, uploading the changes to video memory, if needed. | |
| 1467 * | |
| 1468 * **Warning**: Please note that SDL_LockTexture() is intended to be | |
| 1469 * write-only; it will not guarantee the previous contents of the texture will | |
| 1470 * be provided. You must fully initialize any area of a texture that you lock | |
| 1471 * before unlocking it, as the pixels might otherwise be uninitialized memory. | |
| 1472 * | |
| 1473 * Which is to say: locking and immediately unlocking a texture can result in | |
| 1474 * corrupted textures, depending on the renderer in use. | |
| 1475 * | |
| 1476 * \param texture a texture locked by SDL_LockTexture(). | |
| 1477 * | |
| 1478 * \threadsafety This function should only be called on the main thread. | |
| 1479 * | |
| 1480 * \since This function is available since SDL 3.2.0. | |
| 1481 * | |
| 1482 * \sa SDL_LockTexture | |
| 1483 */ | |
| 1484 extern SDL_DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture *texture); | |
| 1485 | |
| 1486 /** | |
| 1487 * Set a texture as the current rendering target. | |
| 1488 * | |
| 1489 * The default render target is the window for which the renderer was created. | |
| 1490 * To stop rendering to a texture and render to the window again, call this | |
| 1491 * function with a NULL `texture`. | |
| 1492 * | |
| 1493 * Viewport, cliprect, scale, and logical presentation are unique to each | |
| 1494 * render target. Get and set functions for these states apply to the current | |
| 1495 * render target set by this function, and those states persist on each target | |
| 1496 * when the current render target changes. | |
| 1497 * | |
| 1498 * \param renderer the rendering context. | |
| 1499 * \param texture the targeted texture, which must be created with the | |
| 1500 * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the | |
| 1501 * window instead of a texture. | |
| 1502 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1503 * information. | |
| 1504 * | |
| 1505 * \threadsafety This function should only be called on the main thread. | |
| 1506 * | |
| 1507 * \since This function is available since SDL 3.2.0. | |
| 1508 * | |
| 1509 * \sa SDL_GetRenderTarget | |
| 1510 */ | |
| 1511 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture); | |
| 1512 | |
| 1513 /** | |
| 1514 * Get the current render target. | |
| 1515 * | |
| 1516 * The default render target is the window for which the renderer was created, | |
| 1517 * and is reported a NULL here. | |
| 1518 * | |
| 1519 * \param renderer the rendering context. | |
| 1520 * \returns the current render target or NULL for the default render target. | |
| 1521 * | |
| 1522 * \threadsafety This function should only be called on the main thread. | |
| 1523 * | |
| 1524 * \since This function is available since SDL 3.2.0. | |
| 1525 * | |
| 1526 * \sa SDL_SetRenderTarget | |
| 1527 */ | |
| 1528 extern SDL_DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); | |
| 1529 | |
| 1530 /** | |
| 1531 * Set a device-independent resolution and presentation mode for rendering. | |
| 1532 * | |
| 1533 * This function sets the width and height of the logical rendering output. | |
| 1534 * The renderer will act as if the current render target is always the | |
| 1535 * requested dimensions, scaling to the actual resolution as necessary. | |
| 1536 * | |
| 1537 * This can be useful for games that expect a fixed size, but would like to | |
| 1538 * scale the output to whatever is available, regardless of how a user resizes | |
| 1539 * a window, or if the display is high DPI. | |
| 1540 * | |
| 1541 * Logical presentation can be used with both render target textures and the | |
| 1542 * renderer's window; the state is unique to each render target, and this | |
| 1543 * function sets the state for the current render target. It might be useful | |
| 1544 * to draw to a texture that matches the window dimensions with logical | |
| 1545 * presentation enabled, and then draw that texture across the entire window | |
| 1546 * with logical presentation disabled. Be careful not to render both with | |
| 1547 * logical presentation enabled, however, as this could produce | |
| 1548 * double-letterboxing, etc. | |
| 1549 * | |
| 1550 * You can disable logical coordinates by setting the mode to | |
| 1551 * SDL_LOGICAL_PRESENTATION_DISABLED, and in that case you get the full pixel | |
| 1552 * resolution of the render target; it is safe to toggle logical presentation | |
| 1553 * during the rendering of a frame: perhaps most of the rendering is done to | |
| 1554 * specific dimensions but to make fonts look sharp, the app turns off logical | |
| 1555 * presentation while drawing text, for example. | |
| 1556 * | |
| 1557 * You can convert coordinates in an event into rendering coordinates using | |
| 1558 * SDL_ConvertEventToRenderCoordinates(). | |
| 1559 * | |
| 1560 * \param renderer the rendering context. | |
| 1561 * \param w the width of the logical resolution. | |
| 1562 * \param h the height of the logical resolution. | |
| 1563 * \param mode the presentation mode used. | |
| 1564 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1565 * information. | |
| 1566 * | |
| 1567 * \threadsafety This function should only be called on the main thread. | |
| 1568 * | |
| 1569 * \since This function is available since SDL 3.2.0. | |
| 1570 * | |
| 1571 * \sa SDL_ConvertEventToRenderCoordinates | |
| 1572 * \sa SDL_GetRenderLogicalPresentation | |
| 1573 * \sa SDL_GetRenderLogicalPresentationRect | |
| 1574 */ | |
| 1575 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderLogicalPresentation(SDL_Renderer *renderer, int w, int h, SDL_RendererLogicalPresentation mode); | |
| 1576 | |
| 1577 /** | |
| 1578 * Get device independent resolution and presentation mode for rendering. | |
| 1579 * | |
| 1580 * This function gets the width and height of the logical rendering output, or | |
| 1581 * 0 if a logical resolution is not enabled. | |
| 1582 * | |
| 1583 * Each render target has its own logical presentation state. This function | |
| 1584 * gets the state for the current render target. | |
| 1585 * | |
| 1586 * \param renderer the rendering context. | |
| 1587 * \param w an int filled with the logical presentation width. | |
| 1588 * \param h an int filled with the logical presentation height. | |
| 1589 * \param mode a variable filled with the logical presentation mode being | |
| 1590 * used. | |
| 1591 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1592 * information. | |
| 1593 * | |
| 1594 * \threadsafety This function should only be called on the main thread. | |
| 1595 * | |
| 1596 * \since This function is available since SDL 3.2.0. | |
| 1597 * | |
| 1598 * \sa SDL_SetRenderLogicalPresentation | |
| 1599 */ | |
| 1600 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderLogicalPresentation(SDL_Renderer *renderer, int *w, int *h, SDL_RendererLogicalPresentation *mode); | |
| 1601 | |
| 1602 /** | |
| 1603 * Get the final presentation rectangle for rendering. | |
| 1604 * | |
| 1605 * This function returns the calculated rectangle used for logical | |
| 1606 * presentation, based on the presentation mode and output size. If logical | |
| 1607 * presentation is disabled, it will fill the rectangle with the output size, | |
| 1608 * in pixels. | |
| 1609 * | |
| 1610 * Each render target has its own logical presentation state. This function | |
| 1611 * gets the rectangle for the current render target. | |
| 1612 * | |
| 1613 * \param renderer the rendering context. | |
| 1614 * \param rect a pointer filled in with the final presentation rectangle, may | |
| 1615 * be NULL. | |
| 1616 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1617 * information. | |
| 1618 * | |
| 1619 * \threadsafety This function should only be called on the main thread. | |
| 1620 * | |
| 1621 * \since This function is available since SDL 3.2.0. | |
| 1622 * | |
| 1623 * \sa SDL_SetRenderLogicalPresentation | |
| 1624 */ | |
| 1625 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderLogicalPresentationRect(SDL_Renderer *renderer, SDL_FRect *rect); | |
| 1626 | |
| 1627 /** | |
| 1628 * Get a point in render coordinates when given a point in window coordinates. | |
| 1629 * | |
| 1630 * This takes into account several states: | |
| 1631 * | |
| 1632 * - The window dimensions. | |
| 1633 * - The logical presentation settings (SDL_SetRenderLogicalPresentation) | |
| 1634 * - The scale (SDL_SetRenderScale) | |
| 1635 * - The viewport (SDL_SetRenderViewport) | |
| 1636 * | |
| 1637 * \param renderer the rendering context. | |
| 1638 * \param window_x the x coordinate in window coordinates. | |
| 1639 * \param window_y the y coordinate in window coordinates. | |
| 1640 * \param x a pointer filled with the x coordinate in render coordinates. | |
| 1641 * \param y a pointer filled with the y coordinate in render coordinates. | |
| 1642 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1643 * information. | |
| 1644 * | |
| 1645 * \threadsafety This function should only be called on the main thread. | |
| 1646 * | |
| 1647 * \since This function is available since SDL 3.2.0. | |
| 1648 * | |
| 1649 * \sa SDL_SetRenderLogicalPresentation | |
| 1650 * \sa SDL_SetRenderScale | |
| 1651 */ | |
| 1652 extern SDL_DECLSPEC bool SDLCALL SDL_RenderCoordinatesFromWindow(SDL_Renderer *renderer, float window_x, float window_y, float *x, float *y); | |
| 1653 | |
| 1654 /** | |
| 1655 * Get a point in window coordinates when given a point in render coordinates. | |
| 1656 * | |
| 1657 * This takes into account several states: | |
| 1658 * | |
| 1659 * - The window dimensions. | |
| 1660 * - The logical presentation settings (SDL_SetRenderLogicalPresentation) | |
| 1661 * - The scale (SDL_SetRenderScale) | |
| 1662 * - The viewport (SDL_SetRenderViewport) | |
| 1663 * | |
| 1664 * \param renderer the rendering context. | |
| 1665 * \param x the x coordinate in render coordinates. | |
| 1666 * \param y the y coordinate in render coordinates. | |
| 1667 * \param window_x a pointer filled with the x coordinate in window | |
| 1668 * coordinates. | |
| 1669 * \param window_y a pointer filled with the y coordinate in window | |
| 1670 * coordinates. | |
| 1671 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1672 * information. | |
| 1673 * | |
| 1674 * \threadsafety This function should only be called on the main thread. | |
| 1675 * | |
| 1676 * \since This function is available since SDL 3.2.0. | |
| 1677 * | |
| 1678 * \sa SDL_SetRenderLogicalPresentation | |
| 1679 * \sa SDL_SetRenderScale | |
| 1680 * \sa SDL_SetRenderViewport | |
| 1681 */ | |
| 1682 extern SDL_DECLSPEC bool SDLCALL SDL_RenderCoordinatesToWindow(SDL_Renderer *renderer, float x, float y, float *window_x, float *window_y); | |
| 1683 | |
| 1684 /** | |
| 1685 * Convert the coordinates in an event to render coordinates. | |
| 1686 * | |
| 1687 * This takes into account several states: | |
| 1688 * | |
| 1689 * - The window dimensions. | |
| 1690 * - The logical presentation settings (SDL_SetRenderLogicalPresentation) | |
| 1691 * - The scale (SDL_SetRenderScale) | |
| 1692 * - The viewport (SDL_SetRenderViewport) | |
| 1693 * | |
| 1694 * Various event types are converted with this function: mouse, touch, pen, | |
| 1695 * etc. | |
| 1696 * | |
| 1697 * Touch coordinates are converted from normalized coordinates in the window | |
| 1698 * to non-normalized rendering coordinates. | |
| 1699 * | |
| 1700 * Relative mouse coordinates (xrel and yrel event fields) are _also_ | |
| 1701 * converted. Applications that do not want these fields converted should use | |
| 1702 * SDL_RenderCoordinatesFromWindow() on the specific event fields instead of | |
| 1703 * converting the entire event structure. | |
| 1704 * | |
| 1705 * Once converted, coordinates may be outside the rendering area. | |
| 1706 * | |
| 1707 * \param renderer the rendering context. | |
| 1708 * \param event the event to modify. | |
| 1709 * \returns true if the event is converted or doesn't need conversion, or | |
| 1710 * false on failure; call SDL_GetError() for more information. | |
| 1711 * | |
| 1712 * \threadsafety This function should only be called on the main thread. | |
| 1713 * | |
| 1714 * \since This function is available since SDL 3.2.0. | |
| 1715 * | |
| 1716 * \sa SDL_RenderCoordinatesFromWindow | |
| 1717 */ | |
| 1718 extern SDL_DECLSPEC bool SDLCALL SDL_ConvertEventToRenderCoordinates(SDL_Renderer *renderer, SDL_Event *event); | |
| 1719 | |
| 1720 /** | |
| 1721 * Set the drawing area for rendering on the current target. | |
| 1722 * | |
| 1723 * Drawing will clip to this area (separately from any clipping done with | |
| 1724 * SDL_SetRenderClipRect), and the top left of the area will become coordinate | |
| 1725 * (0, 0) for future drawing commands. | |
| 1726 * | |
| 1727 * The area's width and height must be >= 0. | |
| 1728 * | |
| 1729 * Each render target has its own viewport. This function sets the viewport | |
| 1730 * for the current render target. | |
| 1731 * | |
| 1732 * \param renderer the rendering context. | |
| 1733 * \param rect the SDL_Rect structure representing the drawing area, or NULL | |
| 1734 * to set the viewport to the entire target. | |
| 1735 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1736 * information. | |
| 1737 * | |
| 1738 * \threadsafety This function should only be called on the main thread. | |
| 1739 * | |
| 1740 * \since This function is available since SDL 3.2.0. | |
| 1741 * | |
| 1742 * \sa SDL_GetRenderViewport | |
| 1743 * \sa SDL_RenderViewportSet | |
| 1744 */ | |
| 1745 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderViewport(SDL_Renderer *renderer, const SDL_Rect *rect); | |
| 1746 | |
| 1747 /** | |
| 1748 * Get the drawing area for the current target. | |
| 1749 * | |
| 1750 * Each render target has its own viewport. This function gets the viewport | |
| 1751 * for the current render target. | |
| 1752 * | |
| 1753 * \param renderer the rendering context. | |
| 1754 * \param rect an SDL_Rect structure filled in with the current drawing area. | |
| 1755 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1756 * information. | |
| 1757 * | |
| 1758 * \threadsafety This function should only be called on the main thread. | |
| 1759 * | |
| 1760 * \since This function is available since SDL 3.2.0. | |
| 1761 * | |
| 1762 * \sa SDL_RenderViewportSet | |
| 1763 * \sa SDL_SetRenderViewport | |
| 1764 */ | |
| 1765 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderViewport(SDL_Renderer *renderer, SDL_Rect *rect); | |
| 1766 | |
| 1767 /** | |
| 1768 * Return whether an explicit rectangle was set as the viewport. | |
| 1769 * | |
| 1770 * This is useful if you're saving and restoring the viewport and want to know | |
| 1771 * whether you should restore a specific rectangle or NULL. | |
| 1772 * | |
| 1773 * Each render target has its own viewport. This function checks the viewport | |
| 1774 * for the current render target. | |
| 1775 * | |
| 1776 * \param renderer the rendering context. | |
| 1777 * \returns true if the viewport was set to a specific rectangle, or false if | |
| 1778 * it was set to NULL (the entire target). | |
| 1779 * | |
| 1780 * \threadsafety This function should only be called on the main thread. | |
| 1781 * | |
| 1782 * \since This function is available since SDL 3.2.0. | |
| 1783 * | |
| 1784 * \sa SDL_GetRenderViewport | |
| 1785 * \sa SDL_SetRenderViewport | |
| 1786 */ | |
| 1787 extern SDL_DECLSPEC bool SDLCALL SDL_RenderViewportSet(SDL_Renderer *renderer); | |
| 1788 | |
| 1789 /** | |
| 1790 * Get the safe area for rendering within the current viewport. | |
| 1791 * | |
| 1792 * Some devices have portions of the screen which are partially obscured or | |
| 1793 * not interactive, possibly due to on-screen controls, curved edges, camera | |
| 1794 * notches, TV overscan, etc. This function provides the area of the current | |
| 1795 * viewport which is safe to have interactible content. You should continue | |
| 1796 * rendering into the rest of the render target, but it should not contain | |
| 1797 * visually important or interactible content. | |
| 1798 * | |
| 1799 * \param renderer the rendering context. | |
| 1800 * \param rect a pointer filled in with the area that is safe for interactive | |
| 1801 * content. | |
| 1802 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1803 * information. | |
| 1804 * | |
| 1805 * \threadsafety This function should only be called on the main thread. | |
| 1806 * | |
| 1807 * \since This function is available since SDL 3.2.0. | |
| 1808 */ | |
| 1809 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderSafeArea(SDL_Renderer *renderer, SDL_Rect *rect); | |
| 1810 | |
| 1811 /** | |
| 1812 * Set the clip rectangle for rendering on the specified target. | |
| 1813 * | |
| 1814 * Each render target has its own clip rectangle. This function sets the | |
| 1815 * cliprect for the current render target. | |
| 1816 * | |
| 1817 * \param renderer the rendering context. | |
| 1818 * \param rect an SDL_Rect structure representing the clip area, relative to | |
| 1819 * the viewport, or NULL to disable clipping. | |
| 1820 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1821 * information. | |
| 1822 * | |
| 1823 * \threadsafety This function should only be called on the main thread. | |
| 1824 * | |
| 1825 * \since This function is available since SDL 3.2.0. | |
| 1826 * | |
| 1827 * \sa SDL_GetRenderClipRect | |
| 1828 * \sa SDL_RenderClipEnabled | |
| 1829 */ | |
| 1830 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderClipRect(SDL_Renderer *renderer, const SDL_Rect *rect); | |
| 1831 | |
| 1832 /** | |
| 1833 * Get the clip rectangle for the current target. | |
| 1834 * | |
| 1835 * Each render target has its own clip rectangle. This function gets the | |
| 1836 * cliprect for the current render target. | |
| 1837 * | |
| 1838 * \param renderer the rendering context. | |
| 1839 * \param rect an SDL_Rect structure filled in with the current clipping area | |
| 1840 * or an empty rectangle if clipping is disabled. | |
| 1841 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1842 * information. | |
| 1843 * | |
| 1844 * \threadsafety This function should only be called on the main thread. | |
| 1845 * | |
| 1846 * \since This function is available since SDL 3.2.0. | |
| 1847 * | |
| 1848 * \sa SDL_RenderClipEnabled | |
| 1849 * \sa SDL_SetRenderClipRect | |
| 1850 */ | |
| 1851 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderClipRect(SDL_Renderer *renderer, SDL_Rect *rect); | |
| 1852 | |
| 1853 /** | |
| 1854 * Get whether clipping is enabled on the given render target. | |
| 1855 * | |
| 1856 * Each render target has its own clip rectangle. This function checks the | |
| 1857 * cliprect for the current render target. | |
| 1858 * | |
| 1859 * \param renderer the rendering context. | |
| 1860 * \returns true if clipping is enabled or false if not; call SDL_GetError() | |
| 1861 * for more information. | |
| 1862 * | |
| 1863 * \threadsafety This function should only be called on the main thread. | |
| 1864 * | |
| 1865 * \since This function is available since SDL 3.2.0. | |
| 1866 * | |
| 1867 * \sa SDL_GetRenderClipRect | |
| 1868 * \sa SDL_SetRenderClipRect | |
| 1869 */ | |
| 1870 extern SDL_DECLSPEC bool SDLCALL SDL_RenderClipEnabled(SDL_Renderer *renderer); | |
| 1871 | |
| 1872 /** | |
| 1873 * Set the drawing scale for rendering on the current target. | |
| 1874 * | |
| 1875 * The drawing coordinates are scaled by the x/y scaling factors before they | |
| 1876 * are used by the renderer. This allows resolution independent drawing with a | |
| 1877 * single coordinate system. | |
| 1878 * | |
| 1879 * If this results in scaling or subpixel drawing by the rendering backend, it | |
| 1880 * will be handled using the appropriate quality hints. For best results use | |
| 1881 * integer scaling factors. | |
| 1882 * | |
| 1883 * Each render target has its own scale. This function sets the scale for the | |
| 1884 * current render target. | |
| 1885 * | |
| 1886 * \param renderer the rendering context. | |
| 1887 * \param scaleX the horizontal scaling factor. | |
| 1888 * \param scaleY the vertical scaling factor. | |
| 1889 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1890 * information. | |
| 1891 * | |
| 1892 * \threadsafety This function should only be called on the main thread. | |
| 1893 * | |
| 1894 * \since This function is available since SDL 3.2.0. | |
| 1895 * | |
| 1896 * \sa SDL_GetRenderScale | |
| 1897 */ | |
| 1898 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderScale(SDL_Renderer *renderer, float scaleX, float scaleY); | |
| 1899 | |
| 1900 /** | |
| 1901 * Get the drawing scale for the current target. | |
| 1902 * | |
| 1903 * Each render target has its own scale. This function gets the scale for the | |
| 1904 * current render target. | |
| 1905 * | |
| 1906 * \param renderer the rendering context. | |
| 1907 * \param scaleX a pointer filled in with the horizontal scaling factor. | |
| 1908 * \param scaleY a pointer filled in with the vertical scaling factor. | |
| 1909 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1910 * information. | |
| 1911 * | |
| 1912 * \threadsafety This function should only be called on the main thread. | |
| 1913 * | |
| 1914 * \since This function is available since SDL 3.2.0. | |
| 1915 * | |
| 1916 * \sa SDL_SetRenderScale | |
| 1917 */ | |
| 1918 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderScale(SDL_Renderer *renderer, float *scaleX, float *scaleY); | |
| 1919 | |
| 1920 /** | |
| 1921 * Set the color used for drawing operations. | |
| 1922 * | |
| 1923 * Set the color for drawing or filling rectangles, lines, and points, and for | |
| 1924 * SDL_RenderClear(). | |
| 1925 * | |
| 1926 * \param renderer the rendering context. | |
| 1927 * \param r the red value used to draw on the rendering target. | |
| 1928 * \param g the green value used to draw on the rendering target. | |
| 1929 * \param b the blue value used to draw on the rendering target. | |
| 1930 * \param a the alpha value used to draw on the rendering target; usually | |
| 1931 * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to | |
| 1932 * specify how the alpha channel is used. | |
| 1933 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1934 * information. | |
| 1935 * | |
| 1936 * \threadsafety This function should only be called on the main thread. | |
| 1937 * | |
| 1938 * \since This function is available since SDL 3.2.0. | |
| 1939 * | |
| 1940 * \sa SDL_GetRenderDrawColor | |
| 1941 * \sa SDL_SetRenderDrawColorFloat | |
| 1942 */ | |
| 1943 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderDrawColor(SDL_Renderer *renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a); | |
| 1944 | |
| 1945 /** | |
| 1946 * Set the color used for drawing operations (Rect, Line and Clear). | |
| 1947 * | |
| 1948 * Set the color for drawing or filling rectangles, lines, and points, and for | |
| 1949 * SDL_RenderClear(). | |
| 1950 * | |
| 1951 * \param renderer the rendering context. | |
| 1952 * \param r the red value used to draw on the rendering target. | |
| 1953 * \param g the green value used to draw on the rendering target. | |
| 1954 * \param b the blue value used to draw on the rendering target. | |
| 1955 * \param a the alpha value used to draw on the rendering target. Use | |
| 1956 * SDL_SetRenderDrawBlendMode to specify how the alpha channel is | |
| 1957 * used. | |
| 1958 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1959 * information. | |
| 1960 * | |
| 1961 * \threadsafety This function should only be called on the main thread. | |
| 1962 * | |
| 1963 * \since This function is available since SDL 3.2.0. | |
| 1964 * | |
| 1965 * \sa SDL_GetRenderDrawColorFloat | |
| 1966 * \sa SDL_SetRenderDrawColor | |
| 1967 */ | |
| 1968 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderDrawColorFloat(SDL_Renderer *renderer, float r, float g, float b, float a); | |
| 1969 | |
| 1970 /** | |
| 1971 * Get the color used for drawing operations (Rect, Line and Clear). | |
| 1972 * | |
| 1973 * \param renderer the rendering context. | |
| 1974 * \param r a pointer filled in with the red value used to draw on the | |
| 1975 * rendering target. | |
| 1976 * \param g a pointer filled in with the green value used to draw on the | |
| 1977 * rendering target. | |
| 1978 * \param b a pointer filled in with the blue value used to draw on the | |
| 1979 * rendering target. | |
| 1980 * \param a a pointer filled in with the alpha value used to draw on the | |
| 1981 * rendering target; usually `SDL_ALPHA_OPAQUE` (255). | |
| 1982 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 1983 * information. | |
| 1984 * | |
| 1985 * \threadsafety This function should only be called on the main thread. | |
| 1986 * | |
| 1987 * \since This function is available since SDL 3.2.0. | |
| 1988 * | |
| 1989 * \sa SDL_GetRenderDrawColorFloat | |
| 1990 * \sa SDL_SetRenderDrawColor | |
| 1991 */ | |
| 1992 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderDrawColor(SDL_Renderer *renderer, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); | |
| 1993 | |
| 1994 /** | |
| 1995 * Get the color used for drawing operations (Rect, Line and Clear). | |
| 1996 * | |
| 1997 * \param renderer the rendering context. | |
| 1998 * \param r a pointer filled in with the red value used to draw on the | |
| 1999 * rendering target. | |
| 2000 * \param g a pointer filled in with the green value used to draw on the | |
| 2001 * rendering target. | |
| 2002 * \param b a pointer filled in with the blue value used to draw on the | |
| 2003 * rendering target. | |
| 2004 * \param a a pointer filled in with the alpha value used to draw on the | |
| 2005 * rendering target. | |
| 2006 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2007 * information. | |
| 2008 * | |
| 2009 * \threadsafety This function should only be called on the main thread. | |
| 2010 * | |
| 2011 * \since This function is available since SDL 3.2.0. | |
| 2012 * | |
| 2013 * \sa SDL_SetRenderDrawColorFloat | |
| 2014 * \sa SDL_GetRenderDrawColor | |
| 2015 */ | |
| 2016 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderDrawColorFloat(SDL_Renderer *renderer, float *r, float *g, float *b, float *a); | |
| 2017 | |
| 2018 /** | |
| 2019 * Set the color scale used for render operations. | |
| 2020 * | |
| 2021 * The color scale is an additional scale multiplied into the pixel color | |
| 2022 * value while rendering. This can be used to adjust the brightness of colors | |
| 2023 * during HDR rendering, or changing HDR video brightness when playing on an | |
| 2024 * SDR display. | |
| 2025 * | |
| 2026 * The color scale does not affect the alpha channel, only the color | |
| 2027 * brightness. | |
| 2028 * | |
| 2029 * \param renderer the rendering context. | |
| 2030 * \param scale the color scale value. | |
| 2031 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2032 * information. | |
| 2033 * | |
| 2034 * \threadsafety This function should only be called on the main thread. | |
| 2035 * | |
| 2036 * \since This function is available since SDL 3.2.0. | |
| 2037 * | |
| 2038 * \sa SDL_GetRenderColorScale | |
| 2039 */ | |
| 2040 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderColorScale(SDL_Renderer *renderer, float scale); | |
| 2041 | |
| 2042 /** | |
| 2043 * Get the color scale used for render operations. | |
| 2044 * | |
| 2045 * \param renderer the rendering context. | |
| 2046 * \param scale a pointer filled in with the current color scale value. | |
| 2047 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2048 * information. | |
| 2049 * | |
| 2050 * \threadsafety This function should only be called on the main thread. | |
| 2051 * | |
| 2052 * \since This function is available since SDL 3.2.0. | |
| 2053 * | |
| 2054 * \sa SDL_SetRenderColorScale | |
| 2055 */ | |
| 2056 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderColorScale(SDL_Renderer *renderer, float *scale); | |
| 2057 | |
| 2058 /** | |
| 2059 * Set the blend mode used for drawing operations (Fill and Line). | |
| 2060 * | |
| 2061 * If the blend mode is not supported, the closest supported mode is chosen. | |
| 2062 * | |
| 2063 * \param renderer the rendering context. | |
| 2064 * \param blendMode the SDL_BlendMode to use for blending. | |
| 2065 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2066 * information. | |
| 2067 * | |
| 2068 * \threadsafety This function should only be called on the main thread. | |
| 2069 * | |
| 2070 * \since This function is available since SDL 3.2.0. | |
| 2071 * | |
| 2072 * \sa SDL_GetRenderDrawBlendMode | |
| 2073 */ | |
| 2074 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode); | |
| 2075 | |
| 2076 /** | |
| 2077 * Get the blend mode used for drawing operations. | |
| 2078 * | |
| 2079 * \param renderer the rendering context. | |
| 2080 * \param blendMode a pointer filled in with the current SDL_BlendMode. | |
| 2081 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2082 * information. | |
| 2083 * | |
| 2084 * \threadsafety This function should only be called on the main thread. | |
| 2085 * | |
| 2086 * \since This function is available since SDL 3.2.0. | |
| 2087 * | |
| 2088 * \sa SDL_SetRenderDrawBlendMode | |
| 2089 */ | |
| 2090 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer *renderer, SDL_BlendMode *blendMode); | |
| 2091 | |
| 2092 /** | |
| 2093 * Clear the current rendering target with the drawing color. | |
| 2094 * | |
| 2095 * This function clears the entire rendering target, ignoring the viewport and | |
| 2096 * the clip rectangle. Note, that clearing will also set/fill all pixels of | |
| 2097 * the rendering target to current renderer draw color, so make sure to invoke | |
| 2098 * SDL_SetRenderDrawColor() when needed. | |
| 2099 * | |
| 2100 * \param renderer the rendering context. | |
| 2101 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2102 * information. | |
| 2103 * | |
| 2104 * \threadsafety This function should only be called on the main thread. | |
| 2105 * | |
| 2106 * \since This function is available since SDL 3.2.0. | |
| 2107 * | |
| 2108 * \sa SDL_SetRenderDrawColor | |
| 2109 */ | |
| 2110 extern SDL_DECLSPEC bool SDLCALL SDL_RenderClear(SDL_Renderer *renderer); | |
| 2111 | |
| 2112 /** | |
| 2113 * Draw a point on the current rendering target at subpixel precision. | |
| 2114 * | |
| 2115 * \param renderer the renderer which should draw a point. | |
| 2116 * \param x the x coordinate of the point. | |
| 2117 * \param y the y coordinate of the point. | |
| 2118 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2119 * information. | |
| 2120 * | |
| 2121 * \threadsafety This function should only be called on the main thread. | |
| 2122 * | |
| 2123 * \since This function is available since SDL 3.2.0. | |
| 2124 * | |
| 2125 * \sa SDL_RenderPoints | |
| 2126 */ | |
| 2127 extern SDL_DECLSPEC bool SDLCALL SDL_RenderPoint(SDL_Renderer *renderer, float x, float y); | |
| 2128 | |
| 2129 /** | |
| 2130 * Draw multiple points on the current rendering target at subpixel precision. | |
| 2131 * | |
| 2132 * \param renderer the renderer which should draw multiple points. | |
| 2133 * \param points the points to draw. | |
| 2134 * \param count the number of points to draw. | |
| 2135 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2136 * information. | |
| 2137 * | |
| 2138 * \threadsafety This function should only be called on the main thread. | |
| 2139 * | |
| 2140 * \since This function is available since SDL 3.2.0. | |
| 2141 * | |
| 2142 * \sa SDL_RenderPoint | |
| 2143 */ | |
| 2144 extern SDL_DECLSPEC bool SDLCALL SDL_RenderPoints(SDL_Renderer *renderer, const SDL_FPoint *points, int count); | |
| 2145 | |
| 2146 /** | |
| 2147 * Draw a line on the current rendering target at subpixel precision. | |
| 2148 * | |
| 2149 * \param renderer the renderer which should draw a line. | |
| 2150 * \param x1 the x coordinate of the start point. | |
| 2151 * \param y1 the y coordinate of the start point. | |
| 2152 * \param x2 the x coordinate of the end point. | |
| 2153 * \param y2 the y coordinate of the end point. | |
| 2154 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2155 * information. | |
| 2156 * | |
| 2157 * \threadsafety This function should only be called on the main thread. | |
| 2158 * | |
| 2159 * \since This function is available since SDL 3.2.0. | |
| 2160 * | |
| 2161 * \sa SDL_RenderLines | |
| 2162 */ | |
| 2163 extern SDL_DECLSPEC bool SDLCALL SDL_RenderLine(SDL_Renderer *renderer, float x1, float y1, float x2, float y2); | |
| 2164 | |
| 2165 /** | |
| 2166 * Draw a series of connected lines on the current rendering target at | |
| 2167 * subpixel precision. | |
| 2168 * | |
| 2169 * \param renderer the renderer which should draw multiple lines. | |
| 2170 * \param points the points along the lines. | |
| 2171 * \param count the number of points, drawing count-1 lines. | |
| 2172 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2173 * information. | |
| 2174 * | |
| 2175 * \threadsafety This function should only be called on the main thread. | |
| 2176 * | |
| 2177 * \since This function is available since SDL 3.2.0. | |
| 2178 * | |
| 2179 * \sa SDL_RenderLine | |
| 2180 */ | |
| 2181 extern SDL_DECLSPEC bool SDLCALL SDL_RenderLines(SDL_Renderer *renderer, const SDL_FPoint *points, int count); | |
| 2182 | |
| 2183 /** | |
| 2184 * Draw a rectangle on the current rendering target at subpixel precision. | |
| 2185 * | |
| 2186 * \param renderer the renderer which should draw a rectangle. | |
| 2187 * \param rect a pointer to the destination rectangle, or NULL to outline the | |
| 2188 * entire rendering target. | |
| 2189 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2190 * information. | |
| 2191 * | |
| 2192 * \threadsafety This function should only be called on the main thread. | |
| 2193 * | |
| 2194 * \since This function is available since SDL 3.2.0. | |
| 2195 * | |
| 2196 * \sa SDL_RenderRects | |
| 2197 */ | |
| 2198 extern SDL_DECLSPEC bool SDLCALL SDL_RenderRect(SDL_Renderer *renderer, const SDL_FRect *rect); | |
| 2199 | |
| 2200 /** | |
| 2201 * Draw some number of rectangles on the current rendering target at subpixel | |
| 2202 * precision. | |
| 2203 * | |
| 2204 * \param renderer the renderer which should draw multiple rectangles. | |
| 2205 * \param rects a pointer to an array of destination rectangles. | |
| 2206 * \param count the number of rectangles. | |
| 2207 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2208 * information. | |
| 2209 * | |
| 2210 * \threadsafety This function should only be called on the main thread. | |
| 2211 * | |
| 2212 * \since This function is available since SDL 3.2.0. | |
| 2213 * | |
| 2214 * \sa SDL_RenderRect | |
| 2215 */ | |
| 2216 extern SDL_DECLSPEC bool SDLCALL SDL_RenderRects(SDL_Renderer *renderer, const SDL_FRect *rects, int count); | |
| 2217 | |
| 2218 /** | |
| 2219 * Fill a rectangle on the current rendering target with the drawing color at | |
| 2220 * subpixel precision. | |
| 2221 * | |
| 2222 * \param renderer the renderer which should fill a rectangle. | |
| 2223 * \param rect a pointer to the destination rectangle, or NULL for the entire | |
| 2224 * rendering target. | |
| 2225 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2226 * information. | |
| 2227 * | |
| 2228 * \threadsafety This function should only be called on the main thread. | |
| 2229 * | |
| 2230 * \since This function is available since SDL 3.2.0. | |
| 2231 * | |
| 2232 * \sa SDL_RenderFillRects | |
| 2233 */ | |
| 2234 extern SDL_DECLSPEC bool SDLCALL SDL_RenderFillRect(SDL_Renderer *renderer, const SDL_FRect *rect); | |
| 2235 | |
| 2236 /** | |
| 2237 * Fill some number of rectangles on the current rendering target with the | |
| 2238 * drawing color at subpixel precision. | |
| 2239 * | |
| 2240 * \param renderer the renderer which should fill multiple rectangles. | |
| 2241 * \param rects a pointer to an array of destination rectangles. | |
| 2242 * \param count the number of rectangles. | |
| 2243 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2244 * information. | |
| 2245 * | |
| 2246 * \threadsafety This function should only be called on the main thread. | |
| 2247 * | |
| 2248 * \since This function is available since SDL 3.2.0. | |
| 2249 * | |
| 2250 * \sa SDL_RenderFillRect | |
| 2251 */ | |
| 2252 extern SDL_DECLSPEC bool SDLCALL SDL_RenderFillRects(SDL_Renderer *renderer, const SDL_FRect *rects, int count); | |
| 2253 | |
| 2254 /** | |
| 2255 * Copy a portion of the texture to the current rendering target at subpixel | |
| 2256 * precision. | |
| 2257 * | |
| 2258 * \param renderer the renderer which should copy parts of a texture. | |
| 2259 * \param texture the source texture. | |
| 2260 * \param srcrect a pointer to the source rectangle, or NULL for the entire | |
| 2261 * texture. | |
| 2262 * \param dstrect a pointer to the destination rectangle, or NULL for the | |
| 2263 * entire rendering target. | |
| 2264 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2265 * information. | |
| 2266 * | |
| 2267 * \threadsafety This function should only be called on the main thread. | |
| 2268 * | |
| 2269 * \since This function is available since SDL 3.2.0. | |
| 2270 * | |
| 2271 * \sa SDL_RenderTextureRotated | |
| 2272 * \sa SDL_RenderTextureTiled | |
| 2273 */ | |
| 2274 extern SDL_DECLSPEC bool SDLCALL SDL_RenderTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_FRect *srcrect, const SDL_FRect *dstrect); | |
| 2275 | |
| 2276 /** | |
| 2277 * Copy a portion of the source texture to the current rendering target, with | |
| 2278 * rotation and flipping, at subpixel precision. | |
| 2279 * | |
| 2280 * \param renderer the renderer which should copy parts of a texture. | |
| 2281 * \param texture the source texture. | |
| 2282 * \param srcrect a pointer to the source rectangle, or NULL for the entire | |
| 2283 * texture. | |
| 2284 * \param dstrect a pointer to the destination rectangle, or NULL for the | |
| 2285 * entire rendering target. | |
| 2286 * \param angle an angle in degrees that indicates the rotation that will be | |
| 2287 * applied to dstrect, rotating it in a clockwise direction. | |
| 2288 * \param center a pointer to a point indicating the point around which | |
| 2289 * dstrect will be rotated (if NULL, rotation will be done | |
| 2290 * around dstrect.w/2, dstrect.h/2). | |
| 2291 * \param flip an SDL_FlipMode value stating which flipping actions should be | |
| 2292 * performed on the texture. | |
| 2293 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2294 * information. | |
| 2295 * | |
| 2296 * \threadsafety This function should only be called on the main thread. | |
| 2297 * | |
| 2298 * \since This function is available since SDL 3.2.0. | |
| 2299 * | |
| 2300 * \sa SDL_RenderTexture | |
| 2301 */ | |
| 2302 extern SDL_DECLSPEC bool SDLCALL SDL_RenderTextureRotated(SDL_Renderer *renderer, SDL_Texture *texture, | |
| 2303 const SDL_FRect *srcrect, const SDL_FRect *dstrect, | |
| 2304 double angle, const SDL_FPoint *center, | |
| 2305 SDL_FlipMode flip); | |
| 2306 | |
| 2307 /** | |
| 2308 * Copy a portion of the source texture to the current rendering target, with | |
| 2309 * affine transform, at subpixel precision. | |
| 2310 * | |
| 2311 * \param renderer the renderer which should copy parts of a texture. | |
| 2312 * \param texture the source texture. | |
| 2313 * \param srcrect a pointer to the source rectangle, or NULL for the entire | |
| 2314 * texture. | |
| 2315 * \param origin a pointer to a point indicating where the top-left corner of | |
| 2316 * srcrect should be mapped to, or NULL for the rendering | |
| 2317 * target's origin. | |
| 2318 * \param right a pointer to a point indicating where the top-right corner of | |
| 2319 * srcrect should be mapped to, or NULL for the rendering | |
| 2320 * target's top-right corner. | |
| 2321 * \param down a pointer to a point indicating where the bottom-left corner of | |
| 2322 * srcrect should be mapped to, or NULL for the rendering target's | |
| 2323 * bottom-left corner. | |
| 2324 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2325 * information. | |
| 2326 * | |
| 2327 * \threadsafety You may only call this function from the main thread. | |
| 2328 * | |
| 2329 * \since This function is available since SDL 3.2.0. | |
| 2330 * | |
| 2331 * \sa SDL_RenderTexture | |
| 2332 */ | |
| 2333 extern SDL_DECLSPEC bool SDLCALL SDL_RenderTextureAffine(SDL_Renderer *renderer, SDL_Texture *texture, | |
| 2334 const SDL_FRect *srcrect, const SDL_FPoint *origin, | |
| 2335 const SDL_FPoint *right, const SDL_FPoint *down); | |
| 2336 | |
| 2337 /** | |
| 2338 * Tile a portion of the texture to the current rendering target at subpixel | |
| 2339 * precision. | |
| 2340 * | |
| 2341 * The pixels in `srcrect` will be repeated as many times as needed to | |
| 2342 * completely fill `dstrect`. | |
| 2343 * | |
| 2344 * \param renderer the renderer which should copy parts of a texture. | |
| 2345 * \param texture the source texture. | |
| 2346 * \param srcrect a pointer to the source rectangle, or NULL for the entire | |
| 2347 * texture. | |
| 2348 * \param scale the scale used to transform srcrect into the destination | |
| 2349 * rectangle, e.g. a 32x32 texture with a scale of 2 would fill | |
| 2350 * 64x64 tiles. | |
| 2351 * \param dstrect a pointer to the destination rectangle, or NULL for the | |
| 2352 * entire rendering target. | |
| 2353 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2354 * information. | |
| 2355 * | |
| 2356 * \threadsafety This function should only be called on the main thread. | |
| 2357 * | |
| 2358 * \since This function is available since SDL 3.2.0. | |
| 2359 * | |
| 2360 * \sa SDL_RenderTexture | |
| 2361 */ | |
| 2362 extern SDL_DECLSPEC bool SDLCALL SDL_RenderTextureTiled(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_FRect *srcrect, float scale, const SDL_FRect *dstrect); | |
| 2363 | |
| 2364 /** | |
| 2365 * Perform a scaled copy using the 9-grid algorithm to the current rendering | |
| 2366 * target at subpixel precision. | |
| 2367 * | |
| 2368 * The pixels in the texture are split into a 3x3 grid, using the different | |
| 2369 * corner sizes for each corner, and the sides and center making up the | |
| 2370 * remaining pixels. The corners are then scaled using `scale` and fit into | |
| 2371 * the corners of the destination rectangle. The sides and center are then | |
| 2372 * stretched into place to cover the remaining destination rectangle. | |
| 2373 * | |
| 2374 * \param renderer the renderer which should copy parts of a texture. | |
| 2375 * \param texture the source texture. | |
| 2376 * \param srcrect the SDL_Rect structure representing the rectangle to be used | |
| 2377 * for the 9-grid, or NULL to use the entire texture. | |
| 2378 * \param left_width the width, in pixels, of the left corners in `srcrect`. | |
| 2379 * \param right_width the width, in pixels, of the right corners in `srcrect`. | |
| 2380 * \param top_height the height, in pixels, of the top corners in `srcrect`. | |
| 2381 * \param bottom_height the height, in pixels, of the bottom corners in | |
| 2382 * `srcrect`. | |
| 2383 * \param scale the scale used to transform the corner of `srcrect` into the | |
| 2384 * corner of `dstrect`, or 0.0f for an unscaled copy. | |
| 2385 * \param dstrect a pointer to the destination rectangle, or NULL for the | |
| 2386 * entire rendering target. | |
| 2387 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2388 * information. | |
| 2389 * | |
| 2390 * \threadsafety This function should only be called on the main thread. | |
| 2391 * | |
| 2392 * \since This function is available since SDL 3.2.0. | |
| 2393 * | |
| 2394 * \sa SDL_RenderTexture | |
| 2395 * \sa SDL_RenderTexture9GridTiled | |
| 2396 */ | |
| 2397 extern SDL_DECLSPEC bool SDLCALL SDL_RenderTexture9Grid(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_FRect *srcrect, float left_width, float right_width, float top_height, float bottom_height, float scale, const SDL_FRect *dstrect); | |
| 2398 | |
| 2399 /** | |
| 2400 * Perform a scaled copy using the 9-grid algorithm to the current rendering | |
| 2401 * target at subpixel precision. | |
| 2402 * | |
| 2403 * The pixels in the texture are split into a 3x3 grid, using the different | |
| 2404 * corner sizes for each corner, and the sides and center making up the | |
| 2405 * remaining pixels. The corners are then scaled using `scale` and fit into | |
| 2406 * the corners of the destination rectangle. The sides and center are then | |
| 2407 * tiled into place to cover the remaining destination rectangle. | |
| 2408 * | |
| 2409 * \param renderer the renderer which should copy parts of a texture. | |
| 2410 * \param texture the source texture. | |
| 2411 * \param srcrect the SDL_Rect structure representing the rectangle to be used | |
| 2412 * for the 9-grid, or NULL to use the entire texture. | |
| 2413 * \param left_width the width, in pixels, of the left corners in `srcrect`. | |
| 2414 * \param right_width the width, in pixels, of the right corners in `srcrect`. | |
| 2415 * \param top_height the height, in pixels, of the top corners in `srcrect`. | |
| 2416 * \param bottom_height the height, in pixels, of the bottom corners in | |
| 2417 * `srcrect`. | |
| 2418 * \param scale the scale used to transform the corner of `srcrect` into the | |
| 2419 * corner of `dstrect`, or 0.0f for an unscaled copy. | |
| 2420 * \param dstrect a pointer to the destination rectangle, or NULL for the | |
| 2421 * entire rendering target. | |
| 2422 * \param tileScale the scale used to transform the borders and center of | |
| 2423 * `srcrect` into the borders and middle of `dstrect`, or | |
| 2424 * 1.0f for an unscaled copy. | |
| 2425 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2426 * information. | |
| 2427 * | |
| 2428 * \threadsafety This function should only be called on the main thread. | |
| 2429 * | |
| 2430 * \since This function is available since SDL 3.4.0. | |
| 2431 * | |
| 2432 * \sa SDL_RenderTexture | |
| 2433 * \sa SDL_RenderTexture9Grid | |
| 2434 */ | |
| 2435 extern SDL_DECLSPEC bool SDLCALL SDL_RenderTexture9GridTiled(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_FRect *srcrect, float left_width, float right_width, float top_height, float bottom_height, float scale, const SDL_FRect *dstrect, float tileScale); | |
| 2436 | |
| 2437 /** | |
| 2438 * Render a list of triangles, optionally using a texture and indices into the | |
| 2439 * vertex array Color and alpha modulation is done per vertex | |
| 2440 * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). | |
| 2441 * | |
| 2442 * \param renderer the rendering context. | |
| 2443 * \param texture (optional) The SDL texture to use. | |
| 2444 * \param vertices vertices. | |
| 2445 * \param num_vertices number of vertices. | |
| 2446 * \param indices (optional) An array of integer indices into the 'vertices' | |
| 2447 * array, if NULL all vertices will be rendered in sequential | |
| 2448 * order. | |
| 2449 * \param num_indices number of indices. | |
| 2450 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2451 * information. | |
| 2452 * | |
| 2453 * \threadsafety This function should only be called on the main thread. | |
| 2454 * | |
| 2455 * \since This function is available since SDL 3.2.0. | |
| 2456 * | |
| 2457 * \sa SDL_RenderGeometryRaw | |
| 2458 * \sa SDL_SetRenderTextureAddressMode | |
| 2459 */ | |
| 2460 extern SDL_DECLSPEC bool SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, | |
| 2461 SDL_Texture *texture, | |
| 2462 const SDL_Vertex *vertices, int num_vertices, | |
| 2463 const int *indices, int num_indices); | |
| 2464 | |
| 2465 /** | |
| 2466 * Render a list of triangles, optionally using a texture and indices into the | |
| 2467 * vertex arrays Color and alpha modulation is done per vertex | |
| 2468 * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). | |
| 2469 * | |
| 2470 * \param renderer the rendering context. | |
| 2471 * \param texture (optional) The SDL texture to use. | |
| 2472 * \param xy vertex positions. | |
| 2473 * \param xy_stride byte size to move from one element to the next element. | |
| 2474 * \param color vertex colors (as SDL_FColor). | |
| 2475 * \param color_stride byte size to move from one element to the next element. | |
| 2476 * \param uv vertex normalized texture coordinates. | |
| 2477 * \param uv_stride byte size to move from one element to the next element. | |
| 2478 * \param num_vertices number of vertices. | |
| 2479 * \param indices (optional) An array of indices into the 'vertices' arrays, | |
| 2480 * if NULL all vertices will be rendered in sequential order. | |
| 2481 * \param num_indices number of indices. | |
| 2482 * \param size_indices index size: 1 (byte), 2 (short), 4 (int). | |
| 2483 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2484 * information. | |
| 2485 * | |
| 2486 * \threadsafety This function should only be called on the main thread. | |
| 2487 * | |
| 2488 * \since This function is available since SDL 3.2.0. | |
| 2489 * | |
| 2490 * \sa SDL_RenderGeometry | |
| 2491 * \sa SDL_SetRenderTextureAddressMode | |
| 2492 */ | |
| 2493 extern SDL_DECLSPEC bool SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, | |
| 2494 SDL_Texture *texture, | |
| 2495 const float *xy, int xy_stride, | |
| 2496 const SDL_FColor *color, int color_stride, | |
| 2497 const float *uv, int uv_stride, | |
| 2498 int num_vertices, | |
| 2499 const void *indices, int num_indices, int size_indices); | |
| 2500 | |
| 2501 /** | |
| 2502 * Set the texture addressing mode used in SDL_RenderGeometry(). | |
| 2503 * | |
| 2504 * \param renderer the rendering context. | |
| 2505 * \param u_mode the SDL_TextureAddressMode to use for horizontal texture | |
| 2506 * coordinates in SDL_RenderGeometry(). | |
| 2507 * \param v_mode the SDL_TextureAddressMode to use for vertical texture | |
| 2508 * coordinates in SDL_RenderGeometry(). | |
| 2509 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2510 * information. | |
| 2511 * | |
| 2512 * \since This function is available since SDL 3.4.0. | |
| 2513 * | |
| 2514 * \sa SDL_RenderGeometry | |
| 2515 * \sa SDL_RenderGeometryRaw | |
| 2516 * \sa SDL_GetRenderTextureAddressMode | |
| 2517 */ | |
| 2518 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderTextureAddressMode(SDL_Renderer *renderer, SDL_TextureAddressMode u_mode, SDL_TextureAddressMode v_mode); | |
| 2519 | |
| 2520 /** | |
| 2521 * Get the texture addressing mode used in SDL_RenderGeometry(). | |
| 2522 * | |
| 2523 * \param renderer the rendering context. | |
| 2524 * \param u_mode a pointer filled in with the SDL_TextureAddressMode to use | |
| 2525 * for horizontal texture coordinates in SDL_RenderGeometry(), | |
| 2526 * may be NULL. | |
| 2527 * \param v_mode a pointer filled in with the SDL_TextureAddressMode to use | |
| 2528 * for vertical texture coordinates in SDL_RenderGeometry(), may | |
| 2529 * be NULL. | |
| 2530 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2531 * information. | |
| 2532 * | |
| 2533 * \since This function is available since SDL 3.4.0. | |
| 2534 * | |
| 2535 * \sa SDL_SetRenderTextureAddressMode | |
| 2536 */ | |
| 2537 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderTextureAddressMode(SDL_Renderer *renderer, SDL_TextureAddressMode *u_mode, SDL_TextureAddressMode *v_mode); | |
| 2538 | |
| 2539 /** | |
| 2540 * Read pixels from the current rendering target. | |
| 2541 * | |
| 2542 * The returned surface contains pixels inside the desired area clipped to the | |
| 2543 * current viewport, and should be freed with SDL_DestroySurface(). | |
| 2544 * | |
| 2545 * Note that this returns the actual pixels on the screen, so if you are using | |
| 2546 * logical presentation you should use SDL_GetRenderLogicalPresentationRect() | |
| 2547 * to get the area containing your content. | |
| 2548 * | |
| 2549 * **WARNING**: This is a very slow operation, and should not be used | |
| 2550 * frequently. If you're using this on the main rendering target, it should be | |
| 2551 * called after rendering and before SDL_RenderPresent(). | |
| 2552 * | |
| 2553 * \param renderer the rendering context. | |
| 2554 * \param rect an SDL_Rect structure representing the area to read, which will | |
| 2555 * be clipped to the current viewport, or NULL for the entire | |
| 2556 * viewport. | |
| 2557 * \returns a new SDL_Surface on success or NULL on failure; call | |
| 2558 * SDL_GetError() for more information. | |
| 2559 * | |
| 2560 * \threadsafety This function should only be called on the main thread. | |
| 2561 * | |
| 2562 * \since This function is available since SDL 3.2.0. | |
| 2563 */ | |
| 2564 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect); | |
| 2565 | |
| 2566 /** | |
| 2567 * Update the screen with any rendering performed since the previous call. | |
| 2568 * | |
| 2569 * SDL's rendering functions operate on a backbuffer; that is, calling a | |
| 2570 * rendering function such as SDL_RenderLine() does not directly put a line on | |
| 2571 * the screen, but rather updates the backbuffer. As such, you compose your | |
| 2572 * entire scene and *present* the composed backbuffer to the screen as a | |
| 2573 * complete picture. | |
| 2574 * | |
| 2575 * Therefore, when using SDL's rendering API, one does all drawing intended | |
| 2576 * for the frame, and then calls this function once per frame to present the | |
| 2577 * final drawing to the user. | |
| 2578 * | |
| 2579 * The backbuffer should be considered invalidated after each present; do not | |
| 2580 * assume that previous contents will exist between frames. You are strongly | |
| 2581 * encouraged to call SDL_RenderClear() to initialize the backbuffer before | |
| 2582 * starting each new frame's drawing, even if you plan to overwrite every | |
| 2583 * pixel. | |
| 2584 * | |
| 2585 * Please note, that in case of rendering to a texture - there is **no need** | |
| 2586 * to call `SDL_RenderPresent` after drawing needed objects to a texture, and | |
| 2587 * should not be done; you are only required to change back the rendering | |
| 2588 * target to default via `SDL_SetRenderTarget(renderer, NULL)` afterwards, as | |
| 2589 * textures by themselves do not have a concept of backbuffers. Calling | |
| 2590 * SDL_RenderPresent while rendering to a texture will fail. | |
| 2591 * | |
| 2592 * \param renderer the rendering context. | |
| 2593 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2594 * information. | |
| 2595 * | |
| 2596 * \threadsafety This function should only be called on the main thread. | |
| 2597 * | |
| 2598 * \since This function is available since SDL 3.2.0. | |
| 2599 * | |
| 2600 * \sa SDL_CreateRenderer | |
| 2601 * \sa SDL_RenderClear | |
| 2602 * \sa SDL_RenderFillRect | |
| 2603 * \sa SDL_RenderFillRects | |
| 2604 * \sa SDL_RenderLine | |
| 2605 * \sa SDL_RenderLines | |
| 2606 * \sa SDL_RenderPoint | |
| 2607 * \sa SDL_RenderPoints | |
| 2608 * \sa SDL_RenderRect | |
| 2609 * \sa SDL_RenderRects | |
| 2610 * \sa SDL_SetRenderDrawBlendMode | |
| 2611 * \sa SDL_SetRenderDrawColor | |
| 2612 */ | |
| 2613 extern SDL_DECLSPEC bool SDLCALL SDL_RenderPresent(SDL_Renderer *renderer); | |
| 2614 | |
| 2615 /** | |
| 2616 * Destroy the specified texture. | |
| 2617 * | |
| 2618 * Passing NULL or an otherwise invalid texture will set the SDL error message | |
| 2619 * to "Invalid texture". | |
| 2620 * | |
| 2621 * \param texture the texture to destroy. | |
| 2622 * | |
| 2623 * \threadsafety This function should only be called on the main thread. | |
| 2624 * | |
| 2625 * \since This function is available since SDL 3.2.0. | |
| 2626 * | |
| 2627 * \sa SDL_CreateTexture | |
| 2628 * \sa SDL_CreateTextureFromSurface | |
| 2629 */ | |
| 2630 extern SDL_DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture *texture); | |
| 2631 | |
| 2632 /** | |
| 2633 * Destroy the rendering context for a window and free all associated | |
| 2634 * textures. | |
| 2635 * | |
| 2636 * This should be called before destroying the associated window. | |
| 2637 * | |
| 2638 * \param renderer the rendering context. | |
| 2639 * | |
| 2640 * \threadsafety This function should only be called on the main thread. | |
| 2641 * | |
| 2642 * \since This function is available since SDL 3.2.0. | |
| 2643 * | |
| 2644 * \sa SDL_CreateRenderer | |
| 2645 */ | |
| 2646 extern SDL_DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer *renderer); | |
| 2647 | |
| 2648 /** | |
| 2649 * Force the rendering context to flush any pending commands and state. | |
| 2650 * | |
| 2651 * You do not need to (and in fact, shouldn't) call this function unless you | |
| 2652 * are planning to call into OpenGL/Direct3D/Metal/whatever directly, in | |
| 2653 * addition to using an SDL_Renderer. | |
| 2654 * | |
| 2655 * This is for a very-specific case: if you are using SDL's render API, and | |
| 2656 * you plan to make OpenGL/D3D/whatever calls in addition to SDL render API | |
| 2657 * calls. If this applies, you should call this function between calls to | |
| 2658 * SDL's render API and the low-level API you're using in cooperation. | |
| 2659 * | |
| 2660 * In all other cases, you can ignore this function. | |
| 2661 * | |
| 2662 * This call makes SDL flush any pending rendering work it was queueing up to | |
| 2663 * do later in a single batch, and marks any internal cached state as invalid, | |
| 2664 * so it'll prepare all its state again later, from scratch. | |
| 2665 * | |
| 2666 * This means you do not need to save state in your rendering code to protect | |
| 2667 * the SDL renderer. However, there lots of arbitrary pieces of Direct3D and | |
| 2668 * OpenGL state that can confuse things; you should use your best judgment and | |
| 2669 * be prepared to make changes if specific state needs to be protected. | |
| 2670 * | |
| 2671 * \param renderer the rendering context. | |
| 2672 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2673 * information. | |
| 2674 * | |
| 2675 * \threadsafety This function should only be called on the main thread. | |
| 2676 * | |
| 2677 * \since This function is available since SDL 3.2.0. | |
| 2678 */ | |
| 2679 extern SDL_DECLSPEC bool SDLCALL SDL_FlushRenderer(SDL_Renderer *renderer); | |
| 2680 | |
| 2681 /** | |
| 2682 * Get the CAMetalLayer associated with the given Metal renderer. | |
| 2683 * | |
| 2684 * This function returns `void *`, so SDL doesn't have to include Metal's | |
| 2685 * headers, but it can be safely cast to a `CAMetalLayer *`. | |
| 2686 * | |
| 2687 * \param renderer the renderer to query. | |
| 2688 * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a | |
| 2689 * Metal renderer. | |
| 2690 * | |
| 2691 * \threadsafety This function should only be called on the main thread. | |
| 2692 * | |
| 2693 * \since This function is available since SDL 3.2.0. | |
| 2694 * | |
| 2695 * \sa SDL_GetRenderMetalCommandEncoder | |
| 2696 */ | |
| 2697 extern SDL_DECLSPEC void * SDLCALL SDL_GetRenderMetalLayer(SDL_Renderer *renderer); | |
| 2698 | |
| 2699 /** | |
| 2700 * Get the Metal command encoder for the current frame. | |
| 2701 * | |
| 2702 * This function returns `void *`, so SDL doesn't have to include Metal's | |
| 2703 * headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`. | |
| 2704 * | |
| 2705 * This will return NULL if Metal refuses to give SDL a drawable to render to, | |
| 2706 * which might happen if the window is hidden/minimized/offscreen. This | |
| 2707 * doesn't apply to command encoders for render targets, just the window's | |
| 2708 * backbuffer. Check your return values! | |
| 2709 * | |
| 2710 * \param renderer the renderer to query. | |
| 2711 * \returns an `id<MTLRenderCommandEncoder>` on success, or NULL if the | |
| 2712 * renderer isn't a Metal renderer or there was an error. | |
| 2713 * | |
| 2714 * \threadsafety This function should only be called on the main thread. | |
| 2715 * | |
| 2716 * \since This function is available since SDL 3.2.0. | |
| 2717 * | |
| 2718 * \sa SDL_GetRenderMetalLayer | |
| 2719 */ | |
| 2720 extern SDL_DECLSPEC void * SDLCALL SDL_GetRenderMetalCommandEncoder(SDL_Renderer *renderer); | |
| 2721 | |
| 2722 | |
| 2723 /** | |
| 2724 * Add a set of synchronization semaphores for the current frame. | |
| 2725 * | |
| 2726 * The Vulkan renderer will wait for `wait_semaphore` before submitting | |
| 2727 * rendering commands and signal `signal_semaphore` after rendering commands | |
| 2728 * are complete for this frame. | |
| 2729 * | |
| 2730 * This should be called each frame that you want semaphore synchronization. | |
| 2731 * The Vulkan renderer may have multiple frames in flight on the GPU, so you | |
| 2732 * should have multiple semaphores that are used for synchronization. Querying | |
| 2733 * SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER will give you the | |
| 2734 * maximum number of semaphores you'll need. | |
| 2735 * | |
| 2736 * \param renderer the rendering context. | |
| 2737 * \param wait_stage_mask the VkPipelineStageFlags for the wait. | |
| 2738 * \param wait_semaphore a VkSempahore to wait on before rendering the current | |
| 2739 * frame, or 0 if not needed. | |
| 2740 * \param signal_semaphore a VkSempahore that SDL will signal when rendering | |
| 2741 * for the current frame is complete, or 0 if not | |
| 2742 * needed. | |
| 2743 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2744 * information. | |
| 2745 * | |
| 2746 * \threadsafety It is **NOT** safe to call this function from two threads at | |
| 2747 * once. | |
| 2748 * | |
| 2749 * \since This function is available since SDL 3.2.0. | |
| 2750 */ | |
| 2751 extern SDL_DECLSPEC bool SDLCALL SDL_AddVulkanRenderSemaphores(SDL_Renderer *renderer, Uint32 wait_stage_mask, Sint64 wait_semaphore, Sint64 signal_semaphore); | |
| 2752 | |
| 2753 /** | |
| 2754 * Toggle VSync of the given renderer. | |
| 2755 * | |
| 2756 * When a renderer is created, vsync defaults to SDL_RENDERER_VSYNC_DISABLED. | |
| 2757 * | |
| 2758 * The `vsync` parameter can be 1 to synchronize present with every vertical | |
| 2759 * refresh, 2 to synchronize present with every second vertical refresh, etc., | |
| 2760 * SDL_RENDERER_VSYNC_ADAPTIVE for late swap tearing (adaptive vsync), or | |
| 2761 * SDL_RENDERER_VSYNC_DISABLED to disable. Not every value is supported by | |
| 2762 * every driver, so you should check the return value to see whether the | |
| 2763 * requested setting is supported. | |
| 2764 * | |
| 2765 * \param renderer the renderer to toggle. | |
| 2766 * \param vsync the vertical refresh sync interval. | |
| 2767 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2768 * information. | |
| 2769 * | |
| 2770 * \threadsafety This function should only be called on the main thread. | |
| 2771 * | |
| 2772 * \since This function is available since SDL 3.2.0. | |
| 2773 * | |
| 2774 * \sa SDL_GetRenderVSync | |
| 2775 */ | |
| 2776 extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderVSync(SDL_Renderer *renderer, int vsync); | |
| 2777 | |
| 2778 #define SDL_RENDERER_VSYNC_DISABLED 0 | |
| 2779 #define SDL_RENDERER_VSYNC_ADAPTIVE (-1) | |
| 2780 | |
| 2781 /** | |
| 2782 * Get VSync of the given renderer. | |
| 2783 * | |
| 2784 * \param renderer the renderer to toggle. | |
| 2785 * \param vsync an int filled with the current vertical refresh sync interval. | |
| 2786 * See SDL_SetRenderVSync() for the meaning of the value. | |
| 2787 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2788 * information. | |
| 2789 * | |
| 2790 * \threadsafety This function should only be called on the main thread. | |
| 2791 * | |
| 2792 * \since This function is available since SDL 3.2.0. | |
| 2793 * | |
| 2794 * \sa SDL_SetRenderVSync | |
| 2795 */ | |
| 2796 extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderVSync(SDL_Renderer *renderer, int *vsync); | |
| 2797 | |
| 2798 /** | |
| 2799 * The size, in pixels, of a single SDL_RenderDebugText() character. | |
| 2800 * | |
| 2801 * The font is monospaced and square, so this applies to all characters. | |
| 2802 * | |
| 2803 * \since This macro is available since SDL 3.2.0. | |
| 2804 * | |
| 2805 * \sa SDL_RenderDebugText | |
| 2806 */ | |
| 2807 #define SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE 8 | |
| 2808 | |
| 2809 /** | |
| 2810 * Draw debug text to an SDL_Renderer. | |
| 2811 * | |
| 2812 * This function will render a string of text to an SDL_Renderer. Note that | |
| 2813 * this is a convenience function for debugging, with severe limitations, and | |
| 2814 * not intended to be used for production apps and games. | |
| 2815 * | |
| 2816 * Among these limitations: | |
| 2817 * | |
| 2818 * - It accepts UTF-8 strings, but will only renders ASCII characters. | |
| 2819 * - It has a single, tiny size (8x8 pixels). You can use logical presentation | |
| 2820 * or SDL_SetRenderScale() to adjust it. | |
| 2821 * - It uses a simple, hardcoded bitmap font. It does not allow different font | |
| 2822 * selections and it does not support truetype, for proper scaling. | |
| 2823 * - It does no word-wrapping and does not treat newline characters as a line | |
| 2824 * break. If the text goes out of the window, it's gone. | |
| 2825 * | |
| 2826 * For serious text rendering, there are several good options, such as | |
| 2827 * SDL_ttf, stb_truetype, or other external libraries. | |
| 2828 * | |
| 2829 * On first use, this will create an internal texture for rendering glyphs. | |
| 2830 * This texture will live until the renderer is destroyed. | |
| 2831 * | |
| 2832 * The text is drawn in the color specified by SDL_SetRenderDrawColor(). | |
| 2833 * | |
| 2834 * \param renderer the renderer which should draw a line of text. | |
| 2835 * \param x the x coordinate where the top-left corner of the text will draw. | |
| 2836 * \param y the y coordinate where the top-left corner of the text will draw. | |
| 2837 * \param str the string to render. | |
| 2838 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2839 * information. | |
| 2840 * | |
| 2841 * \threadsafety This function should only be called on the main thread. | |
| 2842 * | |
| 2843 * \since This function is available since SDL 3.2.0. | |
| 2844 * | |
| 2845 * \sa SDL_RenderDebugTextFormat | |
| 2846 * \sa SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE | |
| 2847 */ | |
| 2848 extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugText(SDL_Renderer *renderer, float x, float y, const char *str); | |
| 2849 | |
| 2850 /** | |
| 2851 * Draw debug text to an SDL_Renderer. | |
| 2852 * | |
| 2853 * This function will render a printf()-style format string to a renderer. | |
| 2854 * Note that this is a convenience function for debugging, with severe | |
| 2855 * limitations, and is not intended to be used for production apps and games. | |
| 2856 * | |
| 2857 * For the full list of limitations and other useful information, see | |
| 2858 * SDL_RenderDebugText. | |
| 2859 * | |
| 2860 * \param renderer the renderer which should draw the text. | |
| 2861 * \param x the x coordinate where the top-left corner of the text will draw. | |
| 2862 * \param y the y coordinate where the top-left corner of the text will draw. | |
| 2863 * \param fmt the format string to draw. | |
| 2864 * \param ... additional parameters matching % tokens in the `fmt` string, if | |
| 2865 * any. | |
| 2866 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2867 * information. | |
| 2868 * | |
| 2869 * \threadsafety This function should only be called on the main thread. | |
| 2870 * | |
| 2871 * \since This function is available since SDL 3.2.0. | |
| 2872 * | |
| 2873 * \sa SDL_RenderDebugText | |
| 2874 * \sa SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE | |
| 2875 */ | |
| 2876 extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugTextFormat(SDL_Renderer *renderer, float x, float y, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(4); | |
| 2877 | |
| 2878 /** | |
| 2879 * Set default scale mode for new textures for given renderer. | |
| 2880 * | |
| 2881 * When a renderer is created, scale_mode defaults to SDL_SCALEMODE_LINEAR. | |
| 2882 * | |
| 2883 * \param renderer the renderer to update. | |
| 2884 * \param scale_mode the scale mode to change to for new textures. | |
| 2885 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2886 * information. | |
| 2887 * | |
| 2888 * \threadsafety This function should only be called on the main thread. | |
| 2889 * | |
| 2890 * \since This function is available since SDL 3.4.0. | |
| 2891 * | |
| 2892 * \sa SDL_GetDefaultTextureScaleMode | |
| 2893 */ | |
| 2894 extern SDL_DECLSPEC bool SDLCALL SDL_SetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode scale_mode); | |
| 2895 | |
| 2896 /** | |
| 2897 * Get default texture scale mode of the given renderer. | |
| 2898 * | |
| 2899 * \param renderer the renderer to get data from. | |
| 2900 * \param scale_mode a SDL_ScaleMode filled with current default scale mode. | |
| 2901 * See SDL_SetDefaultTextureScaleMode() for the meaning of | |
| 2902 * the value. | |
| 2903 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2904 * information. | |
| 2905 * | |
| 2906 * \threadsafety This function should only be called on the main thread. | |
| 2907 * | |
| 2908 * \since This function is available since SDL 3.4.0. | |
| 2909 * | |
| 2910 * \sa SDL_SetDefaultTextureScaleMode | |
| 2911 */ | |
| 2912 extern SDL_DECLSPEC bool SDLCALL SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale_mode); | |
| 2913 | |
| 2914 /** | |
| 2915 * A structure specifying the parameters of a GPU render state. | |
| 2916 * | |
| 2917 * \since This struct is available since SDL 3.4.0. | |
| 2918 * | |
| 2919 * \sa SDL_CreateGPURenderState | |
| 2920 */ | |
| 2921 typedef struct SDL_GPURenderStateCreateInfo | |
| 2922 { | |
| 2923 SDL_GPUShader *fragment_shader; /**< The fragment shader to use when this render state is active */ | |
| 2924 | |
| 2925 Sint32 num_sampler_bindings; /**< The number of additional fragment samplers to bind when this render state is active */ | |
| 2926 const SDL_GPUTextureSamplerBinding *sampler_bindings; /**< Additional fragment samplers to bind when this render state is active */ | |
| 2927 | |
| 2928 Sint32 num_storage_textures; /**< The number of storage textures to bind when this render state is active */ | |
| 2929 SDL_GPUTexture *const *storage_textures; /**< Storage textures to bind when this render state is active */ | |
| 2930 | |
| 2931 Sint32 num_storage_buffers; /**< The number of storage buffers to bind when this render state is active */ | |
| 2932 SDL_GPUBuffer *const *storage_buffers; /**< Storage buffers to bind when this render state is active */ | |
| 2933 | |
| 2934 SDL_PropertiesID props; /**< A properties ID for extensions. Should be 0 if no extensions are needed. */ | |
| 2935 } SDL_GPURenderStateCreateInfo; | |
| 2936 | |
| 2937 /** | |
| 2938 * A custom GPU render state. | |
| 2939 * | |
| 2940 * \since This struct is available since SDL 3.4.0. | |
| 2941 * | |
| 2942 * \sa SDL_CreateGPURenderState | |
| 2943 * \sa SDL_SetGPURenderStateFragmentUniforms | |
| 2944 * \sa SDL_SetGPURenderState | |
| 2945 * \sa SDL_DestroyGPURenderState | |
| 2946 */ | |
| 2947 typedef struct SDL_GPURenderState SDL_GPURenderState; | |
| 2948 | |
| 2949 /** | |
| 2950 * Create custom GPU render state. | |
| 2951 * | |
| 2952 * \param renderer the renderer to use. | |
| 2953 * \param createinfo a struct describing the GPU render state to create. | |
| 2954 * \returns a custom GPU render state or NULL on failure; call SDL_GetError() | |
| 2955 * for more information. | |
| 2956 * | |
| 2957 * \threadsafety This function should be called on the thread that created the | |
| 2958 * renderer. | |
| 2959 * | |
| 2960 * \since This function is available since SDL 3.4.0. | |
| 2961 * | |
| 2962 * \sa SDL_SetGPURenderStateFragmentUniforms | |
| 2963 * \sa SDL_SetGPURenderState | |
| 2964 * \sa SDL_DestroyGPURenderState | |
| 2965 */ | |
| 2966 extern SDL_DECLSPEC SDL_GPURenderState * SDLCALL SDL_CreateGPURenderState(SDL_Renderer *renderer, SDL_GPURenderStateCreateInfo *createinfo); | |
| 2967 | |
| 2968 /** | |
| 2969 * Set fragment shader uniform variables in a custom GPU render state. | |
| 2970 * | |
| 2971 * The data is copied and will be pushed using | |
| 2972 * SDL_PushGPUFragmentUniformData() during draw call execution. | |
| 2973 * | |
| 2974 * \param state the state to modify. | |
| 2975 * \param slot_index the fragment uniform slot to push data to. | |
| 2976 * \param data client data to write. | |
| 2977 * \param length the length of the data to write. | |
| 2978 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2979 * information. | |
| 2980 * | |
| 2981 * \threadsafety This function should be called on the thread that created the | |
| 2982 * renderer. | |
| 2983 * | |
| 2984 * \since This function is available since SDL 3.4.0. | |
| 2985 */ | |
| 2986 extern SDL_DECLSPEC bool SDLCALL SDL_SetGPURenderStateFragmentUniforms(SDL_GPURenderState *state, Uint32 slot_index, const void *data, Uint32 length); | |
| 2987 | |
| 2988 /** | |
| 2989 * Set custom GPU render state. | |
| 2990 * | |
| 2991 * This function sets custom GPU render state for subsequent draw calls. This | |
| 2992 * allows using custom shaders with the GPU renderer. | |
| 2993 * | |
| 2994 * \param renderer the renderer to use. | |
| 2995 * \param state the state to to use, or NULL to clear custom GPU render state. | |
| 2996 * \returns true on success or false on failure; call SDL_GetError() for more | |
| 2997 * information. | |
| 2998 * | |
| 2999 * \threadsafety This function should be called on the thread that created the | |
| 3000 * renderer. | |
| 3001 * | |
| 3002 * \since This function is available since SDL 3.4.0. | |
| 3003 */ | |
| 3004 extern SDL_DECLSPEC bool SDLCALL SDL_SetGPURenderState(SDL_Renderer *renderer, SDL_GPURenderState *state); | |
| 3005 | |
| 3006 /** | |
| 3007 * Destroy custom GPU render state. | |
| 3008 * | |
| 3009 * \param state the state to destroy. | |
| 3010 * | |
| 3011 * \threadsafety This function should be called on the thread that created the | |
| 3012 * renderer. | |
| 3013 * | |
| 3014 * \since This function is available since SDL 3.4.0. | |
| 3015 * | |
| 3016 * \sa SDL_CreateGPURenderState | |
| 3017 */ | |
| 3018 extern SDL_DECLSPEC void SDLCALL SDL_DestroyGPURenderState(SDL_GPURenderState *state); | |
| 3019 | |
| 3020 /* Ends C function definitions when using C++ */ | |
| 3021 #ifdef __cplusplus | |
| 3022 } | |
| 3023 #endif | |
| 3024 #include <SDL3/SDL_close_code.h> | |
| 3025 | |
| 3026 #endif /* SDL_render_h_ */ |
