私は現在、ios のペイント アプリに取り組んでいます。
NSMutableData バッファへの直接描画を使用し、次のようにブラシでブレンドを適用します。
- (void) combineColorDestination:(unsigned char*) dest source:(unsigned char*) src
{
const unsigned char sra = ((unsigned char *)src)[3];
const float oneminusalpha = 1.0f - (sra / 255.f);
int d[4];
for (int i=0;i<4;i++)
{
d[i] = oneminusalpha * ((unsigned char *)dest)[i] + ((unsigned char *)src)[i];
if (d[i]>255)
d[i] = 255;
((unsigned char *)dest)[i] = (unsigned char)d[i];
}
}
最適化のための提案はありますか?
以前は neo を使用しようとしましたが、修正できなかったバグがあります (境界ピクセルにバグがありました)。
私はこのようにピクセルを2つずつ繰り返していました:
uint8x8_t va = vld1_u8(dest);
uint8x8_t vb = vld1_u8(src);
uint8x8_t res = vqadd_u8(va,vb);
vst1_u8(dest, res);