表示した画像にポストエフェクトをかける

AC-Engineで表示した画像にポストエフェクトをかけます。

サンプル


  /// <summary>
  /// 様々なポストエフェクトを適用するサンプルです。
  /// </summary>
  class PostEffect
  {
      [System.STAThread]
      static void Main(string[] args)
      {
          // 説明
          System.Console.WriteLine("Z : グレースケール追加");
          System.Console.WriteLine("X : セピア調追加");
          System.Console.WriteLine("C : ガウスぼかし追加");
          System.Console.WriteLine("V : ライトブルーム追加");
          System.Console.WriteLine("A : 全てのポストエフェクト消去");
  
          // AC-Engineを初期化する。
          ace.Engine.Initialize("PostEffect", 640, 480, new ace.EngineOption());
  
          // シーン等を初期化する
          var scene = new ace.Scene();
          var layer = new ace.Layer2D();
          var effectObj = new ace.EffectObject2D();
          var effect = ace.Engine.Graphics.CreateEffect("Data/Effect/magic.efk");
  
          scene.HDRMode = true; ;
          scene.AddLayer(layer);
          layer.AddObject(effectObj);
          ace.Engine.ChangeScene(scene);
  
          effectObj.Scale = new ace.Vector2DF(50, 50);
          effectObj.Position = new ace.Vector2DF(320, 240);
          effectObj.Effect = effect;
          effectObj.Play();
  
          // AC-Engineのウインドウが閉じられていないか確認する。
          while (ace.Engine.DoEvents())
          {
              // AC-Engineを更新する。
              ace.Engine.Update();
  
              // Aを押したらポストエフェクトを全て破棄する。
              if (ace.Engine.Keyboard.GetKeyState(ace.Keys.A) == ace.KeyState.Push)
              {
                  layer.ClearPostEffects();
              }
  
              // Zを押したらグレースケールを追加する。
              if (ace.Engine.Keyboard.GetKeyState(ace.Keys.Z) == ace.KeyState.Push)
              {
                  var posteffect = new ace.PostEffectGrayScale();
                  layer.AddPostEffect(posteffect);
              }
  
              // Xを押したらセピアを追加する。
              if (ace.Engine.Keyboard.GetKeyState(ace.Keys.X) == ace.KeyState.Push)
              {
                  var posteffect = new ace.PostEffectSepia();
                  layer.AddPostEffect(posteffect);
              }
  
              // Cを押したらガウスぼかしを追加する。
              if (ace.Engine.Keyboard.GetKeyState(ace.Keys.C) == ace.KeyState.Push)
              {
                  var posteffect = new ace.PostEffectGaussianBlur();
                  posteffect.Intensity = 5.0f;
                  layer.AddPostEffect(posteffect);
              }
  
              // Vを押したらライトブルームを追加する。
              if (ace.Engine.Keyboard.GetKeyState(ace.Keys.V) == ace.KeyState.Push)
              {
                  var posteffect = new ace.PostEffectLightBloom();
                  posteffect.Intensity = 10.0f;
                  posteffect.Exposure = 1.0f;
                  posteffect.Threshold = 0.3f;
                  layer.AddPostEffect(posteffect);
              }
          }
  
          // AC-Engineの終了処理をする。
          ace.Engine.Terminate();
      }
  }