Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2013, 18:42   #41
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Его можно самописным загрузчиком считать и вывести? Без всяких там TPNGObject.
А по чему нельзя? PNG - открытый формат, вы можете посмотреть его описание в интернете.

См. ISO/IEC 15948:2004 и RCF 2083
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 10.05.2013, 19:22   #42
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

intmain, а вы Bmp тоже всегда ручками загружаете?
каждый раз, да? когда вам нужна картинка в проге, вы в Button1Click
описываете с нуля всю процедуру загрузки bmp,
начиная с AssignFile, да?
или может все-таки TBitmap.LoadFromFile ?
так и чем по вашему TPNGObject.LoadFromFile сложнее чем TBitmap.LoadFromFile ?
у меня половина компонентов на png сделаны, наверно у меня была возможность сравнить что проще, как думаете?
Господа дохрена правильные умники, вы заколебали своими нравоучениями.
Кстати, это как раз тот случай, где я не хочу изобретать велосипед, потому что меня устраивает то, что есть.

Какие проблемы что-то таскать в проекте?
По-моему с приходом терабайтных винтов прошли времена,
когда программисты бились за каждый байт ехе-шника...
xrob вне форума Ответить с цитированием
Старый 10.05.2013, 20:04   #43
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от xrob Посмотреть сообщение
Какие проблемы что-то таскать в проекте?
По-моему с приходом терабайтных винтов прошли времена,
когда программисты бились за каждый байт ехе-шника...
К терабайтному винту неплохо бы еще и инет соответствующий.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 10.05.2013, 20:33   #44
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от intmain Посмотреть сообщение
Да ты что, правда?) Тогда пнг и мой формат чтоже!
Его можно самописным загрузчиком считать и вывести? Без всяких там TPNGObject.
Я так предполагаю, что там заголовок + данные растра в zlib компрессии или чо там вообще ? если так, то это как минимум злиб таскать в проекте ?
Вобщем хочу взглянуть на загрузку пнг, есь код? )
внешние файлы и зависимости это нормально, не нужно отрекатся от всего.
смотрите пример серьезного софта.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.05.2013, 20:36   #45
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
а вы Bmp тоже всегда ручками загружаете?
ну да, там делов то на 50 строк кода. простота и ясность.

Код:
int LoadBmp(const std::string &In_FileName, unsigned &Out_Bpp, unsigned &Out_Width,
                           unsigned &Out_Height, unsigned char **Out_Pixels, unsigned &Out_PixelsSize ) 
{
	unsigned FileSize = 0;
	unsigned short BM = 0;
	int OffsetToPixels = 0;
	short Planes = 0;
	short Bpp = 0;

	std::ifstream File( In_FileName.c_str(),  std::ios::binary );
	if (!File.is_open()) return 0;

	File.seekg (0, std::ios::end);
	FileSize = File.tellg();
	File.seekg (0, std::ios::beg);

	File.read((char*)(&BM), sizeof (BM));

	if (BM != 19778) return 0;

	File.seekg (8, std::ios::cur);
	File.read((char*)(&OffsetToPixels), sizeof (OffsetToPixels));
	File.seekg (4, std::ios::cur);

	File.read((char*)(&Out_Width), sizeof (Out_Width));
	File.read((char*)(&Out_Height), sizeof (Out_Height));

	File.read((char*)(&Planes), sizeof (Planes));
	if (Planes != 1) return 0;

	File.read((char*)(&Bpp), sizeof (Bpp));
	if (Bpp != 24) return 0;
	Out_Bpp = Bpp;

	Out_PixelsSize = Out_Height * ((Bpp * Out_Width + 31) / 32) * 4;
	//Out_PixelsSize = FileSize - OffsetToPixels;

	File.seekg (OffsetToPixels, std::ios::beg);
	*Out_Pixels = (unsigned char*)malloc(Out_PixelsSize);

	File.read((char*)*Out_Pixels, Out_PixelsSize);
	File.close();

	return 111;	
}
Цитата:
Кстати, это как раз тот случай, где я не хочу изобретать велосипед, потому что меня устраивает то, что есть.
ну а я люблю велики и поэтому я не могу их не изобретать.

