4 using System.Runtime.InteropServices;
7 namespace SiliconStudio.TextureConverter.DxtWrapper
13 internal enum DXGI_FORMAT
134 internal enum DDS_FLAGS
170 internal enum TEX_COMPRESS_FLAGS
201 internal enum TEX_PREMULTIPLY_ALPHA_FLAGS
217 internal enum TEX_DIMENSION
225 internal enum TEX_MISC_FLAG
231 internal enum TEX_FILTER_FLAGS
281 internal enum HRESULT
297 internal enum CP_FLAGS
326 internal enum CNMAP_FLAGS
355 [StructLayout(LayoutKind.Sequential)]
356 internal struct TexMetadata
361 public int arraySize;
362 public int mipLevels;
363 public TEX_MISC_FLAG miscFlags;
364 public int miscFlags2;
365 public DXGI_FORMAT
format;
366 public TEX_DIMENSION dimension;
368 public TexMetadata(
int width,
int height,
int depth,
int arraySize,
int mipLevels, TEX_MISC_FLAG miscFlags,
int miscFlags2, DXGI_FORMAT
format, TEX_DIMENSION dimension)
371 this.height = height;
373 this.arraySize = arraySize;
374 this.mipLevels = mipLevels;
375 this.miscFlags = miscFlags;
376 this.miscFlags2 = miscFlags2;
378 this.dimension = dimension;
381 public override String ToString()
383 return "width:" + width +
"\nheight:" + height +
"\ndepth:" + depth +
"\narraySize:" + arraySize +
"\nmipLevels:" + mipLevels +
"\nmiscFlags:" + miscFlags +
"\nformat:" + format +
"\ndimension:" + dimension;
390 [StructLayout(LayoutKind.Sequential, Pack = 1)]
391 internal struct Image
395 public DXGI_FORMAT
format;
397 public int slicePitch;
398 public IntPtr pixels;
400 public Image(
int width,
int height, DXGI_FORMAT
format,
int rowPitch,
int slicePitch, IntPtr pixels)
403 this.height = height;
405 this.rowPitch = rowPitch;
406 this.slicePitch = slicePitch;
407 this.pixels = pixels;
410 public override String ToString()
412 return "width:" + width +
"\nheight:" + height +
"\nformat:" + format +
"\nrowPitch:" + rowPitch +
"\nslicePitch:" + slicePitch +
"\npixels:" + pixels;
421 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
422 private extern static void dxtComputePitch(DXGI_FORMAT fmt,
int width,
int height, out
int rowPitch, out
int slicePitch, CP_FLAGS
flags);
424 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
425 private extern static uint
dxtLoadDDSFile(String filePath, DDS_FLAGS flags, out TexMetadata
metadata, IntPtr image);
427 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
430 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
431 private extern static uint
dxtConvert(ref Image srcImage, DXGI_FORMAT
format, TEX_FILTER_FLAGS filter,
float threshold, IntPtr cImage);
433 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
434 private extern static uint
dxtConvertArray(Image[] srcImages,
int nimages, ref TexMetadata metadata, DXGI_FORMAT format, TEX_FILTER_FLAGS filter,
float threshold, IntPtr cImages);
436 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
437 private extern static uint
dxtCompress(ref Image srcImage, DXGI_FORMAT format, TEX_COMPRESS_FLAGS compress,
float alphaRef, IntPtr cImage);
439 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
440 private extern static uint
dxtCompressArray(Image[] srcImages,
int nimages, ref TexMetadata metadata, DXGI_FORMAT format, TEX_COMPRESS_FLAGS compress,
float alphaRef, IntPtr cImages);
442 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
443 private extern static uint
dxtDecompress(ref Image cImage, DXGI_FORMAT format, IntPtr image);
445 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
446 private extern static uint
dxtDecompressArray(Image[] cImages,
int nimages, ref TexMetadata metadata, DXGI_FORMAT format, IntPtr images);
448 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
449 private extern static uint
dxtSaveToDDSFile(ref Image image, DDS_FLAGS flags,
string szFile);
451 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
452 private extern static uint
dxtSaveToDDSFileArray(Image[] images,
int nimages, ref TexMetadata metadata, DDS_FLAGS flags,
string szFile);
454 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
455 private extern static uint
dxtGenerateMipMaps(ref Image baseImage, TEX_FILTER_FLAGS filter,
int levels, IntPtr mipChain,
bool allow1D);
457 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
458 private extern static uint
dxtGenerateMipMapsArray(Image[] srcImages,
int nimages, ref TexMetadata metadata, TEX_FILTER_FLAGS filter,
int levels, IntPtr mipChain);
460 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
461 private extern static uint
dxtGenerateMipMaps3D(ref Image baseImage,
int depth, TEX_FILTER_FLAGS filter,
int levels, IntPtr mipChain);
463 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
464 private extern static uint
dxtGenerateMipMaps3DArray(Image[] srcImages,
int nimages, ref TexMetadata metadata, TEX_FILTER_FLAGS filter,
int levels, IntPtr mipChain );
466 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
467 private extern static uint
dxtResize(Image[] srcImages,
int nimages, ref TexMetadata metadata,
int width,
int height, TEX_FILTER_FLAGS filter, IntPtr result);
469 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
470 private extern static uint
dxtComputeNormalMap(Image[] srcImages,
int nimages, ref TexMetadata metadata, CNMAP_FLAGS flags,
float amplitude, DXGI_FORMAT format, IntPtr normalMaps );
472 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
473 private extern static uint
dxtPremultiplyAlpha(Image[] srcImages,
int nimages, ref TexMetadata metadata, TEX_PREMULTIPLY_ALPHA_FLAGS flags, IntPtr result);
475 public static void ComputePitch(DXGI_FORMAT fmt,
int width,
int height, out
int rowPitch, out
int slicePitch, CP_FLAGS flags)
477 dxtComputePitch(fmt, width, height, out rowPitch, out slicePitch, flags);
480 public static HRESULT LoadDDSFile(String filePath, DDS_FLAGS flags, out TexMetadata metadata, ScratchImage image)
482 return HandleHRESULT(
dxtLoadDDSFile(filePath, flags, out metadata, image.ptr));
485 public static HRESULT
SaveToDDSFile(ref Image image, DDS_FLAGS flags,
string szFile)
490 public static HRESULT
SaveToDDSFile(Image[] images,
int nimages, ref TexMetadata metadata, DDS_FLAGS flags,
string szFile)
500 public static HRESULT
Convert(ref Image srcImage, DXGI_FORMAT format, TEX_FILTER_FLAGS filter,
float threshold, ScratchImage cImage)
502 return HandleHRESULT(
dxtConvert(ref srcImage, format, filter, threshold, cImage.ptr));
505 public static HRESULT
Convert(Image[] srcImages,
int nimages, ref TexMetadata metadata, DXGI_FORMAT format, TEX_FILTER_FLAGS filter,
float threshold, ScratchImage cImages)
507 return HandleHRESULT(
dxtConvertArray(srcImages, nimages, ref metadata, format, filter, threshold, cImages.ptr));
510 public static HRESULT
Compress(ref Image srcImage, DXGI_FORMAT format, TEX_COMPRESS_FLAGS compress,
float alphaRef, ScratchImage cImage)
512 return HandleHRESULT(
dxtCompress(ref srcImage, format, compress, alphaRef, cImage.ptr));
515 public static HRESULT
Compress(Image[] srcImages,
int nimages, ref TexMetadata metadata, DXGI_FORMAT format, TEX_COMPRESS_FLAGS compress,
float alphaRef, ScratchImage cImages)
517 return HandleHRESULT(
dxtCompressArray(srcImages, nimages, ref metadata, format, compress, alphaRef, cImages.ptr));
520 public static HRESULT
Decompress(ref Image cImage, DXGI_FORMAT format, ScratchImage image)
522 return HandleHRESULT(
dxtDecompress(ref cImage, format, image.ptr));
525 public static HRESULT
Decompress(Image[] cImages,
int nimages, ref TexMetadata metadata, DXGI_FORMAT format, ScratchImage images)
527 return HandleHRESULT(
dxtDecompressArray(cImages, nimages, ref metadata, format, images.ptr));
530 public static HRESULT
GenerateMipMaps(ref Image baseImage, TEX_FILTER_FLAGS filter,
int levels, ScratchImage mipChain,
bool allow1D =
false)
532 return HandleHRESULT(
dxtGenerateMipMaps(ref baseImage, filter, levels, mipChain.ptr, allow1D));
535 public static HRESULT
GenerateMipMaps(Image[] srcImages,
int nimages, ref TexMetadata metadata, TEX_FILTER_FLAGS filter,
int levels, ScratchImage mipChain)
540 public static HRESULT
GenerateMipMaps3D(ref Image baseImage,
int depth, TEX_FILTER_FLAGS filter,
int levels, ScratchImage mipChain)
545 public static HRESULT
GenerateMipMaps3D(Image[] srcImages,
int nimages, ref TexMetadata metadata, TEX_FILTER_FLAGS filter,
int levels, ScratchImage mipChain)
550 public static HRESULT
Resize(Image[] srcImages,
int nimages, ref TexMetadata metadata,
int width,
int height, TEX_FILTER_FLAGS filter, ScratchImage result)
552 return HandleHRESULT(
dxtResize(srcImages, nimages, ref metadata, width, height, filter, result.ptr));
555 public static HRESULT
ComputeNormalMap(Image[] srcImages,
int nimages, ref TexMetadata metadata, CNMAP_FLAGS flags,
float amplitude, DXGI_FORMAT format, ScratchImage normalMaps)
557 return HandleHRESULT(
dxtComputeNormalMap(srcImages, nimages, ref metadata, flags, amplitude, format, normalMaps.ptr));
560 public static HRESULT
PremultiplyAlpha(Image[] srcImages,
int nimages, ref TexMetadata metadata, TEX_PREMULTIPLY_ALPHA_FLAGS flags, ScratchImage result)
562 return HandleHRESULT(
dxtPremultiplyAlpha(srcImages, nimages, ref metadata, flags, result.ptr));
566 public static HRESULT HandleHRESULT(uint hresult)
570 case 0x00000000:
return HRESULT.S_OK;
571 case 0x80004004:
return HRESULT.E_ABORT;
572 case 0x80070005:
return HRESULT.E_ACCESSDENIED;
573 case 0x80004005:
return HRESULT.E_FAIL;
574 case 0x80070006:
return HRESULT.E_HANDLE;
575 case 0x80070057:
return HRESULT.E_INVALIDARG;
576 case 0x80004002:
return HRESULT.E_NOINTERFACE;
577 case 0x80004001:
return HRESULT.E_NOTIMPL;
578 case 0x8007000E:
return HRESULT.E_OUTOFMEMORY;
579 case 0x80004003:
return HRESULT.E_POINTER;
580 case 0x8000FFFF:
return HRESULT.E_UNEXPECTED;
581 default:
return HRESULT.E_FAIL;
591 internal class ScratchImage : IDisposable
593 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
596 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
599 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
600 private extern static uint
dxtInitialize(IntPtr img, out TexMetadata mdata);
602 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
603 private extern static uint
dxtInitialize1D(IntPtr img, DXGI_FORMAT fmt,
int length,
int arraySize,
int mipLevels );
605 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
606 private extern static uint
dxtInitialize2D(IntPtr img, DXGI_FORMAT fmt,
int width,
int height,
int arraySize,
int mipLevels);
608 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
609 private extern static uint
dxtInitialize3D(IntPtr img, DXGI_FORMAT fmt,
int width,
int height,
int depth,
int mipLevels );
611 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
612 private extern static uint
dxtInitializeCube(IntPtr img, DXGI_FORMAT fmt,
int width,
int height,
int nCubes,
int mipLevels );
614 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
617 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
620 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
623 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
626 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
627 private extern static void dxtRelease(IntPtr img);
629 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
632 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
635 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
636 private extern static IntPtr
dxtGetImage(IntPtr img,
int mip,
int item,
int slice);
638 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
641 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
644 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
647 [DllImport(
"DxtWrapper", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
651 public IntPtr ptr {
private set;
get; }
653 public ScratchImage()
658 public void Dispose()
663 public HRESULT Initialize(out TexMetadata mdata)
665 return Utilities.HandleHRESULT(
dxtInitialize(ptr, out mdata));
668 public HRESULT Initialize1D(DXGI_FORMAT fmt,
int length,
int arraySize,
int mipLevels)
670 return Utilities.HandleHRESULT(
dxtInitialize1D(ptr, fmt, length, arraySize, mipLevels));
673 public HRESULT Initialize2D(DXGI_FORMAT fmt,
int width,
int height,
int arraySize,
int mipLevels)
675 return Utilities.HandleHRESULT(
dxtInitialize2D(ptr, fmt, width, height, arraySize, mipLevels));
678 public HRESULT Initialize3D(DXGI_FORMAT fmt,
int width,
int height,
int depth,
int mipLevels)
680 return Utilities.HandleHRESULT(
dxtInitialize3D(ptr, fmt, width, height, depth, mipLevels));
683 public HRESULT InitializeCube(DXGI_FORMAT fmt,
int width,
int height,
int nCubes,
int mipLevels)
685 return Utilities.HandleHRESULT(
dxtInitializeCube(ptr, fmt, width, height, nCubes, mipLevels));
688 public HRESULT InitializeFromImage(out Image srcImage,
bool allow1D =
false)
693 public HRESULT InitializeFromImages(Image[] images,
int nImages,
bool allow1D =
false)
698 public HRESULT InitializeCubeFromImages(Image[] images,
int nImages)
703 public HRESULT Initialize3DFromImages(Image[] images,
int depth)
708 public void Release()
713 public bool OverrideFormat(TexMetadata mdata, DXGI_FORMAT f)
720 get {
return (TexMetadata)Marshal.PtrToStructure(
dxtGetMetadata(ptr), typeof(TexMetadata));}
733 public int imageCount
738 public Image GetImage(
int mip,
int item,
int slice)
740 return (Image)Marshal.PtrToStructure(
dxtGetImage(ptr, mip, item, slice), typeof(Image));
743 public Image[] GetImages()
746 int imagenb = imageCount;
748 Image[] images =
new Image[imagenb];
751 for(
int i=0;i<imagenb;++i)
753 images[i] = (Image)Marshal.PtrToStructure(imagesPtr + i * Marshal.SizeOf(images[0]), typeof(Image));
HRESULT dxtInitialize3D(DirectX::ScratchImage *img, DXGI_FORMAT fmt, size_t width, size_t height, size_t depth, size_t mipLevels)
HRESULT dxtInitialize1D(DirectX::ScratchImage *img, DXGI_FORMAT fmt, size_t length, size_t arraySize, size_t mipLevels)
HRESULT dxtConvertArray(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, DXGI_FORMAT format, DWORD filter, float threshold, DirectX::ScratchImage &cImage)
_In_ size_t _In_ const TexMetadata _In_ DWORD _In_ size_t nImages
HRESULT Resize(_In_ const Image &srcImage, _In_ size_t width, _In_ size_t height, _In_ DWORD filter, _Out_ ScratchImage &image)
HRESULT dxtLoadDDSFile(LPCWSTR szFile, DWORD flags, DirectX::TexMetadata *metadata, DirectX::ScratchImage &image)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ DXGI_FORMAT _In_ DWORD flags
HRESULT dxtInitializeCubeFromImages(DirectX::ScratchImage *img, const DirectX::Image *images, size_t nImages)
HRESULT dxtGenerateMipMaps(const DirectX::Image &baseImage, DWORD filter, size_t levels, DirectX::ScratchImage &mipChain, bool allow1D=false)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float threshold
const DirectX::TexMetadata & dxtGetMetadata(const DirectX::ScratchImage *img)
void dxtDeleteScratchImage(DirectX::ScratchImage *img)
HRESULT dxtDecompressArray(const DirectX::Image *cImages, size_t nimages, const DirectX::TexMetadata &metadata, DXGI_FORMAT format, DirectX::ScratchImage &images)
const DirectX::Image * dxtGetImage(const DirectX::ScratchImage *img, size_t mip, size_t item, size_t slice)
HRESULT dxtInitialize2D(DirectX::ScratchImage *img, DXGI_FORMAT fmt, size_t width, size_t height, size_t arraySize, size_t mipLevels)
HRESULT dxtResize(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, size_t width, size_t height, DWORD filter, DirectX::ScratchImage &result)
HRESULT dxtGenerateMipMaps3DArray(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, DWORD filter, size_t levels, DirectX::ScratchImage &mipChain)
HRESULT GenerateMipMaps(_In_ const Image &baseImage, _In_ DWORD filter, _In_ size_t levels, _Inout_ ScratchImage &mipChain, _In_ bool allow1D=false)
Flags
Enumeration of the new Assimp's flags.
_In_ size_t _In_ const TexMetadata & metadata
void ComputePitch(_In_ DXGI_FORMAT fmt, _In_ size_t width, _In_ size_t height, _Out_ size_t &rowPitch, _Out_ size_t &slicePitch, _In_ DWORD flags=CP_FLAGS_NONE)
const DirectX::Image * dxtGetImages(const DirectX::ScratchImage *img)
DirectX::ScratchImage * dxtCreateScratchImage()
HRESULT dxtInitializeArrayFromImages(DirectX::ScratchImage *img, const DirectX::Image *images, size_t nImages, bool allow1D)
HRESULT dxtConvert(const DirectX::Image &srcImage, DXGI_FORMAT format, DWORD filter, float threshold, DirectX::ScratchImage &cImage)
size_t dxtGetImageCount(const DirectX::ScratchImage *img)
SiliconStudio.Core.Utilities Utilities
HRESULT dxtInitializeCube(DirectX::ScratchImage *img, DXGI_FORMAT fmt, size_t width, size_t height, size_t nCubes, size_t mipLevels)
HRESULT dxtCompress(const DirectX::Image &srcImage, DXGI_FORMAT format, DWORD compress, float alphaRef, DirectX::ScratchImage &cImage)
HRESULT GenerateMipMaps3D(_In_reads_(depth) const Image *baseImages, _In_ size_t depth, _In_ DWORD filter, _In_ size_t levels, _Out_ ScratchImage &mipChain)
HRESULT dxtSaveToDDSFile(const DirectX::Image &image, DWORD flags, LPCWSTR szFile)
bool dxtOverrideFormat(DirectX::ScratchImage *img, DXGI_FORMAT f)
HRESULT Convert(_In_ const Image &srcImage, _In_ DXGI_FORMAT format, _In_ DWORD filter, _In_ float threshold, _Out_ ScratchImage &image)
HRESULT dxtGenerateMipMapsArray(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, DWORD filter, size_t levels, DirectX::ScratchImage &mipChain)
HRESULT Decompress(_In_ const Image &cImage, _In_ DXGI_FORMAT format, _Out_ ScratchImage &image)
_Use_decl_annotations_ bool IsCompressed(DXGI_FORMAT fmt)
HRESULT dxtPremultiplyAlpha(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, DWORD flags, DirectX::ScratchImage &result)
HRESULT ComputeNormalMap(_In_ const Image &srcImage, _In_ DWORD flags, _In_ float amplitude, _In_ DXGI_FORMAT format, _Out_ ScratchImage &normalMap)
size_t dxtGetPixelsSize(const DirectX::ScratchImage *img)
_In_ size_t _In_ size_t _In_ DXGI_FORMAT format
bool dxtIsCompressed(DXGI_FORMAT fmt)
HRESULT dxtGenerateMipMaps3D(const DirectX::Image *baseImages, size_t depth, DWORD filter, size_t levels, DirectX::ScratchImage &mipChain)
HRESULT dxtInitializeFromImage(DirectX::ScratchImage *img, const DirectX::Image &srcImage, bool allow1D)
uint8_t * dxtGetPixels(const DirectX::ScratchImage *img)
HRESULT dxtInitialize(DirectX::ScratchImage *img, const DirectX::TexMetadata &mdata)
HRESULT dxtInitialize3DFromImages(DirectX::ScratchImage *img, const DirectX::Image *images, size_t depth)
HRESULT dxtCompressArray(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, DXGI_FORMAT format, DWORD compress, float alphaRef, DirectX::ScratchImage &cImages)
HRESULT dxtComputeNormalMap(const DirectX::Image *srcImages, size_t nimages, const DirectX::TexMetadata &metadata, DWORD flags, float amplitude, DXGI_FORMAT format, DirectX::ScratchImage &normalMaps)
HRESULT dxtDecompress(const DirectX::Image &cImage, DXGI_FORMAT format, DirectX::ScratchImage &image)
HRESULT Compress(_In_ const Image &srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float alphaRef, _Out_ ScratchImage &cImage)
_Use_decl_annotations_ HRESULT SaveToDDSFile(const Image &image, DWORD flags, LPCWSTR szFile)
void dxtComputePitch(DXGI_FORMAT fmt, size_t width, size_t height, size_t &rowPitch, size_t &slicePitch, DWORD flags=DirectX::CP_FLAGS_NONE)
HRESULT PremultiplyAlpha(_In_ const Image &srcImage, _In_ DWORD flags, _Out_ ScratchImage &image)
void dxtRelease(DirectX::ScratchImage *img)
HRESULT dxtSaveToDDSFileArray(const DirectX::Image *images, size_t nimages, const DirectX::TexMetadata &metadata, DWORD flags, LPCWSTR szFile)