From 82f7dd017ee3899ff09475c25222e995f70a80b8 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Mon, 8 Jun 2020 18:24:53 +0200 Subject: [PATCH] REVIEWED: ImageAlphaPremultiply(), optimization --- src/textures.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/textures.c b/src/textures.c index 1a8af6149..05003581b 100644 --- a/src/textures.c +++ b/src/textures.c @@ -1182,10 +1182,19 @@ void ImageAlphaPremultiply(Image *image) for (int i = 0; i < image->width*image->height; i++) { - alpha = (float)pixels[i].a/255.0f; - pixels[i].r = (unsigned char)((float)pixels[i].r*alpha); - pixels[i].g = (unsigned char)((float)pixels[i].g*alpha); - pixels[i].b = (unsigned char)((float)pixels[i].b*alpha); + if (pixels[i].a == 0) + { + pixels[i].r = 0; + pixels[i].g = 0; + pixels[i].b = 0; + } + else if (pixels[i].a < 255) + { + alpha = (float)pixels[i].a/255.0f; + pixels[i].r = (unsigned char)((float)pixels[i].r*alpha); + pixels[i].g = (unsigned char)((float)pixels[i].g*alpha); + pixels[i].b = (unsigned char)((float)pixels[i].b*alpha); + } } RL_FREE(image->data);