问题描述
我正在使用32位BMP,即每个像素为4个字节:ALPHA,BLUE,GREED,RED-每个像素需要1个字节。我需要从一个图像读取图像,从另一个图像读取像素,并使用alpha混合创建一个新像素。为此,我必须使用float。使用Intel Intrinsics做到最好的方法是什么?
换句话说,我需要使用AVX / SSE重写此代码。
// reading pixel1 and pixel2
float alpha_factor = (float)(pixel2.alpha)*(1.0f/255.0f);
uint8_t blue = (float)pixel1.blue*(1.0f - alpha_factor) + (float)pixel2.blue*alpha_factor;
uint8_t green = (float)pixel1.green*(1.0f - alpha_factor) + (float)pixel2.green*alpha_factor;
uint8_t red = (float)pixel1.red*(1.0f - alpha_factor) + (float)pixel2.red*alpha_factor;
uint8_t alpha = (float)pixel1.alpha*(1.0f - alpha_factor) + (float)pixel2.alpha*alpha_factor;
问题是将1字节整数乘以xmm / ymm中的float。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)