/// <summary> /// コンストラクタ /// </summary> /// <param name="app"></param> /// <param name="ide"></param> /// <param name="name"></param> public DEMapChip(Application app, InitDrawingEffect ide, string name) : base(app) { // このクラスを表すID //SetID(CDEDefaultID); // 一意なエフェクト名 m_name = name; m_hDEInit = ide; // レンダー呼び出し回数 CallRenderCount = 1; // 単体描画をする IsSimpleProcess = false; // スプライトフラグ IsSpriteExclusive = true; m_isCreated = false; }
/// <summary> /// デバイス作成時の処理 /// </summary> /// <param name="device"></param> /// <returns></returns> public int OnCreateDevice(SharpDX.Direct3D11.Device device) { int hr = 0; if (!IsOnCreate) { IsOnCreate = true; int idx; // スプライト AddSpriteDrawCommandIdToUse((int)DCRL.DEFAULT); AddSpriteDrawCommandIdToUse((int)DCRL.DEF_SPRITE); AddSpriteDrawCommandIdToUse((int)DCRL.CONST_SPRITE); SetDefaultSpriteDrawCommandId((int)DCRL.D2S_CONST); AddSpriteTechnicIdToUse((int)EffectID.Default); AddSpriteTechnicIdToUse((int)EffectID.Mosaic); AddSpriteTechnicIdToUse((int)EffectID.Gray); AddSpriteTechnicIdToUse((int)EffectID.HSV); AddSpriteTechnicIdToUse((int)EffectID.GradationMap); AddSpriteTechnicIdToUse((int)EffectID.ZoomBloom); AddSpriteTechnicIdToUse((int)EffectID.DirectionalBloom); AddSpriteTechnicIdToUse((int)EffectID.VelocityBloom); AddSpriteTechnicIdToUse((int)EffectID.Ripple); AddSpriteTechnicIdToUse((int)EffectID.DisolveTransition); AddSpriteTechnicIdToUse((int)EffectID.RadialBlurTransition); AddSpriteTechnicIdToUse((int)EffectID.ContrastAdjust); SetDefaultSpriteTechnicId((int)EffectID.Default); //===================== // 0000:初期化 //===================== var hDEI = new InitDrawingEffect(App, "main"); idx = RegisterDrawEffect((int)DCRL.INIT, hDEI); if (-1 == idx) { throw new Exception("InitDrawingEffect('main')登録に失敗"); } // effect cnt 1 //===================== // Mapchip関係 //===================== //string[] aCDEMapChipName = new string[] //{ // "mc_back_tx", // "mc_map_tx00", // "mc_map_tx01", // "mc_front_tx" //}; //DCRL[] aCDEMapChipNo = new DCRL[] //{ // DCRL.BACK_TX, // DCRL.MCHIP_TX0, // DCRL.MCHIP_TX1, // DCRL.FRONT_TX //}; //for (int i = 0; i < 4; ++i) //{ // idx = RegisterDrawEffect((int)aCDEMapChipNo[i], new DEMapChip(App, hDEI, aCDEMapChipName[i])); // if (-1 == idx) // throw new Exception("CDEMapChip('" + aCDEMapChipName[i] + "')登録に失敗"); //} //// effect cnt 5 //===================== // レイヤーごとのスプライト //===================== //string[] a2DSName = new string[] //{ // "mc_2d_def00", // "mc_2d_def01", // "mc_2d_def02", // "mc_2d_def03", // "mc_2d_def04" //}; //DCRL[] a2DS = new DCRL[] //{ // DCRL.D2S_DEF00, // DCRL.D2S_DEF01, // DCRL.D2S_DEF02, // DCRL.D2S_DEF03, // DCRL.D2S_DEF04 //}; //for (int i = 0; i < 5; ++i) //{ // idx = RegisterDrawEffect((int)a2DS[i], new DE2DScreenSprite(App, (int)a2DS[i], a2DSName[i])); // if (-1 == idx) // throw new Exception("CDE2DScreenSprite('" + a2DS[i] + "')登録に失敗"); //} // effect cnt 10 //===================== // 通常 //===================== idx = RegisterDrawEffect((int)DCRL.DEFAULT, new DEDefault(App, "mc_default")); if (-1 == idx) { throw new Exception("エフェクト登録エラー:CDEDefault('mc_default')登録に失敗"); } // effect cnt 12 //===================== // スプライト //===================== idx = RegisterDrawEffect((int)DCRL.DEF_SPRITE, new DEDefaultSprite(App, "mc_def_sprite")); if (-1 == idx) { throw new Exception("エフェクト登録エラー:CDEDefSprite('mc_def_sprite')登録に失敗"); } // effect cnt 15 //===================== // 位置が固定のスプライト //===================== idx = RegisterDrawEffect((int)DCRL.CONST_SPRITE, new DEDefaultSprite(App, "mc_const_sprite", true)); if (-1 == idx) { throw new Exception("エフェクト登録エラー:CDEDefSprite('mc_const_sprite')登録に失敗"); } // effect cnt 16 // プライオリティーのチェック if (m_drawEffect.Count == 0) { throw new Exception("一つもRegisterDrawEffectが作られていません。"); } //bool isErr = false; //string regList = "RegisterDrawEffectを連番で登録していません。\n"; //foreach (var val in m_tmpDrawEffect) //{ // regList += "No." + val.Key + " ClassID:[" + val.Value.GetID() + "] Name:" + val.Value; // if ((DCRL)cnt++ != val.Key) // isErr = true; // m_drawEffect.Add(val.Value); // regList += "\n"; //} //-------------------------------- foreach (var val in m_drawEffect) { hr = val.Value.OnCreateDevice(device); if (hr != 0) { throw new Exception("m_drawEffect.OnCreateDevice 内部でエラー発生"); } } } return(hr); }