aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Adams <stuartdadams@gmail.com>2021-07-24 01:34:57 +0100
committerGitHub <noreply@github.com>2021-07-24 01:34:57 +0100
commit158077fd793e1a8da6c73b581aa78af0f99e8f84 (patch)
treea38b502e68b07a88ed62691e416fe94e4b01d16a
parent7cfc3c9e865f9cd5d848986b0a25cc147a19c7ad (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.h40
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;