/// <summary> /// Loads texture image from stream</summary> /// <param name="imageStream">Stream holding texture image</param> /// <returns>Texture image</returns> public Image LoadImage(Stream imageStream) { TgaHeader header; byte[] pixels; using (BinaryReader reader = new BinaryReader(imageStream)) { header = ReadHeader(reader); ImageDataType dataType = (ImageDataType)header.dataType; switch ((ImageDataType)header.dataType) { case ImageDataType.UncompressedUnmappedColor: case ImageDataType.RleCompressedUnmappedColor: case ImageDataType.UncompressedMappedColor: break; default: throw new NotImplementedException("Unsupported Targa image type '" + dataType.ToString() + "'"); } ReadIdString(reader, header); byte[] colorMap = ReadColorMap(reader, header); pixels = ReadPixels(reader, header, colorMap); } int pixelFormat = CalculateOpenGlPixelFormat(header); int elementsPerPixel = GetPixelDepth(header) / 8; return(new Image(header.imageWidth, header.imageHeight, pixels, 1, pixelFormat, elementsPerPixel)); }