Стандартные инструменты для конвертации массива png в dds volume texture (2 стр)
Страницы:
1 2 3 4 5 6 Следующая »
Suslik
> ты мне деньги уже перевёл?
Aroch
> да, ты ошибся и запостил тему не в тот раздел
Можно запостить в раздел работа/вакансии/проЭкт тулзы
Fedor1995
> Можно запостить в раздел работа/вакансии/проЭкт тулзы
+1
Я готов написать, задаром, предъявляйте ТЗ.
1) Чтобы можно было пергнать картинку из любого сжатия DDS в PNG с минимальным размером и наоборот. ( GUI было бы удобнее для выбора типа сжатия и параметров ) Меня достало пользоваться всякими плагинами и неудобными редакторами для работы с DDS
bykabak
>Чтобы можно было пергнать картинку из любого сжатия DDS в PNG с минимальным размером и наоборот
Минимальный размер PNG зависит от его содержимого, так-что это сложно выполнимо.
Я понимаю. PNG тоже поддерживает сжатие.
bykabak
Все, что могу гарантировать - сжатие предоставляемое в libpng.
nes
У меня главное требование к приложению, чтоб у его названии фигурировало слово Suslic и чтоб в хелпе к нему было написано, что приложение написано для суслика лично. Буду рад если это будет опенсорс, например на гитхабе. Можешь тред в проектах даже создать. Скриншоты не забудь
nes
Дак как дела с проектом то? Суслик больше не может ждать
Fedor1995
А я не обещал что быстро будет )
Изучаю DDS.
nes
> А я не обещал что быстро будет )
Охлол
nes
> Хочешь помочь?
Пфф. Вот весь код:
+ Показать
− Скрыть
program DDSArr;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
SysUtils,
Classes, vampyreimagingpackage,
ImagingTypes, Imaging, ImagingDDS;
procedure TryAddImage(const AFileName: string; var Arr: TDynImageDataArray);
var img: TImageData;
begin
InitImage(img);
if not LoadImageFromFile(AFileName, img) then Exit;
if Length(Arr) > 0 then
begin
if Arr[0].Width <> img.Width then Exit;
if Arr[0].Height <> img.Height then Exit;
if Arr[0].Format <> img.Format then Exit;
end;
SetLength(Arr, Length(Arr)+1);
Arr[Length(Arr)-1] := img;
end;
procedure DoWork;
var sr: TSearchRec;
newDDS: TDynImageDataArray;
dds: TDDSFileFormat;
begin
newDDS := nil;
if FindFirst('*.png', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory) <> 0 then Continue;
TryAddImage(sr.Name, newDDS);
until FindNext(sr) <> 0;
FindClose(sr);
end;
if Length(newDDS) > 0 then
begin
dds := TDDSFileFormat.Create();
try
dds.SaveVolume := True;
dds.SaveDepth := Length(newDDS);
dds.SaveMipMapCount := 1;
dds.SaveToFile('total.dds', newDDS);
finally
FreeAndNil(dds);
end;
end;
end;
begin
DoWork;
end.