DarkElf_89
offline
Опыт:
35Активность: |
Проблема с форматом BLP2
Здравствуйте, уважаемые форумчане ! Довольно долго читал форум, видел что здесь сидят люди, которые хорошо разбираются в форматах текстур. Решил обратиться со своей проблемой ... Помогите плиз если не сложно. Итак, нужно мне выдернуть из WoWа некоторые текстуры. Сначала пользовался WoW model viewer, сохранял текстуры в bmp, но потом замучился их дергать по одной. Решил написать свой код для извлечения их из mpq-архивов, именно с извлечением разобрался, используя библиотеку libmpq. Далее нашел в википедии спецификацию bl2 формата, взял первую попавшуюся текстуру, начал экспериментировать. Определил что в этой текстуре используется DXT1 сжатие. В исходниках wow model viewer нашел функцию декомпрессии, переписал к себе, в целом первый мипмап разжимет нормально, но... появляются непонятные искажения цвета всегда вверху изображения, в этом собственно и проблема. Между тем, blp lab отлично открывает эту текстуру, без искажений, значит дело не в самой текстуре, битой она быть не может. Вот в этом проблема, вообщем посмотрите сами :
Слева-то что получено мной, справа-в blp lab. Вот код на c++ функции декомпрессии : Код:
Всю голову уже сломал, не пойму в чем ошибка ... Подскажите пожалуйста, знающие люди))) Во вложении сама текстура... |
26.09.2009, 01:09 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
===> сюда <=== |
26.09.2009, 14:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Вышеуказанный код выглядит вполне работоспособным, структура соблюдена.
В качестве теста мне скомпилировали код с выводом в файл после декодирования (RAW формат, RGBA). И он был без дефектов. К тому же, если бы алгоритм декодирования был некорректным, то "помехи" были бы периодическими.
Вывод - "натягивание текстур на полигон (opengl)" может проходить некорректно. Либо идет перезапись первых байтов буфера. |
26.09.2009, 20:02 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DarkElf_89
offline
Опыт:
35Активность: |
ShadoW DaemoN, спасибо огромное за ответ ! Проблему решил, видимо правда была перезапись байтов, хотя еще не разобрался почему так получалось. Сделал запись в выходной буфер блоками по 16 пикселей - деффекты пропали.
Hellfim, также спасибо большое - за совет ! |
26.09.2009, 21:46 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|