mirror of
https://github.com/love2d/love.git
synced 2026-08-16 08:11:02 +02:00
Allow BC6 and BC7 compressed DDS files to be loaded into Images.
This commit is contained in:
@@ -116,7 +116,7 @@ static Format parseDX10Format(DXGIFormat fmt)
|
||||
f = FORMAT_BC6H;
|
||||
break;
|
||||
case DXGI_FORMAT_BC6H_SF16:
|
||||
f = FORAMT_BC6Hs;
|
||||
f = FORMAT_BC6Hs;
|
||||
break;
|
||||
case DXGI_FORMAT_BC7_TYPELESS:
|
||||
case DXGI_FORMAT_BC7_UNORM:
|
||||
|
||||
@@ -45,7 +45,7 @@ enum Format
|
||||
FORMAT_BC5,
|
||||
FORMAT_BC5s,
|
||||
FORMAT_BC6H,
|
||||
FORAMT_BC6Hs,
|
||||
FORMAT_BC6Hs,
|
||||
FORMAT_BC7,
|
||||
FORMAT_BC7srgb, // sRGB color space.
|
||||
FORMAT_UNKNOWN
|
||||
|
||||
@@ -623,6 +623,17 @@ GLenum Image::getCompressedFormat(image::CompressedData::Format cformat) const
|
||||
return GL_COMPRESSED_RG_RGTC2;
|
||||
case image::CompressedData::FORMAT_BC5s:
|
||||
return GL_COMPRESSED_SIGNED_RG_RGTC2;
|
||||
case image::CompressedData::FORMAT_BC6H:
|
||||
return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB;
|
||||
case image::CompressedData::FORMAT_BC6Hs:
|
||||
return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB;
|
||||
case image::CompressedData::FORMAT_BC7:
|
||||
if (srgb)
|
||||
return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB;
|
||||
else
|
||||
return GL_COMPRESSED_RGBA_BPTC_UNORM_ARB;
|
||||
case image::CompressedData::FORMAT_BC7SRGB:
|
||||
return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB;
|
||||
default:
|
||||
if (srgb)
|
||||
return GL_SRGB8_ALPHA8;
|
||||
@@ -672,11 +683,14 @@ bool Image::hasCompressedTextureSupport(image::CompressedData::Format format)
|
||||
case image::CompressedData::FORMAT_BC5:
|
||||
case image::CompressedData::FORMAT_BC5s:
|
||||
return (GLEE_VERSION_3_0 || GLEE_ARB_texture_compression_rgtc || GLEE_EXT_texture_compression_rgtc);
|
||||
case image::CompressedData::FORMAT_BC6H:
|
||||
case image::CompressedData::FORMAT_BC6Hs:
|
||||
case image::CompressedData::FORMAT_BC7:
|
||||
case image::CompressedData::FORMAT_BC7SRGB:
|
||||
return GLEE_VERSION_4_2 || GLEE_ARB_texture_compression_bptc;
|
||||
default:
|
||||
break;
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Image::hasSRGBSupport()
|
||||
|
||||
@@ -110,6 +110,10 @@ StringMap<CompressedData::Format, CompressedData::FORMAT_MAX_ENUM>::Entry Compre
|
||||
{"bc4s", CompressedData::FORMAT_BC4s},
|
||||
{"bc5", CompressedData::FORMAT_BC5},
|
||||
{"bc5s", CompressedData::FORMAT_BC5s},
|
||||
{"bc6h", CompressedData::FORMAT_BC6H},
|
||||
{"bc6hs", CompressedData::FORMAT_BC6Hs},
|
||||
{"bc7", CompressedData::FORMAT_BC7},
|
||||
{"bc7srgb", CompressedData::FORMAT_BC7SRGB},
|
||||
};
|
||||
|
||||
StringMap<CompressedData::Format, CompressedData::FORMAT_MAX_ENUM> CompressedData::formats(CompressedData::formatEntries, sizeof(CompressedData::formatEntries));
|
||||
|
||||
@@ -54,6 +54,10 @@ public:
|
||||
FORMAT_BC4s,
|
||||
FORMAT_BC5,
|
||||
FORMAT_BC5s,
|
||||
FORMAT_BC6H,
|
||||
FORMAT_BC6Hs,
|
||||
FORMAT_BC7,
|
||||
FORMAT_BC7SRGB,
|
||||
FORMAT_MAX_ENUM
|
||||
};
|
||||
|
||||
|
||||
@@ -117,11 +117,17 @@ CompressedData::Format ddsHandler::convertFormat(dds::Format ddsformat)
|
||||
return CompressedData::FORMAT_BC5;
|
||||
case dds::FORMAT_BC5s:
|
||||
return CompressedData::FORMAT_BC5s;
|
||||
case dds::FORMAT_BC6H:
|
||||
return CompressedData::FORMAT_BC6H;
|
||||
case dds::FORMAT_BC6Hs:
|
||||
return CompressedData::FORMAT_BC6Hs;
|
||||
case dds::FORMAT_BC7:
|
||||
return CompressedData::FORMAT_BC7;
|
||||
case dds::FORMAT_BC7srgb:
|
||||
return CompressedData::FORMAT_BC7SRGB;
|
||||
default:
|
||||
return CompressedData::FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
return CompressedData::FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
} // magpie
|
||||
|
||||
Reference in New Issue
Block a user