Example #1
0
    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);
      }
    }