Показать сообщение отдельно
Старый 25.03.2012, 09:02   #5
Sid
Ученый
 
Аватар для Sid
 
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
Sid Скоро придёт к известностиSid Скоро придёт к известности
По умолчанию

Вот уже что-то)

Код:
QPixmap Texture::getImage()
{
    QDataStream stream(m_buffer);
    stream.setByteOrder(QDataStream::LittleEndian);

    QVector<quint8> data;
    quint8 d = 0;

    stream.skipRawData(m_header.offsets[0]);
    for (quint32 j = 0; j < m_header.lengths[0]; j++)
    {
        stream >> d;
        data << d;
    }

    squish::u8* uncompressed;
    if (m_header.encoding == 2)
    {
        int dxtver;
        switch (m_header.alphaEncoding)
        {
            case 0: dxtver = squish::kDxt1; break;
            case 1: dxtver = squish::kDxt3; break;
            case 7: dxtver = squish::kDxt5; break;
            //default: std::cout << "DXT version not recognized.\n"; return false; break;
        }
        uncompressed = new squish::u8[m_header.width * m_header.height * 4];
        squish::DecompressImage(uncompressed, m_header.width, m_header.height, data.data(), dxtver);
    }
    else
        uncompressed = data.data();
   
    QVector<QRgb> colors;
    for (quint32 i = 0; i < 256; i++)
    {
        colors.append(qRgba(m_header.colors[i].r,
            m_header.colors[i].g,
            m_header.colors[i].b,
            m_header.colors[i].a));
    }

    QImage img(uncompressed, m_header.width, m_header.height, QImage::Format::Format_Indexed8);

    return QPixmap::fromImage(img);
}
Правда цветовая палитра не накладывается...


Делал setColorTable и заполнял ее из ARGB[256] куска после данных, тогда картинка вообще белая -_-
__________________
SpellWork Qt4
Sid вне форума   Ответить с цитированием