[Renderers/SDL3] add support for custom SDL3 render commands

This commit is contained in:
lorlouis 2025-06-27 15:53:12 -04:00
parent 8dfcc944fa
commit 69921e898a

View file

@ -4,10 +4,17 @@
#include <SDL3_ttf/SDL_ttf.h> #include <SDL3_ttf/SDL_ttf.h>
#include <SDL3_image/SDL_image.h> #include <SDL3_image/SDL_image.h>
typedef struct { struct Clay_SDL3RendererData;
typedef void SDL_Clay_RenderCustomCommand(
struct Clay_SDL3RendererData *rendererData,
Clay_RenderCommand *rcommand,
const SDL_FRect view);
typedef struct Clay_SDL3RendererData {
SDL_Renderer *renderer; SDL_Renderer *renderer;
TTF_TextEngine *textEngine; TTF_TextEngine *textEngine;
TTF_Font **fonts; TTF_Font **fonts;
SDL_Clay_RenderCustomCommand *custom_handler;
} Clay_SDL3RendererData; } Clay_SDL3RendererData;
/* Global for convenience. Even in 4K this is enough for smooth curves (low radius or rect size coupled with /* Global for convenience. Even in 4K this is enough for smooth curves (low radius or rect size coupled with
@ -257,6 +264,13 @@ static void SDL_Clay_RenderClayCommands(Clay_SDL3RendererData *rendererData, Cla
SDL_RenderTexture(rendererData->renderer, texture, NULL, &dest); SDL_RenderTexture(rendererData->renderer, texture, NULL, &dest);
break; break;
} }
case CLAY_RENDER_COMMAND_TYPE_CUSTOM: {
rendererData->custom_handler(
rendererData,
rcmd,
rect);
break;
}
default: default:
SDL_Log("Unknown render command type: %d", rcmd->commandType); SDL_Log("Unknown render command type: %d", rcmd->commandType);
} }