public override ReadPixelBuffer CopyToBuffer( ImageFormat format, ImageDatatype dataType, int rowAlignment) { if (format == ImageFormat.StencilIndex) { throw new ArgumentException("StencilIndex is not supported by CopyToBuffer. Try DepthStencil instead.", "format"); } VerifyRowAlignment(rowAlignment); ReadPixelBufferGL3x pixelBuffer = new ReadPixelBufferGL3x(PixelBufferHint.Stream, TextureUtility.RequiredSizeInBytes(_description.Width, _description.Height, format, dataType, rowAlignment)); pixelBuffer.Bind(); BindToLastTextureUnit(); GL.PixelStore(PixelStoreParameter.PackAlignment, rowAlignment); GL.GetTexImage(_target, 0, TypeConverterGL3x.To(format), TypeConverterGL3x.To(dataType), new IntPtr()); return(pixelBuffer); }
public virtual void CopyFromBuffer( WritePixelBuffer pixelBuffer, ImageFormat format, ImageDatatype dataType) { CopyFromBuffer(pixelBuffer, 0, 0, Description.Width, Description.Height, format, dataType, 4); }
public abstract void CopyFromBuffer( WritePixelBuffer pixelBuffer, int xOffset, int yOffset, int width, int height, ImageFormat format, ImageDatatype dataType, int rowAlignment);
public override void CopyFromBuffer( WritePixelBuffer pixelBuffer, int xOffset, int yOffset, int width, int height, ImageFormat format, ImageDatatype dataType, int rowAlignment) { if (pixelBuffer.SizeInBytes < TextureUtility.RequiredSizeInBytes( width, height, format, dataType, rowAlignment)) { throw new ArgumentException("Pixel buffer is not big enough for provided width, height, format, and datatype."); } if (xOffset < 0) { throw new ArgumentOutOfRangeException("xOffset", "xOffset must be greater than or equal to zero."); } if (yOffset < 0) { throw new ArgumentOutOfRangeException("yOffset", "yOffset must be greater than or equal to zero."); } if (xOffset + width > _description.Width) { throw new ArgumentOutOfRangeException("xOffset + width must be less than or equal to Description.Width"); } if (yOffset + height > _description.Height) { throw new ArgumentOutOfRangeException("yOffset + height must be less than or equal to Description.Height"); } VerifyRowAlignment(rowAlignment); WritePixelBufferGL3x bufferObjectGL = (WritePixelBufferGL3x)pixelBuffer; bufferObjectGL.Bind(); BindToLastTextureUnit(); GL.PixelStore(PixelStoreParameter.UnpackAlignment, rowAlignment); GL.TexSubImage2D(_target, 0, xOffset, yOffset, width, height, TypeConverterGL3x.To(format), TypeConverterGL3x.To(dataType), new IntPtr()); GenerateMipmaps(); }
public static int RequiredSizeInBytes( int width, int height, ImageFormat format, ImageDatatype dataType, int rowAlignment) { int rowSize = width * NumberOfChannels(format) * SizeInBytes(dataType); int remainder = (rowSize % rowAlignment); rowSize += (rowAlignment - remainder) % rowAlignment; return(rowSize * height); }
public abstract ReadPixelBuffer CopyToBuffer( ImageFormat format, ImageDatatype dataType, int rowAlignment);
public virtual ReadPixelBuffer CopyToBuffer(ImageFormat format, ImageDatatype dataType) { return CopyToBuffer(format, dataType, 4); }
public static int RequiredSizeInBytes( int width, int height, ImageFormat format, ImageDatatype dataType, int rowAlignment) { int rowSize = width * NumberOfChannels(format) * SizeInBytes(dataType); int remainder = (rowSize % rowAlignment); rowSize += (rowAlignment - remainder) % rowAlignment; return rowSize * height; }
public virtual ReadPixelBuffer CopyToBuffer(ImageFormat format, ImageDatatype dataType) { return(CopyToBuffer(format, dataType, 4)); }
public override ReadPixelBuffer CopyToBuffer( ImageFormat format, ImageDatatype dataType, int rowAlignment) { if (format == ImageFormat.StencilIndex) { throw new ArgumentException("StencilIndex is not supported by CopyToBuffer. Try DepthStencil instead.", "format"); } VerifyRowAlignment(rowAlignment); ReadPixelBufferGL3x pixelBuffer = new ReadPixelBufferGL3x(PixelBufferHint.Stream, TextureUtility.RequiredSizeInBytes(_description.Width, _description.Height, format, dataType, rowAlignment)); pixelBuffer.Bind(); BindToLastTextureUnit(); GL.PixelStore(PixelStoreParameter.PackAlignment, rowAlignment); GL.GetTexImage(_target, 0, TypeConverterGL3x.To(format), TypeConverterGL3x.To(dataType), new IntPtr()); return pixelBuffer; }
public static PixelType To(ImageDatatype type) { switch (type) { case ImageDatatype.Byte: return(PixelType.Byte); case ImageDatatype.UnsignedByte: return(PixelType.UnsignedByte); case ImageDatatype.Short: return(PixelType.Short); case ImageDatatype.UnsignedShort: return(PixelType.UnsignedShort); case ImageDatatype.Int: return(PixelType.Int); case ImageDatatype.UnsignedInt: return(PixelType.UnsignedInt); case ImageDatatype.Float: return(PixelType.Float); case ImageDatatype.HalfFloat: return(PixelType.HalfFloat); case ImageDatatype.UnsignedByte332: return(PixelType.UnsignedByte332); case ImageDatatype.UnsignedShort4444: return(PixelType.UnsignedShort4444); case ImageDatatype.UnsignedShort5551: return(PixelType.UnsignedShort5551); case ImageDatatype.UnsignedInt8888: return(PixelType.UnsignedInt8888); case ImageDatatype.UnsignedInt1010102: return(PixelType.UnsignedInt1010102); case ImageDatatype.UnsignedByte233Reversed: return(PixelType.UnsignedByte233Reversed); case ImageDatatype.UnsignedShort565: return(PixelType.UnsignedShort565); case ImageDatatype.UnsignedShort565Reversed: return(PixelType.UnsignedShort565Reversed); case ImageDatatype.UnsignedShort4444Reversed: return(PixelType.UnsignedShort4444Reversed); case ImageDatatype.UnsignedShort1555Reversed: return(PixelType.UnsignedShort1555Reversed); case ImageDatatype.UnsignedInt8888Reversed: return(PixelType.UnsignedInt8888Reversed); case ImageDatatype.UnsignedInt2101010Reversed: return(PixelType.UnsignedInt2101010Reversed); case ImageDatatype.UnsignedInt248: return(PixelType.UnsignedInt248); case ImageDatatype.UnsignedInt10F11F11FReversed: return(PixelType.UnsignedInt10F11F11FRev); case ImageDatatype.UnsignedInt5999Reversed: return(PixelType.UnsignedInt5999Rev); case ImageDatatype.Float32UnsignedInt248Reversed: return(PixelType.Float32UnsignedInt248Rev); } throw new ArgumentException("type"); }
public static int SizeInBytes(ImageDatatype dataType) { switch (dataType) { case ImageDatatype.Byte: return(1); case ImageDatatype.UnsignedByte: return(1); case ImageDatatype.Short: return(2); case ImageDatatype.UnsignedShort: return(2); case ImageDatatype.Int: return(4); case ImageDatatype.UnsignedInt: return(4); case ImageDatatype.Float: return(4); case ImageDatatype.HalfFloat: return(2); case ImageDatatype.UnsignedByte332: return(1); case ImageDatatype.UnsignedShort4444: return(2); case ImageDatatype.UnsignedShort5551: return(2); case ImageDatatype.UnsignedInt8888: return(4); case ImageDatatype.UnsignedInt1010102: return(4); case ImageDatatype.UnsignedByte233Reversed: return(1); case ImageDatatype.UnsignedShort565: return(2); case ImageDatatype.UnsignedShort565Reversed: return(2); case ImageDatatype.UnsignedShort4444Reversed: return(2); case ImageDatatype.UnsignedShort1555Reversed: return(2); case ImageDatatype.UnsignedInt8888Reversed: return(4); case ImageDatatype.UnsignedInt2101010Reversed: return(4); case ImageDatatype.UnsignedInt248: return(4); case ImageDatatype.UnsignedInt10F11F11FReversed: return(4); case ImageDatatype.UnsignedInt5999Reversed: return(4); case ImageDatatype.Float32UnsignedInt248Reversed: return(4); } throw new ArgumentException("dataType"); }
public static PixelType To(ImageDatatype type) { switch (type) { case ImageDatatype.Byte: return PixelType.Byte; case ImageDatatype.UnsignedByte: return PixelType.UnsignedByte; case ImageDatatype.Short: return PixelType.Short; case ImageDatatype.UnsignedShort: return PixelType.UnsignedShort; case ImageDatatype.Int: return PixelType.Int; case ImageDatatype.UnsignedInt: return PixelType.UnsignedInt; case ImageDatatype.Float: return PixelType.Float; case ImageDatatype.HalfFloat: return PixelType.HalfFloat; case ImageDatatype.UnsignedByte332: return PixelType.UnsignedByte332; case ImageDatatype.UnsignedShort4444: return PixelType.UnsignedShort4444; case ImageDatatype.UnsignedShort5551: return PixelType.UnsignedShort5551; case ImageDatatype.UnsignedInt8888: return PixelType.UnsignedInt8888; case ImageDatatype.UnsignedInt1010102: return PixelType.UnsignedInt1010102; case ImageDatatype.UnsignedByte233Reversed: return PixelType.UnsignedByte233Reversed; case ImageDatatype.UnsignedShort565: return PixelType.UnsignedShort565; case ImageDatatype.UnsignedShort565Reversed: return PixelType.UnsignedShort565Reversed; case ImageDatatype.UnsignedShort4444Reversed: return PixelType.UnsignedShort4444Reversed; case ImageDatatype.UnsignedShort1555Reversed: return PixelType.UnsignedShort1555Reversed; case ImageDatatype.UnsignedInt8888Reversed: return PixelType.UnsignedInt8888Reversed; case ImageDatatype.UnsignedInt2101010Reversed: return PixelType.UnsignedInt2101010Reversed; case ImageDatatype.UnsignedInt248: return PixelType.UnsignedInt248; case ImageDatatype.UnsignedInt10F11F11FReversed: return PixelType.UnsignedInt10F11F11FRev; case ImageDatatype.UnsignedInt5999Reversed: return PixelType.UnsignedInt5999Rev; case ImageDatatype.Float32UnsignedInt248Reversed: return PixelType.Float32UnsignedInt248Rev; } throw new ArgumentException("type"); }
public static int SizeInBytes(ImageDatatype dataType) { switch (dataType) { case ImageDatatype.Byte: return 1; case ImageDatatype.UnsignedByte: return 1; case ImageDatatype.Short: return 2; case ImageDatatype.UnsignedShort: return 2; case ImageDatatype.Int: return 4; case ImageDatatype.UnsignedInt: return 4; case ImageDatatype.Float: return 4; case ImageDatatype.HalfFloat: return 2; case ImageDatatype.UnsignedByte332: return 1; case ImageDatatype.UnsignedShort4444: return 2; case ImageDatatype.UnsignedShort5551: return 2; case ImageDatatype.UnsignedInt8888: return 4; case ImageDatatype.UnsignedInt1010102: return 4; case ImageDatatype.UnsignedByte233Reversed: return 1; case ImageDatatype.UnsignedShort565: return 2; case ImageDatatype.UnsignedShort565Reversed: return 2; case ImageDatatype.UnsignedShort4444Reversed: return 2; case ImageDatatype.UnsignedShort1555Reversed: return 2; case ImageDatatype.UnsignedInt8888Reversed: return 4; case ImageDatatype.UnsignedInt2101010Reversed: return 4; case ImageDatatype.UnsignedInt248: return 4; case ImageDatatype.UnsignedInt10F11F11FReversed: return 4; case ImageDatatype.UnsignedInt5999Reversed: return 4; case ImageDatatype.Float32UnsignedInt248Reversed: return 4; } throw new ArgumentException("dataType"); }