diff --git a/DirectXTex/DirectXTex.h b/DirectXTex/DirectXTex.h index 32d607b..2d5ba34 100644 --- a/DirectXTex/DirectXTex.h +++ b/DirectXTex/DirectXTex.h @@ -123,11 +123,14 @@ namespace DirectX // Returns size_t(-1) to indicate an out-of-range error bool IsCubemap() const { return (miscFlags & TEX_MISC_TEXTURECUBE) != 0; } - // Helpers for miscFlags + // Helper for miscFlags bool IsPMAlpha() const { return ((miscFlags2 & TEX_MISC2_ALPHA_MODE_MASK) == TEX_ALPHA_MODE_PREMULTIPLIED) != 0; } void SetAlphaMode( TEX_ALPHA_MODE mode ) { miscFlags2 = (miscFlags2 & ~TEX_MISC2_ALPHA_MODE_MASK) | static_cast(mode); } // Helpers for miscFlags2 + + bool IsVolumemap() const { return (dimension == TEX_DIMENSION_TEXTURE3D); } + // Helper for dimension }; enum DDS_FLAGS diff --git a/DirectXTex/DirectXTexD3D11.cpp b/DirectXTex/DirectXTexD3D11.cpp index e68c73d..70fbfac 100644 --- a/DirectXTex/DirectXTexD3D11.cpp +++ b/DirectXTex/DirectXTexD3D11.cpp @@ -30,7 +30,7 @@ static HRESULT _Capture( _In_ ID3D11DeviceContext* pContext, _In_ ID3D11Resource if ( !pContext || !pSource || !result.GetPixels() ) return E_POINTER; - if ( metadata.dimension == TEX_DIMENSION_TEXTURE3D ) + if ( metadata.IsVolumemap() ) { //--- Volume texture ---------------------------------------------------------- assert( metadata.arraySize == 1 ); @@ -378,7 +378,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n return E_OUTOFMEMORY; // Fill out subresource array - if ( metadata.dimension == TEX_DIMENSION_TEXTURE3D ) + if ( metadata.IsVolumemap() ) { //--- Volume case ------------------------------------------------------------- if ( !metadata.depth ) diff --git a/DirectXTex/DirectXTexMipmaps.cpp b/DirectXTex/DirectXTexMipmaps.cpp index d363d84..ff08a0a 100644 --- a/DirectXTex/DirectXTexMipmaps.cpp +++ b/DirectXTex/DirectXTexMipmaps.cpp @@ -2644,7 +2644,7 @@ HRESULT GenerateMipMaps( const Image* srcImages, size_t nimages, const TexMetada if ( !srcImages || !nimages || !IsValid(metadata.format) ) return E_INVALIDARG; - if ( metadata.dimension == TEX_DIMENSION_TEXTURE3D + if ( metadata.IsVolumemap() || IsCompressed( metadata.format ) || IsVideo( metadata.format ) ) return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED ); @@ -2953,7 +2953,7 @@ HRESULT GenerateMipMaps3D( const Image* srcImages, size_t nimages, const TexMeta if ( filter & TEX_FILTER_FORCE_WIC ) return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED ); - if ( metadata.dimension != TEX_DIMENSION_TEXTURE3D + if ( !metadata.IsVolumemap() || IsCompressed( metadata.format ) || IsVideo( metadata.format ) ) return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );