В общем решил начать изучать OpenGL, но все понемногу. Решил разобраться как устроен modelviewer. Естественно, использую Qt4 и его модуль, но вопрос сейчас не по 3D графике
Не могу прочитать BLP %)
Точней могу, но не понимаю как правильно оперировать с данными.
Использую squish библиотеку для декомпрессии изображения, но наверное делаю что-то не так. Никак не получается вывести картинку - вместо нее набор цветопикселей
Вот код (может кому-то он ничего не скажет, но суть, я думаю, поймете)
Код:
QPixmap Texture::getImage()
{
int mipmax = m_header.hasMips ? 16 : 1;
QDataStream stream(m_buffer);
stream.setByteOrder(QDataStream::LittleEndian);
QVector<quint8> data;
quint8 d = 0;
for (quint8 i = 0; i < mipmax; i++)
{
stream.skipRawData(m_header.offsets[i]);
for (quint32 j = 0; j < m_header.lengths[i]; j++)
{
stream >> d;
data << d;
}
}
QVector<quint8> v;
v.resize(m_header.width * m_header.height * 16 * 4);
squish::DecompressImage(&v[0], m_header.width, m_header.height, data.data(), m_header.encoding);
QImage img(v.data(), m_header.width, m_header.height, QImage::Format::Format_ARGB32);
return QPixmap::fromImage(img);
}
Смотрел как в modelviewer считывается BLP, но там декомпрессия через opengl происходит, и этих методов нет в модуле Qt. Поэтому использовал библиотеку. Вопрос - правилен этот код хоть на пару процентов?))
PS WMV 0.4
http://wowmv.svn.sourceforge.net/viewvc/wowmv/src/
WMV Latest
http://code.google.com/p/wowmodelviewer/source/browse/
SQUISH
http://code.google.com/p/libsquish/