I have checked a few examples of DDS loader implementation. Typically, detecting DXT format looks like this:
if (ddsHeader.ddsPixelFormat.dwFlags & DDSF_FOURCC)
{
switch (ddsHeader.ddsPixelFormat.dwFourCC)
{
case FOURCC_DXT1:
{
format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
break;
}
//etc
Detecting standard RGB format looks this way:
if (ddsHeader.ddsPixelFormat.dwFlags & DDPF_RGB)
{
if (ddsHeader.ddsPixelFormat.dwRGBBitCount == 24 &&
ddsHeader.ddsPixelFormat.dwRBitMask == 0x000000FF &&
ddsHeader.ddsPixelFormat.dwGBitMask == 0x0000FF00 &&
ddsHeader.ddsPixelFormat.dwBBitMask == 0x00FF0000)
{
format = GL_RGB8;
}
//etc
How to detect sRGB formats, for example GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
or GL_SRGB8_EXT
? Does DDS support sRGB formats ?