作ってみたゲームでメニューを出す際に、背景がぼやけて少し暗くなった後に、前面にダイアログが表示される演出があります。そのような画面をぼやかす事をブラーを言います。今回はこの「ブラー」をCocos2d-xのレイヤーに対してかけてみたいと思います。作成したブラーの動作イメージは以下の通りです。Win32プロジェクトWindows10VisualStudio2017解説ほぼ、StackOverFlowにあったQAを自分の解釈で書き直しているため、もっと詳細が知りたい方はリンク先を確認してください。*1ぼやけ方の方法の説明ですが、以下の4枚のレイヤー構成になっています。ベースの灰色の部分は全部を残りの3枚のレイヤーの親となります。次に赤いブラーをかけたい自分で作成したレイヤーを上に載せています。ぼかし効果が開始するとその上の二枚のレイヤーは下のレイヤーの情報を自分にぼかしを入れて転写します。これを2枚で2回繰り返して一番上のレイヤーが最終的に表示し効果を発生させています。これを毎フレーム繰り返すことでリアルタイムにブラーを付けることができます。コード早速コードの説明に移ります。シェーダーファイルを用意するまずシェーダーファイルを用意します。フォルダを作成し以下の2つのファイルを配置します。先述のリンク先のQAから丸ごとコピーしています。PostProcess(レイヤー)を作成します。CreateFuncについてはこちらを参照してください。ブラー効果を載せるためのレイヤーを表します。}};次に実装側です。コンストラクタ内でシェーダーのロードと変数のバインドを行っています。draw関数でRenderTextureに引数のレイヤーを写し取る処理が書いてあります。(レイヤー)という名前でまとめて制御するクラスを作成します。Blur効果を発生させるためのレイヤーを表します。1より大きいとブラーが強くかかる。1よりちいさいと弱くかかる。短い時間に強くかけるとか、長い時間で弱くかけることで量の調整ができる。デフォルトが一番きれいに表示される。override;};次に実装です。関数で処理を行います。this->_blurPass1_PostProcessLayer->setVisible(false);}利用する側のコード以上で、ブラー効果の実装は終了です。次は実際にブラーを利用する側のコードです。実装ているのでそこの部分を抜粋します。関数に以下のように記述します。上記のコードを呼び出せばブラーの設定ができます。第2に引数に1.0より大きな値を入れます。大きくても3.0くらいで十分だと思います。すれば指定した強さのブラーが素早くかかります。長くなりましたが以上です。*1:この情報がなかったら制作不能だったので大変感謝しています。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。4.0がリリースされたみたいCocos2d-xをやめてUnityに移行した話@2019冬C#のDateTimeとC++のtime_tを相互変換するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。