//------------------------------------------------------------------------------------- // DirectXTex.inl // // DirectX Texture Library // // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // // http://go.microsoft.com/fwlink/?LinkId=248926 //------------------------------------------------------------------------------------- #pragma once //===================================================================================== // DXGI Format Utilities //===================================================================================== _Use_decl_annotations_ inline bool __cdecl IsValid(DXGI_FORMAT fmt) { return (static_cast(fmt) >= 1 && static_cast(fmt) <= 190); } _Use_decl_annotations_ inline bool __cdecl IsCompressed(DXGI_FORMAT fmt) { switch (fmt) { case DXGI_FORMAT_BC1_TYPELESS: case DXGI_FORMAT_BC1_UNORM: case DXGI_FORMAT_BC1_UNORM_SRGB: case DXGI_FORMAT_BC2_TYPELESS: case DXGI_FORMAT_BC2_UNORM: case DXGI_FORMAT_BC2_UNORM_SRGB: case DXGI_FORMAT_BC3_TYPELESS: case DXGI_FORMAT_BC3_UNORM: case DXGI_FORMAT_BC3_UNORM_SRGB: case DXGI_FORMAT_BC4_TYPELESS: case DXGI_FORMAT_BC4_UNORM: case DXGI_FORMAT_BC4_SNORM: case DXGI_FORMAT_BC5_TYPELESS: case DXGI_FORMAT_BC5_UNORM: case DXGI_FORMAT_BC5_SNORM: case DXGI_FORMAT_BC6H_TYPELESS: case DXGI_FORMAT_BC6H_UF16: case DXGI_FORMAT_BC6H_SF16: case DXGI_FORMAT_BC7_TYPELESS: case DXGI_FORMAT_BC7_UNORM: case DXGI_FORMAT_BC7_UNORM_SRGB: return true; default: return false; } } _Use_decl_annotations_ inline bool __cdecl IsPalettized(DXGI_FORMAT fmt) { switch (fmt) { case DXGI_FORMAT_AI44: case DXGI_FORMAT_IA44: case DXGI_FORMAT_P8: case DXGI_FORMAT_A8P8: return true; default: return false; } } _Use_decl_annotations_ inline bool __cdecl IsSRGB(DXGI_FORMAT fmt) { switch (fmt) { case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: case DXGI_FORMAT_BC1_UNORM_SRGB: case DXGI_FORMAT_BC2_UNORM_SRGB: case DXGI_FORMAT_BC3_UNORM_SRGB: case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: case DXGI_FORMAT_BC7_UNORM_SRGB: return true; default: return false; } } //===================================================================================== // Image I/O //===================================================================================== _Use_decl_annotations_ inline HRESULT __cdecl SaveToDDSMemory(const Image& image, DWORD flags, Blob& blob) { TexMetadata mdata = {}; mdata.width = image.width; mdata.height = image.height; mdata.depth = 1; mdata.arraySize = 1; mdata.mipLevels = 1; mdata.format = image.format; mdata.dimension = TEX_DIMENSION_TEXTURE2D; return SaveToDDSMemory(&image, 1, mdata, flags, blob); } _Use_decl_annotations_ inline HRESULT __cdecl SaveToDDSFile(const Image& image, DWORD flags, const wchar_t* szFile) { TexMetadata mdata = {}; mdata.width = image.width; mdata.height = image.height; mdata.depth = 1; mdata.arraySize = 1; mdata.mipLevels = 1; mdata.format = image.format; mdata.dimension = TEX_DIMENSION_TEXTURE2D; return SaveToDDSFile(&image, 1, mdata, flags, szFile); }