mirror of
https://github.com/microsoft/DirectXTex.git
synced 2026-02-04 04:16:12 +01:00
Update DDS alpha mode metadata
- Make alpha mode 3 bits instead of 2 - Rename 4TH_CHANNEL to CUSTOM - Reorder enum
This commit is contained in:
@@ -103,7 +103,7 @@ struct DDS_PIXELFORMAT
|
||||
|
||||
enum DDS_MISC_FLAGS2
|
||||
{
|
||||
DDS_MISC_FLAGS2_ALPHA_MODE_MASK = 0x3L,
|
||||
DDS_MISC_FLAGS2_ALPHA_MODE_MASK = 0x7L,
|
||||
};
|
||||
|
||||
typedef struct
|
||||
@@ -1329,7 +1329,15 @@ static DDS_ALPHA_MODE GetAlphaMode( _In_ const DDS_HEADER* header )
|
||||
if ( MAKEFOURCC( 'D', 'X', '1', '0' ) == header->ddspf.fourCC )
|
||||
{
|
||||
auto d3d10ext = reinterpret_cast<const DDS_HEADER_DXT10*>( (const char*)header + sizeof(DDS_HEADER) );
|
||||
return static_cast<DDS_ALPHA_MODE>(d3d10ext->miscFlags2 & DDS_MISC_FLAGS2_ALPHA_MODE_MASK);
|
||||
auto mode = static_cast<DDS_ALPHA_MODE>( d3d10ext->miscFlags2 & DDS_MISC_FLAGS2_ALPHA_MODE_MASK );
|
||||
switch( mode )
|
||||
{
|
||||
case DDS_ALPHA_MODE_STRAIGHT:
|
||||
case DDS_ALPHA_MODE_PREMULTIPLIED:
|
||||
case DDS_ALPHA_MODE_OPAQUE:
|
||||
case DDS_ALPHA_MODE_CUSTOM:
|
||||
return mode;
|
||||
}
|
||||
}
|
||||
else if ( ( MAKEFOURCC( 'D', 'X', 'T', '2' ) == header->ddspf.fourCC )
|
||||
|| ( MAKEFOURCC( 'D', 'X', 'T', '4' ) == header->ddspf.fourCC ) )
|
||||
@@ -1338,7 +1346,7 @@ static DDS_ALPHA_MODE GetAlphaMode( _In_ const DDS_HEADER* header )
|
||||
}
|
||||
}
|
||||
|
||||
return DDS_ALPHA_MODE_STRAIGHT;
|
||||
return DDS_ALPHA_MODE_UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
@@ -1379,6 +1387,10 @@ HRESULT DirectX::CreateDDSTextureFromMemoryEx( ID3D11Device* d3dDevice,
|
||||
{
|
||||
*textureView = nullptr;
|
||||
}
|
||||
if ( alphaMode )
|
||||
{
|
||||
*alphaMode = DDS_ALPHA_MODE_UNKNOWN;
|
||||
}
|
||||
|
||||
if (!d3dDevice || !ddsData || (!texture && !textureView))
|
||||
{
|
||||
@@ -1482,6 +1494,10 @@ HRESULT DirectX::CreateDDSTextureFromFileEx( ID3D11Device* d3dDevice,
|
||||
{
|
||||
*textureView = nullptr;
|
||||
}
|
||||
if ( alphaMode )
|
||||
{
|
||||
*alphaMode = DDS_ALPHA_MODE_UNKNOWN;
|
||||
}
|
||||
|
||||
if (!d3dDevice || !fileName || (!texture && !textureView))
|
||||
{
|
||||
|
||||
@@ -44,10 +44,11 @@ namespace DirectX
|
||||
{
|
||||
enum DDS_ALPHA_MODE
|
||||
{
|
||||
DDS_ALPHA_MODE_STRAIGHT = 0,
|
||||
DDS_ALPHA_MODE_PREMULTIPLIED = 1,
|
||||
DDS_ALPHA_MODE_4TH_CHANNEL = 2,
|
||||
DDS_ALPHA_MODE_UNKNOWN = 0,
|
||||
DDS_ALPHA_MODE_STRAIGHT = 1,
|
||||
DDS_ALPHA_MODE_PREMULTIPLIED = 2,
|
||||
DDS_ALPHA_MODE_OPAQUE = 3,
|
||||
DDS_ALPHA_MODE_CUSTOM = 4,
|
||||
};
|
||||
|
||||
HRESULT CreateDDSTextureFromMemory( _In_ ID3D11Device* d3dDevice,
|
||||
|
||||
Reference in New Issue
Block a user