Example #1
0
    public void UpdateRaw(ReadOnlySpan <byte> data, int pitch)
    {
        using var mapped = _device.Map(this);

        if (mapped.RowPitch == pitch)
        {
            data.CopyTo(mapped.Data);
        }
        else
        {
            var dest     = mapped.Data;
            var rowWidth = Math.Min(pitch, mapped.RowPitch);
            for (var y = 0; y < mSize.Height; ++y)
            {
                var srcRow  = data.Slice(y * pitch, rowWidth);
                var destRow = dest.Slice(y * mapped.RowPitch, rowWidth);
                srcRow.CopyTo(destRow);
            }
        }
    }