运动模糊 (Direct3D 9)

通过模糊对象并在对象后面留下模糊的对象图像痕迹,可以增强对象在 3D 场景中的感知速度。 Direct3D 应用程序通过每帧多次呈现对象来实现此目的。

回想一下,Direct3D 应用程序通常将场景渲染到屏幕外缓冲区中。 当应用程序调用 IDirect3DDevice9::P resent 方法时,缓冲区的内容将显示在屏幕上。 Direct3D 应用程序可以在屏幕上显示帧之前将对象多次呈现到场景中。

应用程序以编程方式对 DrawPrimitive 方法进行多次调用,并重复传递相同的 3D 对象。 在每次调用之前,对象的位置会略微更新,从而在目标呈现图面上生成一系列模糊的对象图像。 如果对象具有一个或多个纹理,则应用程序可以通过呈现对象的所有纹理几乎透明的第一个图像来增强运动模糊效果。 每次呈现对象时,对象的纹理的透明度都会降低。 当应用程序将对象呈现在其最终位置时,它应呈现对象的纹理而不透明。 例外情况是,如果要将运动模糊添加到另一个需要纹理透明度的效果。 在任何情况下,帧中对象的初始图像应该是最透明的。 最终图像应最不透明。

在应用程序将一系列对象图像呈现到目标呈现图面上并渲染场景的其余部分后,它应调用 IDirect3DDevice9::P resent 方法来在屏幕上显示帧。

如果应用程序正在模拟用户高速在场景中移动的效果,它可以为整个场景添加运动模糊。 在这种情况下,应用程序每帧多次呈现整个场景。 每次渲染场景时,应用程序都必须稍微移动视点。 如果场景高度复杂,则用户可能会看到由于每帧场景渲染数量增加而增加时,性能明显下降。

抗锯齿