运动模糊 (Direct3D 9)
可以通过模糊对象并在对象后面留下模糊对象图像,从而增强 3D 场景中对象的感知速度。 Direct3D 应用程序通过为每个帧多次呈现对象来实现此目的。
回想一下,Direct3D 应用程序通常会将场景呈现到屏幕外缓冲区。 当应用程序调用 IDirect3DDevice9::P resent 方法时,缓冲区的内容将显示在屏幕上。 Direct3D 应用程序可以多次将对象呈现到场景中,然后再在屏幕上显示框架。
以编程方式,应用程序多次调用 DrawPrimitive 方法,并重复传递相同的 3D 对象。 每次调用之前,对象的位置都会略有更新,从而在目标呈现图面上生成一系列模糊的对象图像。 如果对象具有一个或多个纹理,则应用程序可以通过呈现对象的第一张图像及其所有纹理几乎透明来增强动作模糊效果。 每次对象呈现时,对象的纹理透明度都会下降。 当应用程序将对象呈现在其最终位置时,它应呈现对象的纹理而不透明。 例外情况是,如果要向需要纹理透明度的另一个效果添加动作模糊。 在任何情况下,帧中对象的初始图像应该是最透明的。 最终图像应该是最不透明的。
应用程序将一系列对象图像呈现到目标呈现图面并呈现场景的其余部分后,应调用 IDirect3DDevice9::P resent 方法在屏幕上显示帧。
如果应用程序正在模拟用户以高速移动场景的效果,它可以向整个场景添加动作模糊。 在这种情况下,应用程序为每个帧呈现整个场景多次。 每次场景呈现时,应用程序必须稍微移动视点。 如果场景高度复杂,则用户可能会看到明显的性能下降,因为每个帧的场景呈现数量增加,加速会增加。
相关主题