![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Доброго Всем Времени Суток!
я не так давно начал юзать дирекст.. на С++ могу (не без матершины) писать... но в основном это примитив... щас вот взял двух пацанов и мы начали делать игруху, как наверное стало понятно, я единственный программирующий из Нас. написал "вход" в игру... развернул сцену и отображением того же примитива, но возник своевременный вопросец - как создать собственную систему архивации и хранения изображений, со сжатием и минимальными потерями качества. мне нравится эта раелизация в ГТА, в своё время я там весь движок перелопатил и единственное хорошее там именно хранение файлов, на мой взгляд... Пожалуйста, подскажите, как сверстать что-то подобное?! просто я подошёл к моменту введения текстур и мне не хотелось бы тоскать за собой огромный шлейф БМПшек... -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| MoZy |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 4.6.2006 Репутация: нет Всего: 0 |
Ну если хочешь сжимать вообще без потерь, то поищи в инете исходники GZIP'а. Пишешь свой запаковщик/распаковщик типа IMG Tool.
Вобщем так: Открываешь бмпешку в буфер, сжимаешь GZIP'ом и пишешь в свой файл следущее: simple.bmp//имя файла 153000 //размер в байтах (сколько читать) ............. //и тут все 153000 байт сжатого бмп logo.bmp //имя другого файла 20500 ......... и так по мере надобности добавляешь или перезаписываешь. потом, когда понадобится прочитать, то поступаешь так: допустим ты знаешь бмпешку по имени, тогда ты читаешь первую строчку своего файла, если не совпадает, читаешь сколько байт и seek'ом их пропускаешь, затем все повторяется, пока не наткнешься на EOF или свой файл. Если тебе повезло, то читаешь его в буфер и декодируешь. Вот, у тебя готовый Bitmap. Можно еще, при создании твоего архива, делать лог-файл, в котором указывается позиция какого-то файла (ну и число байт), тогда в самом архиве можно хранить все сплошняком. И поиск тогда не нужен: сразу seek и в буфер. --------------------
Experimentia est optima rerum magistra |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
ZC1989
Текстуры берут без потерь. В большенстве своём аля TGA. А потом всё сжимают архивируя. Таким образом пространства занимается мало и потреь качества нет. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
блин... забыл я про эту тему....
MoZy, спасибо за мысли, я думаю как раз сделать что-то типа IMG Tool'а, но не БМПшки там хранить а TGA'шки... они мне в дальнейшем как ра- понадобятся... там несколько фич с ними есть... вот только может кто-нибудь разъяснить следующее, когда я загружаю текстуру (ТГА или ДЖПЕГ, не важно) окак мне её использовать в обычном приложеении? я замучался уже... куча примеров, и везде без литра не разобраться... вопрос следующий, как эта текстура будет отпереляться? ей должно задаваться индивидуально имя или что? как она используется? ЗЫ: мне надо воткнуть её так же как это с битмаппами получается... -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
ZC1989, я тоже в DirectX новичок. Начал писать графический 3D-движок. Но от использования 3Ds файлов отказался. Ты пробовал их читать? Нормально всё?
Лучше отобрази не примитив, а готовый объект(а лучше целую сцену), а то вдруг 3Ds-формат подкачает, а ты уже научишься тектуры накладывать. Вот. |
|||
|
||||
| Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Кстати:
Я думаю, что тебе придется писать свою функцию наложения текстур из тга-файлов. |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Pilligrim, я стал сразу же использовать Х-файлы... они дирекстом понимаются очень просто... а вот относительно загрузки "чужеродных форматов" для графики, так я использовал уже готовые, но пока не занимаюсь отрисовкой сцены... есть всякие мелочи, пока что важнее...
Это сообщение отредактировал(а) ZC1989 - 12.8.2006, 20:15 -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Pilligrim |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Ты меня, конечно, извини, но, если не секрет, какие мелочи? Что может быть важнее графического движка? Т.е. я считаю, что его нужно писать первым. Т.к. всю логику игры удобнее описывать, когда видишь как это будет выглядеть(а не с помощью раппортов типа: удар, урон 150, блок, здоровье 45 и т.д.) Ведь так?
Значит ты пробовал что-нить нарисовать(например в максе), потом сохранить в *.3Ds, а потом прочитать с помощью проги и прорисовать? Или всё-таки нет? Я то про то, что у тебя это может не получиться(поэтому попробуй, заклинаю тебя |
||||
|
|||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Pilligrim, Парнишь, когда ставишь SDK по дирексту на винду и МАКС у тебя уже установлен, там появится возможность экспорта в формат X-File's для его прочтение существует примитивная функция... если надо, я суну её сюда, ток сначала приведу в благочестивый вид... и к тому же этот формат поддерживает текстуры
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Дык я не про X-File's, а про 3Ds! Их читать пробовал в своей проге?
|
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Pilligrim, нет, я не пробовал... говорю же что пока меня устраивает Х... может потом и придётся перейти на что-то сильное, но в таком случае буду писать ваще свой формат...
а чё тебе так уср*лся этот 3Ds?! кстати, ты знаешь, как толком загрузить ТГАшку и на форму, вместо битмапа сунуть... ну надоело уже... загружаю в переменку, а вот воткнуть на форму никак -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Pilligrim |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Ну, для этого тебе надо: 1) суметь прочитать один из "сильных" форматов 2) как-то представить всё что туда напихали его девелоперы в своей проге 3) создать структуру(причем удобнее) своего формата 4) загнать туда то, что ты прочитал из одного из "сильных" форматов Вооооот...
Потому в него не загоняют текстуры, цвет и анимацию((( Лучше переходи на ASE файлы, как я))
А в какую переменку загружаешь? |
||||||
|
|||||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Pilligrim, я нашёл достойный (как мне кажется) алгоритм загрузги этой самой ТГАшки... резутьтат возвращается в переменную CImage, это собственный для хранения...
вот это... я картинку загружаю в переменку... всё тип-топ... а вот как её присвотить форме?! мне этот понадобится для вывода на простом диалоге и для загрузки текстур в самом движке... воть... есть соображения? -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
По мне дык лучше засунуть все в структурку BITMAP. Все предельно просто.
Вот описание: The BITMAP structure defines the type, width, height, color format, and bit values of a bitmap. typedef struct tagBITMAP { // bm LONG bmType; LONG bmWidth; LONG bmHeight; LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; LPVOID bmBits; } BITMAP; Members bmType Specifies the bitmap type. This member must be zero. bmWidth Specifies the width, in pixels, of the bitmap. The width must be greater than zero. bmHeight Specifies the height, in pixels, of the bitmap. The height must be greater than zero. bmWidthBytes Specifies the number of bytes in each scan line. This value must be divisible by 2, because Windows assumes that the bit values of a bitmap form an array that is word aligned. bmPlanes Specifies the count of color planes. bmBitsPixel Specifies the number of bits required to indicate the color of a pixel. bmBits Points to the location of the bit values for the bitmap. The bmBits member must be a long pointer to an array of character (1-byte) values. Remarks The bitmap formats currently used are monochrome and color. The monochrome bitmap uses a one-bit, one-plane format. Each scan is a multiple of 32 bits. Scans are organized as follows for a monochrome bitmap of height n: Scan 0 Scan 1 . . . Scan n-2 Scan n-1 The pixels on a monochrome device are either black or white. If the corresponding bit in the bitmap is 1, the pixel is set to the foreground color; if the corresponding bit in the bitmap is zero, the pixel is set to the background color. Только на английском))) Переводить не захотелось. Будут вопросы спрашивай))) |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Pilligrim, вопрос есть, до меня вот просто не доперает, как мне в битмапповую структуру прочитать скажем ТГА?! ведь разве сам БИТМАП понимает этот формат?! помоему нет.. покрайне мере не работало у меня это...
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |