Russian Qt Forum
Ноябрь 24, 2024, 17:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt vs DDS  (Прочитано 4723 раз)
Засранец
Гость
« : Август 17, 2016, 00:00 »

Здравствуйте.
Если вдруг где-то есть мой вопрос с решением - прошу плиз ткнуть носом... Обеспокоенный
Qt 5.x умеет *.dds файлы на чтение/запись.
Но я, к сожалению, не знаю, как явно указать формат для чтения/записи файла (DXT1...DXT5).
В моем случае нужно считать файл текстуры (normal/bump map), перемешать каналы RGBA (этот не проблема) и сохранить результат в нужном формате DDS (формат выше указан).
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Август 17, 2016, 09:12 »

В моем случае нужно считать файл текстуры (normal/bump map), перемешать каналы RGBA (этот не проблема)
[off]Вместо перезаписи файлов обычно вращают матрицу текстуры. Да, и если файлы "голубые" (преобладает синий цвет Z) то нужно строить матрицу бампа (то еще удовольствие).[/off]
Записан
Засранец
Гость
« Ответ #2 : Август 18, 2016, 21:46 »

Я пока топорно меняю порядок RGBA (построчно перебираю пиксели и меняю порядок каналов, в отдельном потоке), просто приоритетная проблема - как явно указать формат файла DDS при сохранении? Если правильно понимаю, Qt сам определяет формат исходного файла.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Август 20, 2016, 08:43 »

Кутешный dds плагин я писал. Формат указать можно через subtype. Но я не осилил написать сохранение в какой-либо формат, кроме RGBA32. Тебе не повезло:)
Записан
Засранец
Гость
« Ответ #4 : Август 21, 2016, 23:26 »

Кутешный dds плагин я писал. Формат указать можно через subtype. Но я не осилил написать сохранение в какой-либо формат, кроме RGBA32. Тебе не повезло:)
Если не сложно, можно пример кода привести?
p.s. Без экзорцизма, WinAPI, тут не обойтись? :-( Просто я ориентировался на кроссплатформенность...
p.s. p.s. Модераторов прошу перенести тему в подходящий раздел. Обеспокоенный
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Август 23, 2016, 08:15 »

Есть 4 пути.
Простой - стырить исходники dds себе (я сначала обкатываю фичи тут https://github.com/ABBAPOH/imageformats) и написать сохранение самому. Работы там на полдня, имхо.
Сложный - написать сохранение самому и замержить в Qt.
Ещё более сложный - допинать меня, чтобы я это сделал:)
Либо одно из трёх:)

В идеальном мире ты бы писал что-то типа
Код:
int main()
{
    QImage image("path/to/file.png");
    QImageWriter writer("path/to/file.dds", "dds");
    if (!writer.canWrite())
         qFatal() << writer.errorString());
    writer.setSubType("DXT5");
    if (!writer.write(image))
         qFatal() << writer.errorString());
    return 0;
}

Но повторюсь, там только 1 вариант сохранения реализован.
Записан
Засранец
Гость
« Ответ #6 : Август 25, 2016, 20:20 »

Авварон,
Я склонировал репозиторий. Чуть позже займусь, посыпался хард, пришлось прерваться. Насчет попинать - с вопросами если, можно?:-D
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Август 25, 2016, 21:04 »

В личку написал
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.234 секунд. Запросов: 22.