public void CreateIndexBuffer <T>(T[] indices, ResourceUsage usage = ResourceUsage.Default, CpuAccessFlags cpuAccess = CpuAccessFlags.ReadWrite)
            where T : struct
        {
            _faceCount      = indices.Length / 3;
            _is16BitIndices = ClrRuntime.Runtime.SizeOf <T>() == 2;
            if (_ib != null)
            {
                _ib.Dispose();
            }

            _ib = GraphicDeviceFactory.Device.CreateIndexBuffer <T>(usage, cpuAccess, indices);
        }
        public void CreateVertexBuffer <T>(T[] vertexes, ResourceUsage usage = ResourceUsage.Default, CpuAccessFlags cpuAccess = CpuAccessFlags.ReadWrite)
            where T : struct
        {
            if (_vb != null)
            {
                _vb.Dispose();
            }

            int size = ClrRuntime.Runtime.SizeOf <T>();

            _vertexCount = (vertexes.Length * size) / _vd.Size;

            _vb = GraphicDeviceFactory.Device.CreateVertexBuffer <T>(_vd.Size, usage, cpuAccess, data: vertexes);
        }