Beispiel #1
0
        internal unsafe override void OnUpdateResource(object sender, EventArgs e)
        {
            base.OnUpdateResource(sender, e);

            var format        = PixelFormat;
            var bytesPerPixel = (format.GetBitsPerPixel() + 7) / 8;
            var width         = (uint)PixelWidth;
            var height        = (uint)PixelHeight;
            var rowPitch      = 4 * ((width * bytesPerPixel + 3) / 4);
            var pixels        = new byte[rowPitch * height];

            fixed(byte *pixelsPtr = pixels)
            {
                var pixelsIPtr = new IntPtr(pixelsPtr);

                CopyPixels(null, (int)rowPitch, pixelsIPtr, pixels.Length);
                var data = new MemoryTextureData
                {
                    Format       = format,
                    Dimension    = 2,
                    Width        = width,
                    Height       = height,
                    RowPitch     = rowPitch,
                    Pixels       = pixelsIPtr,
                    PixelsLength = (uint)pixels.Length
                };

                MediaResourceManager.Current.UpdateMemoryTexture(_textureRes.Value, ref data);
            }
        }
Beispiel #2
0
 public void UpdateMemoryTexture(IResource res, ref MemoryTextureData data)
 {
     _resourceManager.UpdateMemoryTexture(res, ref data);
 }