一个很好的选择,直到Qt实现保存压缩的DDS纹理是静态链接SOIL2到您的项目。
https://bitbucket.org/SpartanJ/soil2
您可以使用它save_image_as_DDS()
功能与QImage
类似如下:
QImage *pTexture = [Your initial image]
AtlasTextureType eTextureType = [Your desired image type]
switch(eTextureType)
{
case ATLASTEXTYPE_PNG: {
if(false == pTexture->save("MyTexture.png")) {
Log("failed to generate a PNG atlas", LOGTYPE_Error);
}
} break;
case ATLASTEXTYPE_DTX5: {
QImage imgProperlyFormatted = pTexture->convertToFormat(QImage::Format_RGBA8888);
if(0 == SOIL_save_image_quality("MyTexture.dds",
SOIL_SAVE_TYPE_DDS,
imgProperlyFormatted.width(),
imgProperlyFormatted.height(),
4,
imgProperlyFormatted.bits(),
0))
{
Log("failed to generate a DTX5 atlas", LOGTYPE_Error);
}
} break;
case ATLASTEXTYPE_DTX1: {
QImage imgProperlyFormatted = pTexture->convertToFormat(QImage::Format_RGB888);
if(0 == SOIL_save_image_quality("MyTexture.dds",
SOIL_SAVE_TYPE_DDS,
imgProperlyFormatted.width(),
imgProperlyFormatted.height(),
3,
imgProperlyFormatted.bits(),
0))
{
Log("failed to generate a DTX1 atlas", LOGTYPE_Error);
}
} break;
}
哪个版本是什么? – dtech
@ddriver无论什么版本的提问者碰巧正在使用:)我们只能猜测在这里。 –
它只是听起来像你知道的特定版本没有它的声明或暗示。并且它也是在特定版本中实现的。我猜想是措辞问题;) – dtech