Microsoft DirectX 8.0 (C++)

モーション ブラー

3D シーンのオブジェクトの知覚速度は、オブジェクトをぼかし、オブジェクトの背後にオブジェクト画像のぼんやりとした跡を残すことで高めることができる。Microsoft® Direct3D® アプリケーションは、フレームごとにオブジェクトを複数回レンダリングして、これを実現する。

通常、Direct3D アプリケーションはシーンをオフスクリーン バッファにレンダリングすることを思い出してほしい。バッファの内容は、アプリケーションでIDirect3DDevice8::Present メソッドを呼び出したときにスクリーンに表示される。Direct3D アプリケーションは、スクリーンにフレームを表示する前にオブジェクトをシーンに複数回レンダリングできる。

アプリケーションで DrawPrimitive メソッドへの呼び出しを複数回行い、同じ 3D オブジェクトを繰り返し渡す。それぞれの呼び出しの前に、オブジェクトの位置座標を少し更新し、ターゲット レンダリング サーフェス上に一連の不鮮明なオブジェクト画像を生成する。オブジェクトが 1 つまたは複数のテクスチャを持っている場合、テクスチャすべてをほとんど透明にしてオブジェクトの最初の画像をレンダリングすると、モーション ブラー エフェクトを高めることができる。オブジェクトをレンダリングするたびに、オブジェクトのテクスチャの透明度が減少する。最終位置座標でオブジェクトをレンダリングするときは、透明度なしでオブジェクトをレンダリングすること。例外は、テクスチャの透明度を必要とするほかのエフェクトにモーション ブラーを追加する場合である。どの場合でも、フレームのオブジェクトの最初の画像が最も透明でなければならない。最後の画像の透明度が最も低くなければならない。

ターゲット レンダリング サーフェスに一連のオブジェクト画像をレンダリングし、残りのシーンもレンダリングしたら、Present メソッドを呼び出してスクリーンにフレームを表示する。

ユーザーがシーンを高速で移動するエフェクトをシミュレーションする場合は、スクリーン全体にモーション ブラーを追加できる。この場合、アプリケーションは、フレームごとにシーン全体を複数回レンダリングする。シーンをレンダリングするたびに、視点を少し移動しなければならない。シーンが非常に複雑な場合、フレームごとのシーンのレンダリング回数が増えるので、高速に移動するシーンほどパフォーマンスが低下するのがユーザーにわかる。