![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из двух изображений получить TGA с альфа каналом? [Delphi]
Домик © (2007-06-19 13:36:00)Подскажите, как можно из двух соображений получить tga с альфа каналом? Хотелось бы сделать оптимизацию дистрибутива игры за счет пережатия всех графических ресурсов в jpeg (tga занимает намного больше места), а потом на этапе загрузки игры (или даже на этапе установки игры) генерировать из них текстуры с альфа каналом. К тому же есть много изображений, у которых контур одинаковый и для них можно было бы вообще использовать одну картинку с альфой.
Искал в Инете подобные решения, но ничего не нашлось. В основном примеры как прочитать и отобразить tga. А хотелось бы именно работу с tga. Может быть, есть где-то уже готовые модули, описание или статьи по этой теме? Буду премного благодарен :)
DJ KARIES (2007-06-26 21:32:00) [1]А png-требует библиотеку, к тому же в png zip-сжатие, а оно тормознее rle.
При боьших объемах png будет как jpg тормозить.
DJ KARIES (2007-06-26 21:26:00) [2]Кстати, если есть проблемы с сохранением 32-бит tga в фотошопе CS, CS2, т.е. альфа-канал убивается, замените "\Plug-Ins\File Formats\Targa.8BI" (40кбайт) файлом из 7 версии.
И никаких саморисований альфа-канала.
Домик (2007-06-26 02:54:00) [3]> Sapersky (25.06.07 18:39) [30]
> Не, zlib, png и даже jpeg - это несерьёзно. Реальные пацаны генерируют
> текстуры при запуске а-ля 64-кб демо :)
> Смех смехом, но вот нашёл "текстурный движок", который это умеет:
Надо сразу генератор игры, параметры задаешь, а он тебе игру генерирует :)
А что по делу, скриншоты красивые конечно, но мне кажется, что не каждый генератор может сгенерировать то, что может нарисовать художник. Пусть генерируемые текстуры будут качественными и реалистичными, но чаще не реализм поражает, а тот графический стиль, в котором выполнена игра, а стиль этот в первую очередь задает именно художник. Игра в 64кб - это наверное невероятно крута, но такая игра бездушна, она не имеет своей изюминки как в графическом плане так и в остальном. имхо конечно. :)
Sapersky (2007-06-25 18:39:00) [4]Не, zlib, png и даже jpeg - это несерьёзно. Реальные пацаны генерируют текстуры при запуске а-ля 64-кб демо :)
Смех смехом, но вот нашёл "текстурный движок", который это умеет:
http://www.profxengine.com/?PAGE=FEATURES
Правда, платный. И даже не сказано конкретно, сколько стоит - боятся, видимо, напугать.
Генератор/редактор с сохранением в картинку - бесплатный:
http://www.mapzoneeditor.com/?PAGE=FEATURES
@!!ex_ (2007-06-24 10:29:00) [5]> [28] antonn © (24.06.07 09:12)
Какой файл? Надо понимать, что на качественной текстуре нет текселей с одинаковым цветом.
Как фотография практиччемски не сжимается с помощью LZW, так и текстура не сжимается.
Или я не знаю каких то особенностей, zlib.
antonn (2007-06-24 09:12:00) [6]
> zlib херово текстуры сжимает. вернее практически совсем
> не сжимает.
да ну? :)
1 456 018 байт файлов в bmp ужались в 128 501 байт
Mortem (2007-06-24 02:03:00) [7]Photoshop?
@!!ex_ (2007-06-23 09:54:00) [8]zlib херово текстуры сжимает. вернее практически совсем не сжимает.
antonn (2007-06-22 23:41:00) [9]какие тут альтернативные - берешь битмап, в ресурсы пихаешь его сжатым (хотя бы zlib), он и сожмется и (для меня это главное) не потеряет палитру, и работать с ним проще, чем с png. Не понимаю, зачем так гоняются за форматами, которые придуманы для еденичных файлов в общем употреблении...
Домик (2007-06-22 13:41:00) [10]> ЮЮ © (22.06.07 03:07) [23]
> tga можно прочитать, в него можно записать. Работать с ним
> бессмысленно. Ибо это формат хранения данных. ИМХО
Глупо так говорить. Так можно написать про любой графический формат, или даже про любой формат вообще...
> Не чувствуешь противоречия? tga как формат хранениения тебя не
> устраивает из-за размера. Но ты упорно пытаешься получить tga, даже
> если хранить будещь в jpg.
Вот моя цитата из последнего поста, прочитайте, пожалуйста, внимательно: "В любом случае сделаю, как и хотел изначально, дабы разобраться таки с tga, а далее попробую поковырять альтернативные варианты хранения графических ресурсов. Еще раз спасибо за наводки...". Вот такой вот я упорный, есть цель, хочу её достичь. И при этом я согласен что, это скорее всего не оптимальный путь, но и более оптимальные варианты, про которые мне написал Sapersky и @!!ex_ я обязательно попробую.
ЮЮ (2007-06-22 03:07:00) [11]Хотел промолчать, но нет сил. Автор, ты читаещь, что тебе пишут? Или ты не читатель, а - писатель?
> Это уже не принципиально, в коде что jpeg, что bmp будут
> приведены к единому типу TBitmap, а вот как там уже из этого
> получить tga?
И зачем опять приводить к формату хранения изображения на диске? Чтобы, загрузив из файла, опять привести всё к тому же единому типу TBitmap (или какие там структуры соответствуют текстурам)?
так что внимательнее прочитай [6] Sapersky (20.06.07 15:38). Ибо в каком бы формате изображение не хранилось в файле, все они в итоге приводятся к одному.
> В основном примеры как прочитать и отобразить tga. А хотелось
> бы именно работу с tga
tga можно прочитать, в него можно записать. Работать с ним бессмысленно. Ибо это формат хранения данных. ИМХО.
> В любом случае сделаю, как и хотел изначально, дабы разобраться
> таки с tga, а далее попробую поковырять альтернативные варианты
> хранения графических ресурсов
> Хотя в jpg такая же текстура будет занимать как минимум
> раз в 5 меньше и если хранить саму текстуру и альфу отдельно
> в jpg, то размеры дистрибутива сократятся в разы. Для этого
> собственно все это и затеял
Не чувствуешь противоречия? tga как формат хранениения тебя не устраивает из-за размера. Но ты упорно пытаешься получить tga, даже если хранить будещь в jpg. ЗАЧЕМ? забудь про tga воообще и не вспоминай. И Читай [20] Sapersky (21.06.07 16:00). там нет ни слова про tga, хотя есть о текстурах с альфа-каналом
Домик (2007-06-22 01:18:00) [12]> Sapersky (21.06.07 16:00) [20]
Спасибо, посыл понял :) В целом здесь уже почерпнул для себя достаточно новой и полезной информации по графическим форматам. Сейчас нужно время чтобы во всем разобраться и попробовать. В любом случае сделаю, как и хотел изначально, дабы разобраться таки с tga, а далее попробую поковырять альтернативные варианты хранения графических ресурсов. Еще раз спасибо за наводки :)
> Jkot © (21.06.07 16:54) [21]
Да, так и есть. Только текстуры в tga размером 512x512 почти под мегабайт занимают места. Хотя в jpg такая же текстура будет занимать как минимум раз в 5 меньше и если хранить саму текстуру и альфу отдельно в jpg, то размеры дистрибутива сократятся в разы. Для этого собственно все это и затеял.
Jkot (2007-06-21 16:54:00) [13]Дык а взять в руки граф редактор и засунуть туда текстуру альфу и сохранит в tga зачем делать динам всё это?????
Sapersky (2007-06-21 16:00:00) [14]Или под более оптимальным решением как раз и подразумевалось: "сформировать из 2-х картинок 32-битный битмап (в памяти) и из него сделать текстуру OGL."?
Ну да.
Обычная загрузка - загрузить картинку в память, развернуть BGR(A) в RGB(A) (вроде это требуется для создания OGL текстур), создать текстуру.
С альфой - загрузить 2 картинки, соединить их в одну (и одновременно развернуть), создать текстуру.
С именами файлов самое простое решение - имя файла альфа-текстуры = имя файла обычной + '_a' или что-то в этом духе.
Модули для работы с 32-битными и прочими битмапами на уровне Scanline вроде были в Кладовке - antonn подскажет где конкретно, он же их и писал.
За ссылку спасибо, такое довольно подробное описание формата мне не попадалось...
Там и код сохранения есть, если дальше пролистать.
Ещё есть такой вариант: использовать поддерживаемое аппаратно сжатие текстур. Удобно тем, что распаковывать вообще ничего не нужно, оно прямо в видеокарту грузится в сжатом виде (экономится память) и распаковывается непосредственно при рендеринге. Есть сжатые форматы и с альфой, и без (в DirectX они называются DXT1..DXT5).
Хотя когда я пробовал химичить со сжатием, мне качество не понравилось... не знаю, может сейчас с этим лучше. Относительно степени сжатия вопрос тоже неясный.
@!!ex_ (2007-06-21 10:27:00) [15]> [18] antonn © (21.06.07 10:10)
> не вроде, а у самого стандартнейшего.
> http://antonn.ru/_images/scr/7.GIF5Кб - яблоко с альфой
> (да и вообще вся та формочка), хранится в программе в bmp.
> tbitmap.pixelformat:=pf32bit; - четвертый байт используется
> как альфа. Есстественно, нужно и ручками поработать, чтобы
> правильно его рисовать, а не "батонокидательством" заниматься,
> как любил выражаться один товарищ:)
Просто в описании стандарта ничего не говорится о 32 битах.
antonn (2007-06-21 10:10:00) [16]не вроде, а у самого стандартнейшего.
http://antonn.ru/_images/scr/7.GIF5Кб - яблоко с альфой (да и вообще вся та формочка), хранится в программе в bmp.
tbitmap.pixelformat:=pf32bit; - четвертый байт используется как альфа. Есстественно, нужно и ручками поработать, чтобы правильно его рисовать, а не "батонокидательством" заниматься, как любил выражаться один товарищ:)
@!!ex_ (2007-06-21 09:31:00) [17]> [16] antonn © (21.06.07 09:25)
не у стандартного, вроде.
antonn (2007-06-21 09:25:00) [18]
> У bmp нет никакого сжатия и естественно альфа канала тоже
> нет.
спешу вас обрадовать, у bmp есть альфаканал
@!!ex_ (2007-06-21 08:28:00) [19]> А как же альфа канал? А в целом ход мыслей понял и в конкретном
> случае не принципиально чем bmp отличается от tga :)
Я вообще имел ввиду не наличие/отсутствие альфы. А размеры и способ хранения. :)
Домик (2007-06-21 00:24:00) [20]> @!!ex_ (20.06.07 20:32) [12]
> Те надо этот геморой?
> А текстурщикам твоим? :))
Это уже из разряда привычки. Что тут поделать, раз у tga такая "фича", никто не жаловался :) Сейчас вот нужно было сделать png текстуру для экспериментов, и экспортируя её из psd в png возникли некоторые неудобства с созданием альфы, просто потому что изначально она рисовалась под tga. В общем, на вкус и цвет... :)
>tga использует rle сжатие. Практически не применимое к текстурам.
> bmp кстати тоже может использовать сжатие, так что они вообще
> идеентичны.
А как же альфа канал? А в целом ход мыслей понял и в конкретном случае не принципиально чем bmp отличается от tga :)
>ИМХО я бы рассмотрел два варианта:
Спасибо за наводки, буду пробовать...
> Sapersky (20.06.07 22:22) [13]
> Другое дело, что описанную проблему можно решить гораздо проще, безо
> всяких переупаковок на этапе установки и тем более при загрузке
> ... Т.е. под "правильно формулируется" я имел в виду "на самом деле
> вам нужно".
Хорошо. Какие наиболее оптимальные решения, по вашему мнению, можно использовать для подобной задачи? Или под более оптимальным решением как раз и подразумевалось: "сформировать из 2-х картинок 32-битный битмап (в памяти) и из него сделать текстуру OGL."?
За ссылку спасибо, такое довольно подробное описание формата мне не попадалось...