public MCDrawAlphanumericSprite CreateDrawAlphanumericSprite(MCBaseSprite spriteID) { MCDrawAlphanumericSprite spDef = new MCDrawAlphanumericSprite(App); string str; if (!m_spriteMgr.ContainsKey(spriteID)) { str = "CreateDrawAlphanumericSprite()スプライト番号[" + spriteID + "]は存在しません。"; throw new Exception(str); } if (spriteID.GetID() != MCAlphanumericSprite.SpriteID) { str = "スプライトハンドルが、固定英数字スプライトではありません。"; throw new Exception(str); } var sp = (MCAlphanumericSprite)spriteID; //! 初期設定 spDef.D2RenderType = (int)SPRITE_TYPE.ALPHANUMERIC; spDef.Technique = m_defTechnicId; spDef.BlendState = (int)BLENDSTATE.ALPHA; spDef.Sprite = sp; spDef.Effect = m_defDrawCommandId; m_drawSprites.Add(spDef, true); return(spDef); }
/// <summary> /// この関数は 1 フレームにつき 1 回呼び出されますが,OnFrameRender関数は、シーンを /// レンダリングする必要があるときに、1 フレーム中に複数回呼び出すことができます。 /// </summary> /// <param name="startUpTime">アプリケーションが開始してからの経過時間 (秒単位) です。</param> /// <param name="elapsedTime">最後のフレームからの経過時間 (秒単位) です。 </param> /// <param name="fps">最後のフレームからの経過時間 (秒単位) です。 </param> internal void OnFrameMove(double startUpTime, float elapsedTime, float fps) { IMCSpriteRender iSprite; MCRenderAlphanumericSprite iASprite; App.SpriteMgr.GetSpriteRenderType(MCRenderAlphanumericSprite.RenderSpriteID, out iSprite); iASprite = (MCRenderAlphanumericSprite)iSprite; for (int i = 0; i < m_Texts.Count; ++i) { if (m_Texts[i].Text == "") { continue; } var draw = new MCDrawAlphanumericSprite(App); draw.Effect = DefaultEffectID; draw.D2RenderType = (int)SPRITE_TYPE.ALPHANUMERIC; draw.BlendState = (int)BLENDSTATE.ALPHA; draw.Box = new MCVector2(800, 600); draw.Text = m_Texts[i].Text; draw.AlignFlags = (int)MC_ANC.STR_ALL; draw.Sprite = m_asciiSprite; draw.D2No = (int)(MCDrawCommandPriority.D2NO_MAX - 1); draw.Build(); iASprite.RegistrationDrawingCommand( draw ); m_Texts[i].Text = ""; } }