diff options
| author | Stuart Adams <stuartdadams@gmail.com> | 2021-07-24 01:34:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-24 01:34:57 +0100 |
| commit | 158077fd793e1a8da6c73b581aa78af0f99e8f84 (patch) | |
| tree | a38b502e68b07a88ed62691e416fe94e4b01d16a | |
| parent | 7cfc3c9e865f9cd5d848986b0a25cc147a19c7ad (diff) | |
Take sprite color as an optional pointer to const
Unfrotunately sokol's 0 initialise to default idiom does not play nicely with color data, as 0'd out sg_color would ideally be set to a sensible default, white. However, 0'd out sg_color is also a valid color, transparent, which can result in undesirable effects if you are lerping color to transparent.
| -rw-r--r-- | util/sokol_spritebatch.h | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/util/sokol_spritebatch.h b/util/sokol_spritebatch.h index 6ba5b57a..c95d57ba 100644 --- a/util/sokol_spritebatch.h +++ b/util/sokol_spritebatch.h @@ -46,26 +46,26 @@ extern "C" { } sbatch_rect; typedef struct sbatch_sprite { - sg_image image; - sbatch_float2 position; - sbatch_rect source; - sg_color color; - float rotation; - sbatch_float2 origin; - sbatch_float2 scale; - uint32_t flags; - float depth; + sg_image image; + sbatch_float2 position; + sbatch_rect source; + const sg_color* color; + float rotation; + sbatch_float2 origin; + sbatch_float2 scale; + uint32_t flags; + float depth; } sbatch_sprite; typedef struct sbatch_sprite_rect { - sg_image image; - sbatch_rect destination; - sbatch_rect source; - sg_color color; - float rotation; - sbatch_float2 origin; - uint32_t flags; - float depth; + sg_image image; + sbatch_rect destination; + sbatch_rect source; + const sg_color* color; + float rotation; + sbatch_float2 origin; + uint32_t flags; + float depth; } sbatch_sprite_rect; typedef struct sbatch_desc { @@ -891,8 +891,7 @@ SOKOL_API_IMPL void sbatch_push_sprite(const sbatch_sprite* sprite) { tex_coord_top_left.x = temp; } - uint32_t packed_color = _sbatch_pack_color(&sprite->color); - packed_color = packed_color == 0 ? 0xFFFFFFFF : packed_color; + uint32_t packed_color = sprite->color ? _sbatch_pack_color(sprite->color) : 0xFFFFFFFF; ctx->images[sprite_index] = sprite->image; @@ -991,8 +990,7 @@ SOKOL_API_IMPL void sbatch_push_sprite_rect(const sbatch_sprite_rect* sprite) { tex_coord_top_left.x = temp; } - uint32_t packed_color = _sbatch_pack_color(&sprite->color); - packed_color = packed_color == 0 ? 0xFFFFFFFF : packed_color; + uint32_t packed_color = sprite->color ? _sbatch_pack_color(sprite->color) : 0xFFFFFFFF; ctx->images[sprite_index] = sprite->image; |