TOP

ABOUT

PROGRAM

DIALY







エフェクト(11) モーションブラー

 1.はじめに…
 今回は,モーションブラーです。
 正確には,今回やるプログラムはモーションブラーではなくて,残像エフェクトという方が正しいのかもしれません…。
本当のモーションブラーではありません。




 2.アルゴリズムの概要
 テクスチャを2枚用意して,片方には現在のシーンを描画,もう片方は1つ前のフレームのシーンを描画した結果が入るようにに,まずプログラムを組みます。
FBOとかを使ったりするのが現代風なんでしょうけど,面倒なのでglCopyTexImage2D()関数をつかって描画内容をテクスチャにコピーするやり方にしました。
描画の仕方はまず,ブレンディングを有効にします。このとき加算合成されるようにglBlendFunc()の第一引数はGL_SRC_ALPHA,第二引数はGL_ONE_MINUS_SRC_ALPHAにしておきます。,つぎに元になるシーン,Texture0, Texture1の順で描画しますTexture0とTexture1は画面サイズで描画します。そしてこの描画結果をTexture0に保存します。
つぎにフレームではシーン,Texture1,Texture0の順で描画し,Texture1に保存,つぎのフレームではシーン,Texture0, Texture1の順で描画し,Texture0に保存というように,交互に保存します。
こうすることで,新しいものほど色が濃く描画され,古いものほど色が薄くなっていくので残像効果が得られます。


 Download
本ソースコードおよびプログラムを使用したことによる如何なる損害も製作者は責任を負いません。
本ソースコードおよびプログラムは自己責任でご使用ください。
プログラムの作成にはMicrosoft Visual Studio 2005 SP1 Professionalを用いています。