/// <summary>
        /// スプライトを描画する
        /// </summary>
        /// <param name="immediateContext">DeviceContextポインタ。</param>
        /// <param name="pass">EffectPassポインタ。</param>
        /// <param name="drawSprite">基本描画スプライト</param>
        /// <return>通常、エラーが発生しなかった場合は MC_S_OK を返す。</return>
        public int Render(DeviceContext immediateContext, EffectPass pass, MCDrawSpriteBase drawSprite)
        {
            int[] strides = new int[] { System.Runtime.InteropServices.Marshal.SizeOf(new MC_VERTEX_PCTx()) };
            int[] offsets = new int[] { 0 };
            SharpDX.Direct3D11.Buffer[] vertexBuffers = new SharpDX.Direct3D11.Buffer[] { m_vertexBuffer };

            immediateContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            immediateContext.InputAssembler.SetVertexBuffers(0, vertexBuffers, strides, offsets);
            immediateContext.InputAssembler.SetIndexBuffer(m_indexBuffer, SharpDX.DXGI.Format.R16_UInt, 0);
            immediateContext.DrawIndexed(m_drawTriangleNum * 3, 0, 0);
            return(0);
        }
 /// <summary>
 /// 値を複製セットする
 /// </summary>
 /// <param name="r"></param>
 public void Set(MCDrawSpriteBase r)
 {
     IsBillbord       = r.IsBillbord;
     IsBillbordConstX = r.IsBillbordConstX;
     IsBillbordConstY = r.IsBillbordConstY;
     BlendState       = r.BlendState;
     Flip             = r.Flip;
     m_anchor         = r.m_anchor;
     m_angle          = r.m_angle;
     m_scale          = r.m_scale;
     m_position       = r.m_position;
     m_BVSphere       = r.m_BVSphere;
     m_visible        = r.m_visible;
 }
        /// <summary>
        /// スプライトを描画する
        /// </summary>
        /// <param name="immediateContext">DeviceContextポインタ。</param>
        /// <param name="pass">EffectPassポインタ。</param>
        /// <param name="drawSprite">基本描画スプライト</param>
        /// <return>通常、エラーが発生しなかった場合は MC_S_OK を返す。</return>
        public int Render(DeviceContext immediateContext, EffectPass pass, MCDrawSpriteBase drawSprite)
        {
#if DEBUG
            if (drawSprite.GetID() != MCDrawSquareTilesSprite.DrawSpriteID)
            {
                Debug.Assert(false);
                throw new Exception("描画スプライトが MCDrawSquareTilesSprite でない。");
            }
#endif
            var ds = (MCDrawSquareTilesSprite)drawSprite;

#if DEBUG
            if (m_vertexBuffers.ContainsKey(ds.TileLength))
            {
                Debug.Assert(false);
                throw new Exception("存在しない長さ。");
            }
#endif
            var v = m_vertexBuffers[ds.TileLength];

            int[] strides = new int[] {
                System.Runtime.InteropServices.Marshal.SizeOf(new MC_VERTEX_P()),
                System.Runtime.InteropServices.Marshal.SizeOf(new MC_VERTEX_Tx()),
            };
            int[] offsets = new int[] { 0, 1 };
            SharpDX.Direct3D11.Buffer[] vertexBuffers = new SharpDX.Direct3D11.Buffer[] {
                v.vertexBuffer,
                v.uvBuffer
            };

            immediateContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            immediateContext.InputAssembler.SetIndexBuffer(v.indexBuffer, SharpDX.DXGI.Format.R16_UInt, 0);
            immediateContext.InputAssembler.SetVertexBuffers(0, vertexBuffers, strides, offsets);
            immediateContext.DrawIndexed(v.allTriangle * 3, 0, 0);

            return(0);
        }