Пример #1
0
 public T[] Read <T>(Format format = null) where T : struct
 {
     if (format == null)
     {
         format = Texture.Format;
     }
     T[] data = new T[format.ByteSize(Dimensions)];
     Read(data, 0, format);
     return(data);
 }
Пример #2
0
 GCPinnedHandle GetData <T>(Format format, Vector2i dimensions, T[] data, int start, out IntPtr pointer)
 {
     if (data == null)
     {
         throw new ArgumentNullException("data");
     }
     if (start + format.ByteSize(dimensions) / Marshal.SizeOf(typeof(T)) > data.Length)
     {
         throw new ArgumentOutOfRangeException("start");
     }
     return(data.Pin(out pointer, start));
 }
Пример #3
0
        protected override void DataCompressedBase(Format format, Vector2i dimensions, IntPtr data)
        {
            Texture.Format = format;
            int imageSize = format.ByteSize(dimensions);

            using (Texture.Lock())
                if (format.IsCompressed)
                {
                    GL.CompressedTexImage2D((TextureTarget)Target, Level, format.PixelInternalFormat.Value, dimensions.X, dimensions.Y, 0, imageSize, data);
                }
                else
                {
                    GL.TexImage2D((TextureTarget)Target, Level, format.PixelInternalFormat.Value, dimensions.X, dimensions.Y, 0, format.PixelFormat.Value, format.PixelType.Value, data);
                }
        }
Пример #4
0
        public void Read <T>(T[] data, int start = 0, Format format = null) where T : struct
        {
            IntPtr pointer;

            if (format == null)
            {
                format = Texture.Format;
            }
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (start + format.ByteSize(Dimensions) > data.Length)
            {
                throw new ArgumentOutOfRangeException("start");
            }
            using (data.Pin(out pointer, start))
                Read(pointer, format);
        }