负载32位图像转换为缓冲和我然后预乘与相应的α颜色值以用于混合。左乘阿尔法图像有效
下面的作品,但我想知道是否有这样做的更有效的方法,即使它只导致足够好的近似?
图像数据是这种类型的指针:
typedef struct rgba_pixel
{
uint8_t r;
uint8_t g;
uint8_t b;
uint8_t a;
} rgba_pixel;
rgba_pixel * image_data;
for (i = 0; i < length; i++)
{
if (image_data[i].a == 0)
image_data[i].r = image_data[i].g = image_data[i].b = 0;
else if (image_data[i].a < 255)
{
alpha_factor = image_data[i].a/255.0;
image_data[i].r = image_data[i].r * alpha_factor;
image_data[i].g = image_data[i].g * alpha_factor;
image_data[i].b = image_data[i].b * alpha_factor;
}
}
能告诉你IMAGE_DATA的和alpha_factor的类型的定义是什么? –
已添加到定义中,alpha_factor是双精度型。 – phenompbg