PNGImage Component (комментарии)
Это сообщение сгенерировано автоматически.
А зачем использовать PNG, когда можно использовать свой формат, для сжатия можно использовать тот же APLib?
Кроме удобства сохранения в конечный формат из редактора еще плюсы есть?
Мне просто нравиться этот формат (Это мое сугубо личное мнение). Конечно, можно например хранить в файле сразу RGBA-данные и сжимать их. Но я поступаю иначе - я сжимаю уже готовые dll и exe.
Antalis
>я сжимаю уже готовые dll и exe
В результате, при загрузке оно все распаковывается в память. Для маленькой программки это еще не проблемма, а вот для большой суицид.
Честно говоря, я не занимался оптимизацией хранения данных. но в свое время интерессовался вопросом как засунуть свои ресурсы в один файл. Используя TStream создавал нетипизированный файл, в котором все и хранилось.
Еще замечу, что я не профессиональный программист, я - дизайнер, который фанатеет от программирования. Я очень давно хотел создавать игры (по-началу я рисовал настольные игры, а мои знакомые играли в них). Мне очень нравятся красивые игры. Однажды я не стерпел, и обратился через интернет к программистам создавать игры. но никто не откликнулся! В итоге я самостоятельно изучал программирование (уже 2 года) без отрыва от основной дизайнерской работы. В итоге, я пришел к выводу, который озвучил препод на компьютерных курсах - "Программировать - не сложно, учиться - долго"!
Так как я очень многому научился благодаря информации из интернета, то написание этих статей - моя благодарность этим людям. Надеюсь, я никому не попорчу их профессиональный бизнес!
А так - я всегда открыт для новой полезной информации! ;-)
В ОpenGL для создания текстуры нужны данные RGBA, а как их подготавливать, хранить, загружать - дело каждого. Но если я узнаю что-то более толковое и полезное - использую эту новую информацию ;-)
Кстати, если заметил, одновременно у меня существует только один экземпляр класса PNG и после изготовления текстуры, он тут же уничтожается.
>Кстати, если заметил, одновременно у меня существует только один экземпляр класса PNG и после изготовления текстуры, он тут же уничтожается.
Это не здорово ;)
Почему я предложил вариант своего формата и именно aplib.
aplib позволяет очень быстро распаковать весь блок данных в другой блок, минуя любые временные подблоки, как например в jpeg, как дело в png обстоит точно не знаю, но тоже наверное поблочное сжатие. Также aplib жмет лучше.
Далее при использовании своего формата нет необходимости в преобразованиях, то есть загрузил сжатый блок, распаковал, загрузил текстуру.
Сделать перепаковщик из PNG в свой формат не проблема.
Еще один момент. Частые выделения и освобождения памяти - зло. Лучше всего выделить один кусок памяти, например 1Mb и делать загрузку и распаковку туда, в случае если кусок станет мал, делать realloc/resize или просто освобождать и выделять новый, в два раза больший, кусок.
Это все никак не влияет на конечный результат, но скорость загрузки должно повысить возможно заметно повысить.
>я рисовал настольные игры
То есть рисовать умеешь ;) Можно посмотреть на что-нибудь, а то может ты замечательный художник, а тратишь время на программирование.
Благодаря знанию программирования - я могу разговаривать с тобой на равных, а то бы ты мне, как дизайнеру, рассказывал бы, как сложно и долго что-то программировать :-)
Хорошо, пороюсь дома, чего-нибудь и выложу :-)
Но пока я продолжу описывать здесь создание архитектуры графического движка на основе PNG (коней на переправе не меняют)
В следующих статьях я буду усложнять классы, создам класс менаджера сцены, потом опишу файл свойств объектов. Пока я не трогаю тему манипулирования текстурными координатами (эту тему я пока сознательно пропустил) и разделения спрайта на тайлы, но я обязательно напишу на эту тему статьи. Здесь я описываю свои шаги от простого к сложному, но в действительности мои классы давно уже умеют делить спрайты на тайлы :-)
Кстати, программирование для меня - это интеллектуальное творчество, где я чувствую свободу действий. Конечно, если бы я сидел где-то в конторе и ваял базы данных, то мне это быстро наскучило, а вот в gamedeveloping-е есть простор где разгуляться :-) (Мне так кажется, так как я никогда в этой индустрии не работал, как и не программировал профессионально).
Тема в архиве.