void FTexture::SetScaledSize(int fitwidth, int fitheight) { xScale = FLOAT2FIXED(float(Width) / fitwidth); yScale = FLOAT2FIXED(float(Height) / fitheight); // compensate for roundoff errors if (MulScale16(xScale, fitwidth) != Width) xScale++; if (MulScale16(yScale, fitheight) != Height) yScale++; }
void FTexture::SetScaledSize(int fitwidth, int fitheight) { xScale = DivScale16(Width, fitwidth); yScale = DivScale16(Height,fitheight); // compensate for roundoff errors if (MulScale16(xScale, fitwidth) != Width) xScale++; if (MulScale16(yScale, fitheight) != Height) yScale++; }
__forceinline SDWORD quadraticinterp (SDWORD sample1, SDWORD sample2, SDWORD sample3, DWORD frac) { SDWORD a = sample1 - 2*sample2 + sample3; SDWORD b = -3*sample1 + 4*sample2 - sample3; frac >>= 17; return MulScale31 (a, frac*frac) + MulScale16 (b, frac) + sample1; }