我想在SDL中创建一个虚假的“爆炸”效果。为此,我希望屏幕能够从当前的状态变为现实,并逐渐变为白色。
最初,我想过像这样使用SDL_FillRect(其中explosionTick是当前的alpha值):
SDL_FillRect(screen , NULL , SDL_MapRGBA(screen->format , 255, 255 , 255, explosionTick ));
但它不是反向渐变矩形,而是显示完全白色而没有alpha。我尝试的另一种方法是使用填充了透明白色(alpha值为1)的全屏位图,并为每个explosionTick进行一次blit,如下所示:
for(int a=0; a<explosionTick; a++){
SDL_BlitSurface(boom, NULL, screen, NULL);
}
但是,这最终导致实时运行缓慢。 有没有简单的方法来实现这种效果而不会失去性能?谢谢你的时间。
答案 0 :(得分:1)
嗯,你需要混合和AFAIK SDL使用SDL_Blitsurface的唯一方法。所以你只需要优化那个blit。我建议对那些进行基准测试: