|
你的事ARM处理器吗?在循环外先做浮点转整数的工作,然后在循环内只做整数运算试试。
BYTE btB,btG,btR,btB1,btG1,btR1;
UINT iFixTransparency = (UINT)(iTransparency * 256);
UINT FixTransparency0 = (UINT)(Transparency0 * 256);
for(int i = 0 ; i < nHeight ; i ++)
{
for(int j = 0 ; j < nWidth ; j++)
{
btB = pbtPixels[i * nWidth * nPixelSize + j * nPixelSize];
btG = pbtPixels[i * nWidth * nPixelSize + j * nPixelSize + 1 ];
btR = pbtPixels[i * nWidth * nPixelSize + j * nPixelSize + 2 ];
btB1 = pbtPixels1[i * nWidth * nPixelSize + j * nPixelSize];
btG1 = pbtPixels1[i * nWidth * nPixelSize + j * nPixelSize + 1];
btR1 = pbtPixels1[i * nWidth * nPixelSize + j * nPixelSize + 2];
btB = ((btB1 * iFixTransparency + FixTransparency0 * bt)>>8);
btG = (btG1 * iFixTransparency + FixTransparency0 * btG)>>8);
btR = ((btR1 * iFixTransparency + FixTransparency0 * btR)>>8);
pbtPixels[i * nWidth * nPixelSize + j * nPixelSize] = btB ;
pbtPixels[i * nWidth * nPixelSize + j * nPixelSize + 1] = btG;
pbtPixels[i * nWidth * nPixelSize + j * nPixelSize + 2] = btR;
}
} |
|