public void GenerateMipMaps(int minMipWidth = 1, int minMipHeight = 1) { int mipCount = DdsHeader.CountMipMaps(Width, Height); int mipWidth = Width; int mipHeight = Height; MipMaps = new List<DdsMipMap> { new DdsMipMap(Width, Height, largestMipMap) }; for(int mipLoop = 1; mipLoop < mipCount; mipLoop++) { if (mipWidth > minMipWidth) mipWidth /= 2; if (mipHeight > minMipHeight) mipHeight /= 2; DdsMipMap writeSize = new DdsMipMap(mipWidth, mipHeight); WriteableBitmap mipMap = new WriteableBitmap(BitmapSource); writeSize.MipMap = mipMap.ResizeHighQuality(writeSize.Width, writeSize.Height).ConvertToRgba(); MipMaps.Add(writeSize); } }