-
Или под более оптимальным решением как раз и подразумевалось: "сформировать из 2-х картинок 32-битный битмап (в памяти) и из него сделать текстуру OGL."?
Ну да. Обычная загрузка - загрузить картинку в память, развернуть BGR(A) в RGB(A) (вроде это требуется для создания OGL текстур), создать текстуру. С альфой - загрузить 2 картинки, соединить их в одну (и одновременно развернуть), создать текстуру. С именами файлов самое простое решение - имя файла альфа-текстуры = имя файла обычной + '_a' или что-то в этом духе. Модули для работы с 32-битными и прочими битмапами на уровне Scanline вроде были в Кладовке - antonn подскажет где конкретно, он же их и писал.
За ссылку спасибо, такое довольно подробное описание формата мне не попадалось...
Там и код сохранения есть, если дальше пролистать.
Ещё есть такой вариант: использовать поддерживаемое аппаратно сжатие текстур. Удобно тем, что распаковывать вообще ничего не нужно, оно прямо в видеокарту грузится в сжатом виде (экономится память) и распаковывается непосредственно при рендеринге. Есть сжатые форматы и с альфой, и без (в DirectX они называются DXT1..DXT5). Хотя когда я пробовал химичить со сжатием, мне качество не понравилось... не знаю, может сейчас с этим лучше. Относительно степени сжатия вопрос тоже неясный.
-
Дык а взять в руки граф редактор и засунуть туда текстуру альфу и сохранит в tga зачем делать динам всё это?????
-
> Sapersky (21.06.07 16:00) [20]
Спасибо, посыл понял :) В целом здесь уже почерпнул для себя достаточно новой и полезной информации по графическим форматам. Сейчас нужно время чтобы во всем разобраться и попробовать. В любом случае сделаю, как и хотел изначально, дабы разобраться таки с tga, а далее попробую поковырять альтернативные варианты хранения графических ресурсов. Еще раз спасибо за наводки :)
> Jkot © (21.06.07 16:54) [21]
Да, так и есть. Только текстуры в tga размером 512x512 почти под мегабайт занимают места. Хотя в jpg такая же текстура будет занимать как минимум раз в 5 меньше и если хранить саму текстуру и альфу отдельно в jpg, то размеры дистрибутива сократятся в разы. Для этого собственно все это и затеял.
-
Хотел промолчать, но нет сил. Автор, ты читаещь, что тебе пишут? Или ты не читатель, а - писатель?
> Это уже не принципиально, в коде что 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, хотя есть о текстурах с альфа-каналом
-
> ЮЮ © (22.06.07 03:07) [23] > tga можно прочитать, в него можно записать. Работать с ним > бессмысленно. Ибо это формат хранения данных. ИМХО
Глупо так говорить. Так можно написать про любой графический формат, или даже про любой формат вообще...
> Не чувствуешь противоречия? tga как формат хранениения тебя не > устраивает из-за размера. Но ты упорно пытаешься получить tga, даже > если хранить будещь в jpg.
Вот моя цитата из последнего поста, прочитайте, пожалуйста, внимательно: "В любом случае сделаю, как и хотел изначально, дабы разобраться таки с tga, а далее попробую поковырять альтернативные варианты хранения графических ресурсов. Еще раз спасибо за наводки...". Вот такой вот я упорный, есть цель, хочу её достичь. И при этом я согласен что, это скорее всего не оптимальный путь, но и более оптимальные варианты, про которые мне написал Sapersky и @!!ex_ я обязательно попробую.
-
какие тут альтернативные - берешь битмап, в ресурсы пихаешь его сжатым (хотя бы zlib), он и сожмется и (для меня это главное) не потеряет палитру, и работать с ним проще, чем с png. Не понимаю, зачем так гоняются за форматами, которые придуманы для еденичных файлов в общем употреблении...
-
zlib херово текстуры сжимает. вернее практически совсем не сжимает.
-
Photoshop?
-
> zlib херово текстуры сжимает. вернее практически совсем > не сжимает.
да ну? :) 1 456 018 байт файлов в bmp ужались в 128 501 байт
-
> [28] antonn © (24.06.07 09:12)
Какой файл? Надо понимать, что на качественной текстуре нет текселей с одинаковым цветом. Как фотография практиччемски не сжимается с помощью LZW, так и текстура не сжимается. Или я не знаю каких то особенностей, zlib.
-
-
> Sapersky (25.06.07 18:39) [30] > Не, zlib, png и даже jpeg - это несерьёзно. Реальные пацаны генерируют > текстуры при запуске а-ля 64-кб демо :) > Смех смехом, но вот нашёл "текстурный движок", который это умеет: Надо сразу генератор игры, параметры задаешь, а он тебе игру генерирует :)
А что по делу, скриншоты красивые конечно, но мне кажется, что не каждый генератор может сгенерировать то, что может нарисовать художник. Пусть генерируемые текстуры будут качественными и реалистичными, но чаще не реализм поражает, а тот графический стиль, в котором выполнена игра, а стиль этот в первую очередь задает именно художник. Игра в 64кб - это наверное невероятно крута, но такая игра бездушна, она не имеет своей изюминки как в графическом плане так и в остальном. имхо конечно. :)
-
Кстати, если есть проблемы с сохранением 32-бит tga в фотошопе CS, CS2, т.е. альфа-канал убивается, замените "\Plug-Ins\File Formats\Targa.8BI" (40кбайт) файлом из 7 версии. И никаких саморисований альфа-канала.
-
А png-требует библиотеку, к тому же в png zip-сжатие, а оно тормознее rle. При боьших объемах png будет как jpg тормозить.
|