Цитата:
так и чем по вашему TPNGObject.LoadFromFile сложнее чем TBitmap.LoadFromFile ?
Я честно признаться вообще не в курсе чем. Иконкой в панеле контролсов которые можно перетащить на формочку?) Я вот когда объектный паскаль мучал, первым делом изводил всю эту тулбарную хр%нь, оставлял самый необходимый минимум. Как-то доходили ручки до того что перекомпилировал system.pas чтобы убить всю эту иерархическую хр%нь которая вагоном цепляется к любому новому классу. Но там выяснилось что нужно править менеджер памяти и в общем я забросил на том.

Цитата:
А по чему нельзя? PNG - открытый формат, вы можете посмотреть его описание в интернете.
Мдя, столько букв. А вот с точки зрения реального кода загрузки, оно более дружелюбное наверное ? Хотя ладно я передумал у мну есть же тарга и какие-то форматы текстур с хардварной видео компрессией.

Цитата:
К терабайтному винту неплохо бы еще и инет соответствующий.
МИчта была бы!

Цитата:
внешние файлы и зависимости это нормально
вы так говорите как-будто бы независимость это что то плохое )
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки

Последний раз редактировалось Beermonza; 10.05.2013 в 21:37.
intmain вне форума Ответить с цитированием
Старый 10.05.2013, 21:37   #46
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

intmain, не засоряйте пожалуйста тему поспешными выводами и своими кодами, которые к теме не относятся. Создавайте свою и там расписывайте как через 50 строк делаете то, что набирается в одну строку и работает везде и сразу, поскольку содержится в пристегнутых библиотеках в шапке листинга.

В скрепке библиотека. Нужно сходить в каталог примерно такой Borland > Delphi > Source посмотреть, что там. Обычно там сторонние библиотеки. Создаёте там папку PNGImage и в ней должно быть содержимое того, что я запаковал.

Далее запускаем Delphi, и идем в меню Tools > Environment Options, на вкладку Library, в поле Library Path в конце строчки ставим символ ";" и путь к библиотеке PNG, т.е. вот такой: $(DELPHI)\Source\PNGImage ...это относительный путь, или можно прописать полностью где у вас находится среда.

Теперь Delphi будет знать где взять библиотеку и будет брать из нее код для компиляции исполнительного файла, и ничего с игрой пристёгивать не требуется.

В редакторе кода в секции библиотек нужно добавить PNGImage.

Далее нужно почитать про эту библиотеку и освоиться с ней (в поисковике "pngimage delphi"). Я использую данные по-своему при обработке и выводе. Сразу программным образом выводить в форму с альфа-каналом мне ещё не приходилось.
Вложения
Тип файла: zip PNGImage.zip (349.8 Кб, 14 просмотров)
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 10.05.2013 в 22:05.
Beermonza вне форума Ответить с цитированием
Старый 10.05.2013, 22:07   #47
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
Лампочка

Цитата:
не засоряйте пожалуйста тему поспешными выводами и своими кодами, которые к теме не относятся
Ёй простите великодушно, не смог удержаться и не поучаствовать )
И кстати не я увел разговор в русло обсуждения форматов файлов изображений.

Цитата:
Создавайте свою и там расписывайте как
Обязательно.

Цитата:
как через 50 строк делаете то, что набирается в одну строку и работает везде и сразу
Ну я же один раз набил 50 строк и далее тоже одну пишу )
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 10.05.2013, 22:24   #48
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от intmain Посмотреть сообщение
И кстати не я увел разговор в русло обсуждения форматов файлов изображений.
Ты вклинился с кодами на C++, когда тема звучит "Delphi RPG". Нужно внимательнее, ...я слежу за соблюдением тематики. А так, конечно прощается, если просят простить.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 10.05.2013 в 22:26.
Beermonza вне форума Ответить с цитированием
Старый 11.05.2013, 09:17   #49
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Сделал квест в игре.
Часть картинок, в частности огромные по размеру, перевел в PNG.
Все сгруппировал, теперь в корневой папке не лежит куча файлов. Все, кроме EXE в Data.
Вложения
Тип файла: rar WoR.rar (9.06 Мб, 19 просмотров)
ruN00b вне форума Ответить с цитированием
Старый 11.05.2013, 10:11   #50
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
Лампочка

Я вот на птичьих правах бета тестера обнаружил такую проблему.
err.jpg
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi RPG ruN00b Мультимедиа в Delphi 1 07.05.2013 09:40
RPG-SpaceInvaders revaldo666 Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 08.02.2012 18:04
Delphi-клиент для Online RPG "Dragon Knight" apromix Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 23.05.2009 12:48
3D-RPG Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 25 12.05.2007 11:21