我目前正在开发 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];
}
}
有什么优化建议吗?
我以前尝试过使用 neon,但我有一个我无法修复的错误(边界像素有问题)
我像这样迭代像素 2 x 2:
uint8x8_t va = vld1_u8(dest);
uint8x8_t vb = vld1_u8(src);
uint8x8_t res = vqadd_u8(va,vb);
vst1_u8(dest, res);