Показать сообщение отдельно
Старый 16.01.2015, 20:45   #1127
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Фак по Юнити.

Некоторое время назад пытался грузить dds.
Есть такая функция: LoadRawTextureData
Недокументированная. В поиске не находится, но она есть (т.е. была когда я занимался). Обсуждение можно посмотреть ТУТ.
Там я задавал вопрос, но нормального решения не нашел. Только костыли. Может тут у кого появится мысль как нормально грузить dds с неполным количеством mip-map уровней?
Цитата с юнити ру:
Если в текстуре недостаточно уровней mip - возникает ошибка
    UnityException: LoadRawTextureData: not enough data provided (will result in overread).
Например есть две текстуры 1024*1024. У которой в текстуре присутствуют все 11 уровней - загружается, У которой всего 6 уровней выдает ошибку.
Количество mip уровней лежит по смещению 0x1c. Теперь сообразить бы как указать функции сколько уровней загружать.
Можно, конечно mip вообще не грузить, но часто это ж не очень хорошо - вообще не иметь mipmap
Костыли описаны там, приводить их тут не буду.
___________
Чувствую будет вопрос - а зачем собственно? А затем, что dds в проекте как таковых нет. Они формируются рантайм из неких данных (типа проприетарного архива). Извлечь их и просто добавить в проект - не выход.

Последний раз редактировалось seaman, 16.01.2015 в 20:51. Причина: добавка разъяснения
(Offline)
 
Ответить с цитированием