Added FormatDataType utility function

This commit is contained in:
Chuck Walbourn 2020-07-12 23:00:17 -07:00
parent 86f59e62c0
commit 9ef44739a3
2 changed files with 81 additions and 39 deletions

View File

@ -55,6 +55,18 @@ namespace DirectX
size_t __cdecl BitsPerColor(_In_ DXGI_FORMAT fmt) noexcept;
enum FORMAT_TYPE
{
FORMAT_TYPE_TYPELESS,
FORMAT_TYPE_FLOAT,
FORMAT_TYPE_UNORM,
FORMAT_TYPE_SNORM,
FORMAT_TYPE_UINT,
FORMAT_TYPE_SINT,
};
FORMAT_TYPE __cdecl FormatDataType(_In_ DXGI_FORMAT fmt) noexcept;
enum CP_FLAGS : unsigned long
{
CP_FLAGS_NONE = 0x0, // Normal operation

View File

@ -5152,3 +5152,33 @@ HRESULT DirectX::ConvertToSinglePlane(
return S_OK;
}
//-------------------------------------------------------------------------------------
// Returns the data type of a DXGI_FORMAT
//-------------------------------------------------------------------------------------
DirectX::FORMAT_TYPE DirectX::FormatDataType(_In_ DXGI_FORMAT fmt) noexcept
{
auto cflags = _GetConvertFlags(fmt);
switch (cflags & (CONVF_FLOAT | CONVF_UNORM | CONVF_UINT | CONVF_SNORM | CONVF_SINT))
{
case CONVF_FLOAT:
return FORMAT_TYPE_FLOAT;
case CONVF_UNORM:
return FORMAT_TYPE_UNORM;
case CONVF_UINT:
return FORMAT_TYPE_UINT;
case CONVF_SNORM:
return FORMAT_TYPE_SNORM;
case CONVF_SINT:
return FORMAT_TYPE_SINT;
default:
return FORMAT_TYPE_TYPELESS;
}
}