|
一张效果图:

//程序使用的调用参数:
const long testcount=1000; long dst_wh=1004; for (int i=0;i { double zoom=rand()*(1.0/RAND_MAX)+0.5; PicRotarySSE(ppicDst,ppicSrc,rand()*(PI*2/RAND_MAX),zoom,zoom,(dst_wh*rand()*(1.0/RAND_MAX)-ppicSrc.width*0.5),dst_wh*rand()*(1.0/RAND_MAX)-ppicSrc.height*0.5); } |
//ps:如果很多时候源图片绘制时可能落在目标区域的外面,那么需要写一个剪切算法进行排除不必要的绘制
G:旋转测试的结果放到一起:
//注:测试图片都是800*600的图片旋转到1004*1004的图片中心
////////////////////////////////////////////////////////////////////////////////
//速度测试:
//==============================================================================
// PicRotary0 13.6 fps
// PicRotary1 20.3 fps
// PicRotary2 84.4 fps
// PicRotary3 141.1 fps
// PicRotarySEE 154.4 fps
////////////////////////////////////////////////////////////////////////////////
//todo: 重新测试速度,取多个旋转角度的平均值
//ps:文章的下篇将进一步优化图片旋转的质量(使用二次线性插值、三次卷积插值和MipMap链),并完美的处理边缘的锯齿,并考虑介绍颜色的Alpha Blend混合 上一页 [1] [2] [3] [4] [5] [6] [7]
 【责编:Kittoy】
|