/// <summary>
        /// MCDeclElementVertexBufferの複製を作る。
        /// </summary>
        /// <param name="pImmediateContext">ID3D11DeviceContextポインタ</param>
        /// <param name="buffer">複製された buffer を格納する</param>
        /// <returns>0 の場合、buffer に新たにMCDeclElementVertexBufferが作られる</returns>
        public int Clone(out MCDeclElementVertexBuffer buffer)
        {
            int     hr = 0;
            DataBox box1, box2;


            buffer = new MCDeclElementVertexBuffer();
            if (buffer == null)
            {
                return(-1);
            }


            // 頂点バッファ リソースの記述を取得する。
            BufferDescription VertexBD = m_vertexBuffer.Description;


            // 頂点バッファ作成
            hr = buffer.CreateVertexBuffer(
                m_device,
                m_preVertexSize,
                m_vetexNum
                );
            if (hr == 0)
            {
                buffer = null;
                return(hr);
            }
            LockVertexBuffer(m_device.ImmediateContext, out box1, MapMode.Read);
            {
                buffer.LockVertexBuffer(m_device.ImmediateContext, out box2, MapMode.WriteDiscard);
                {
                    unsafe
                    {
                        var src  = (byte *)box1.DataPointer;
                        var dest = (byte *)box2.DataPointer;
                        for (int i = 0; i < m_vetexNum * m_preVertexSize; i++)
                        {
                            dest[i] = src[i];
                        }
                    }
                }
                buffer.UnlockVertexBuffer(m_device.ImmediateContext);
            }
            UnlockVertexBuffer(m_device.ImmediateContext);

            buffer.m_isMemoryShare   = false;
            buffer.m_offset          = m_offset;
            buffer.m_vetexNum        = m_vetexNum;
            buffer.m_preVertexSize   = m_preVertexSize;
            buffer.m_vaVertexElement = m_vaVertexElement;

            return(hr);
        }