[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


Страница 1 из 11
Модератор форума: Spidy, turBO 
Форум мира Blitz3D » Язык Blitz3D » Дополнительное программное обеспечение » Загрузка объектов из памяти
Загрузка объектов из памяти
CrozzyДата: Суббота, 07.01.2012, 09:35 | Сообщение # 1
ученик
Группа: Пользователи
Сообщений: 92
Награды: 1
Репутация: 1
Статус: Offline
Известно, что Blitz может грузить картинки/модели/текстуры итд итп только из файлов. Может есть какие-нибудь длл для загрузки из оперативной памяти. Т.е. файл у меня как-бы сохранен в банке памяти. Заранее благодарю

Не все то 3D, что вертится...
 
MishanayCoolДата: Суббота, 07.01.2012, 12:13 | Сообщение # 2
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
Andreyman - создатель библы Ashadows описывал тута Работа с surface в памяти Blitz3D

Цитирую первые строки из сайта:

Для эффективной и максимально быстрой работы с вершинами и треугольниками, операции над ними можно производить непосредственно в памяти из внешних библиотек, не прибегая к встроенным командам блица.

Вот эти головастые парни - потрошители блица.
ANDREYman, MixailV - создатель либ FastExtension, FastImage, FastText, FastPointer

И вот тут они потрошат и выворачивают на изнанку Blitz3D Структуры блица в памяти


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Суббота, 07.01.2012, 12:31
 
CrozzyДата: Суббота, 07.01.2012, 17:24 | Сообщение # 3
ученик
Группа: Пользователи
Сообщений: 92
Награды: 1
Репутация: 1
Статус: Offline
Хмм... круто, но не то, что мне надо.

Ситуация такая. Файл изображения сидит не на HD, а в оперативке. Мне надо схватить его за хендл и создать блицовское изображение

image = CreateImageFromMemory(handle_to_bank, size_of_bank) ; что-то в этом роде


Не все то 3D, что вертится...
 
MishanayCoolДата: Четверг, 12.01.2012, 12:09 | Сообщение # 4
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
Quote
Хмм... круто, но не то, что мне надо.

Поправочка, именно то что надо.

Quote
Файл изображения сидит не на HD, а в оперативке. Мне надо схватить его за хендл

Загруженный меш и храниться в оперативке, а возвращённый хендл - это его адрес в памяти.
Пользуясь данной мною инфой Вершины (Vertex), пишешь функцию которая считывает из памяти по этой таблице каждый вертекс и собирает готовый меш в блитце.
Принцип действий приблизительно такой.

Я представляю сколько будет весить твоё приложение, если ты все ресурсы будешь запекать в него.
Вот кстати у меня игрушка стоит, одно приложение и ни одной папки с ресурсами. Обратите внимание на вес приложения.


Не проще воспользоваться либой RapidPak3.


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Четверг, 12.01.2012, 12:16
 
CrozzyДата: Четверг, 12.01.2012, 13:43 | Сообщение # 5
ученик
Группа: Пользователи
Сообщений: 92
Награды: 1
Репутация: 1
Статус: Offline
>Загруженный меш и храниться в оперативке, а возвращённый хендл - это его адрес в памяти.

Опять мимо.(((((((
Я не собираюсь пихать все в несчастную ехе-шку. Берем ZIP-ованный меш с ЖД, распаковываем его в память и грузим оттуда, затем все лишнее убираем.

UnpackFile(archive_stream, "mesh.3ds", bank)
LoadMeshFromMemory(bank, size_of_bank)
;....
;....
;....
FreeBank bank ;тут все шито-крыто

Добавлено (12.01.2012, 13:43)
---------------------------------------------
С распаковкой архива проблем никаких нет, проблема с загрузкой!


Не все то 3D, что вертится...
 
MishanayCoolДата: Четверг, 19.01.2012, 15:17 | Сообщение # 6
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline

Есть одна мысль, сейчас надо идти по делам, завтра выложу что получилось.

Добавлено (19.01.2012, 15:17)
---------------------------------------------
Короче я почти добился нужного эффекта. Это не хилая такая тема. Всю ночь напрягал свои извилины. И мне не хватило времени.
План был такой.
Делаешь на блитце типа своего конвертера мешей, который считывает позиции каждого вертекса, его нормали и RGBA цвета.
Загружаешь стандартный меш(3ds, b3d) в блитц, конвертируешь его через этот конвертер и сохраняешь к примеру как mesh.crozzy.
Далее в блитце пишем загрущик этого меша, считываем нужные нам байты из памяти(позиции вертексов, нормалей и RGBA цветов) - это должно быть не сложно, так как это наш собственный формат и мы хорошо знаем его структуру.
Плюс в том что даже если этот mesh распакуют из твоего архива, то его никто не сможет использовать.

Я могу ещё поломать голову, вопрос сколько времени это займёт?
Хотя если честно мне кроме этого есть чем заниматься, но если сильннно надо!


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Четверг, 19.01.2012, 15:21
 
Форум мира Blitz3D » Язык Blitz3D » Дополнительное программное обеспечение » Загрузка объектов из памяти
Страница 1 из 11
Поиск: