2D运动模糊解决方案

Sku*_*del 5 language-agnostic graphics 2d effects motion-blur

我想把运动模糊放到我的2D程序中,但我怀疑我当前算法的结果.

我的方法目前看起来像这样:

  • 画到后台.
  • 当更新前缓冲区的时间时,将后缓冲区混合到前缓冲区.
  • 重复

什么会导致"运动模糊"效果显然是混合,因为运动中的物体将留下褪色的痕迹.

这显然对硬件要求不高,无论如何都会进行双缓冲,唯一的额外步骤是alpha混合,这是一个简单的计算.然而,小径将非常尖锐,并且根本不模糊,这可能看起来有点奇怪.在混合步骤之前,我可以在后台缓冲区上做一个盒子模糊,但感觉它可能对像Nintendo DS这样的低端系统非常沉重.

是否有任何解决方案可以让我更有效地做到这一点或产生更好看的效果?

And*_*dge 5

实际上你应该渲染许多中间帧并将它们混合成一个结果.例如,假设您的输出帧速率为50 fps.如果在内部以500 fps进行渲染并将10帧的混合组合在一起,然后向用户显示,则可能会得到合理的结果.

您目前使用的方法模拟持久性,就像您使用慢磷光体渲染到旧的CRT一样.这与运动模糊不是一回事.如果帧持续时间为20ms(1000/50),则运动模糊帧由跨越20ms帧持续时间的渲染组成,所有渲染都具有相同的alpha加权.持久性解决方案包括20,40,60,80,100ms之前的渲染,逐渐淡出.