バッファに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はdoubleです。 – phenompbg