【发布时间】:2012-03-04 22:55:46
【问题描述】:
我想在 SDL 中创建一个假的“爆炸”效果。为此,我希望屏幕从当前状态变为白色。
最初,我想像这样使用 SDL_FillRect(explosionTick 是当前的 alpha 值):
SDL_FillRect(screen , NULL , SDL_MapRGBA(screen->format , 255, 255 , 255, explosionTick ));
但它不是反向淡入淡出的矩形,而是完全白色,没有 alpha。我尝试的另一种方法涉及使用填充透明白色(alpha 值为 1)的全屏位图,并为每个爆炸Tick 像这样将其 blit 一次:
for(int a=0; a<explosionTick; a++){
SDL_BlitSurface(boom, NULL, screen, NULL);
}
但是,这最终导致实时运行速度变慢。 有没有什么简单的方法可以在不损失性能的情况下实现这种效果?感谢您的宝贵时间。
【问题讨论】:
-
使用大于 1 的 alpha 值?它会变得不那么流畅,但速度会更快。
-
虽然使用大于 1 的 alpha 增量适用于图像方法,但我希望有一种不同于使用预制图像的方法。
标签: c++ graphics transparency sdl