/// <summary> /// Encodes all mipmap levels into a ktx or a dds file and writes it to the output stream. /// </summary> public void Encode(Image <Rgba32> inputImage, Stream outputStream) { if (OutputOptions.fileFormat == OutputFileFormat.Ktx) { KtxFile output = EncodeToKtx(inputImage); output.Write(outputStream); } else if (OutputOptions.fileFormat == OutputFileFormat.Dds) { DdsFile output = EncodeToDds(inputImage); output.Write(outputStream); } }
/// <summary> /// Encodes all cubemap faces and mipmap levels into Ktx file and writes it to the output stream. /// Order is +X, -X, +Y, -Y, +Z, -Z /// </summary> public void EncodeCubeMap(Image <Rgba32> right, Image <Rgba32> left, Image <Rgba32> top, Image <Rgba32> down, Image <Rgba32> back, Image <Rgba32> front, Stream outputStream) { if (OutputOptions.fileFormat == OutputFileFormat.Ktx) { KtxFile output = EncodeCubeMapToKtx(right, left, top, down, back, front); output.Write(outputStream); } else if (OutputOptions.fileFormat == OutputFileFormat.Dds) { DdsFile output = EncodeCubeMapToDds(right, left, top, down, back, front); output.Write(outputStream); } }
public void Save(Stream output, ImageInfo imageInfo) { // Create Ktx file var ktxHeader = CreateKtxHeader(imageInfo.ImageFormat, imageInfo.ImageSize); var ktxFile = new KtxFile(ktxHeader); // Add main image to Ktx ktxFile.MipMaps.Add(CreateMipMap(imageInfo.ImageData, imageInfo.ImageSize)); // Add mips to Ktx for (var i = 1; i <= imageInfo.MipMapCount; i++) { ktxFile.MipMaps.Add(CreateMipMap(imageInfo.MipMapData[i - 1], new Size(imageInfo.ImageSize.Width >> i, imageInfo.ImageSize.Height >> i))); } ktxFile.Write(output); }