Загрузка и отрисовка мешей.

Привет. Возник у меня вопрос один по реализации мешей (реализация пока для dx).

Загружаю я свой меш из файла (например *.3ds). Получилася у меня некий исходный набор геометрии для создание уже директового буфера (vertex, index). Создал я эти буфера - рисую. Устройство потеряно - ресрусы освобождаем.

Теперь вопрос - кто и как делал (сталкивался) : для пересоздания исходный набор продолжают хранить со времени его первой загрузки или в тупую грузим опять из файла?

Грузить чего-то мне не улыбается, так как файликов может быть дофига, но и берут сомнения, по поводу сопровождения копии данных в памяти. Вобщем что-то я запутался.

Submitted by MaxImuS on

Комментарии

На пейси можно и хранить в памяти копию -- памяти всё равно много, а геометрия не так много занимает, как те же текстуры (которые на пейси дривер всё равно копию в системной памяти хранит, если текстуры managed).

Можно и перечитывать -- оно не сильно замедлит процесс (винт на пейси, опять же, довольно шустрый), единственное что лучше таки не держать зиллион файлов россыпью, а в одном/нескольких паках. Ну и в игре при загрузке сохранять оффсет от начала -- чтоб долго не искать. Если не читать втупую fread, а делать через file-mapping -- ещё шустрее будет (у нас в движке примерно так авто-релоадятся изменённые пакаджи/ресурсы).

Submitted by BLK Dragon on

Ясно, спасибо за отклик. Попробую похранить в памяти (эпик: "память в окнах не закончится никогда" Smile ).

Про file-mapping - это имелось ввиду?

Submitted by MaxImuS on

Память то закончится, но вам, я уверен, хватит -- вы же не ворочаете меши по 2М треугольников вроде :) 

Да, memory mapped files — пожалуй, самый быстрый способ читать файлики на вин32.

Submitted by BLK Dragon on

Хорошо )  Пойду "курить" ситуацию.

Submitted by MaxImuS on

GameDev.by