ПрограммированиеФорумОбщее

Вопросы по VB6 (21 стр)

Страницы: 120 21 22 2325 Следующая »
#300
15:13, 28 апр 2011

СырМан
И то и другое использовать можно, просто стоит иметь ввиду, что скорость будет несколько ниже. То есть для отдельных переменных имеет смысл всегда использовать Long, а для больших массивов уже важно экономить память, тут уже и Byte, и Integer годятся. Смотреть нужно по обстоятельствам, для переменной дескриптора файла можно и Integer применить, всё равно применение разовое, а вот для использования в многотысячном цикле уже желателен тип Long.

#301
15:16, 28 апр 2011

А, вот оно как. Ясно, спс

#302
16:21, 28 апр 2011

Mikle
Нашел!!! Жаль демки нет... Буду глядеть архитектуру...

#303
17:46, 28 апр 2011

Mikle
> Был такой iRender, но сырой очень
В смысле сырой?
И еще, что по твоему должен уметь 2D/3D игровой двиг?

#304
15:04, 29 апр 2011

max255
> что по твоему должен уметь 2D/3D игровой двиг?
Смотря под какие конкретно игры он заточен.
Для 3D автогонки или шутера нужно грузить ландшафт, желательно с ЛОДами, для авиасима ЛОДы уже просто необходимы, но не так важна, например, работа с тенями, в любом случае нужно грузить модели какого-нибудь распространённого формата, необходим инструментарий - редактор карт и т. п. Сделать универсальное очень сложно.

#305
17:07, 30 апр 2011

Mikle
> желательно с ЛОДами
Которые грузятся с диска или генерируются сами?

#306
17:19, 30 апр 2011

Лоды для ландшафта сгенерировать не сложно, для моделей - другое дело.

#307
18:28, 30 апр 2011

Mikle
Сейчас начал переписывать свой старый менеджер ресурсов. Хочу добавить туда свободное удаление и поиск по имени...
Так вот не могу определиться с алгоритмом удаления текстур...
Пока что вижу такой:

Существует два массива:
1)Хранит структуру текстуры (от 0 до количества всех текстур)
2)Обычный массив Long чисел, хранит информацию о свободных id = 0,1,2,3,4,5,6,7,8,9
ТЕ при загрузке новой текстуры, загрузчик найдет первое свободное место в массиве(сдесь это 2) и выдаст как свободное id для загрузки.

После чего загрузчик создаст новую текстуру и в ее структуру поместит ее id.
В случае обращения к текстуре простой цикл по всем текстурам.
В случае удаления перемещение всех текстур в первом массиве, и пометка во втором, что этот id теперь свободен.

>От поиска по имени отказался... Слишком долгий...

Можеш что нибудь посоветовать?

#308
10:31, 2 мая 2011

Не пойму, откуда цикл возникает при обращении к текстуре, зачем он там?

#309
12:59, 2 мая 2011

СырМан
> Не пойму, откуда цикл возникает при обращении к текстуре, зачем он там?

Вот моя структура текстуры

Public Type ServerTexture
 Texture    As Direct3DTexture8        'текстура
 ID            As Long                            'ид
 SrcFile      As String                          'файл
 SrcHeight As Long                            'высота
 SrcWidth  As Long                            'ширина
End Type

В цикле я буду искать по ID.
ТЕ номер в массиве уже не будет соответствовать ID, например id = 1,2,3,6,7,8. А длинна массива будет = 6.
Такое произойдет после удаления текстур 4,5,9. Массив будет урезан и сдвинут.

#310
14:24, 2 мая 2011

Предлагаю после удаления текстур массив не урезать и не сдвигать. А при повторной записи в пустые места писать следующие id. Т.е. 1,2,3, , ,6,8, . (4,6,9 удалены) => 1,2,3,10,11,6,8,12 (10,11,12 сохранены) А для поиска создать двумерный динамический массив принимающий длину в зависимости от числа спрайтов. По нему определим соответствие элемента массива и id спрайта без всяких циклов.

#311
15:11, 2 мая 2011

СырМан
Я уже прорабатывал этот вариант... Хорош... Но если будеш постоянно заружать/выгружать после 4 294 967 295 загрузки все рухнет....

#312
17:20, 2 мая 2011

СырМан
> А для поиска создать двумерный динамический массив принимающий длину в
> зависимости от числа спрайтов.
А вот это идея! Спс!

#313
18:40, 2 мая 2011

Предпочитаю обходиться вообще без специальных хагрузчиков. Это пригодится, на мой взгляд, только в мегапроектах. У меня, на примере AoS2, так - каждый класс при создании экземпляра загружает свои текстуры, а так же шейдеры, сам; при уничтожении класса он их, соответственно, сам и уничтожает. Скайбокс и ландшафт у меня тоже сделаны классами, хотя, при желании, можно было сделать и простыми модулями, ведь у этих классов создаётся по одному экземпляру. У класса "машина" четыре экземпляра, но, чтобы не хранить четыре одинаковых модели, отдельно созданы объекты "кузов", "колесо", "фары" и т. п., в них и загружены соответствующие модели и шейдеры для их отображения, а класс "машина" хранит только индивидуальные свойства - координаты, скорость, цвет и т. п., из его метода Draw уже перевызываются Draw для отдельных частей.
Бывает, что одна текстура используется для отображения объектов разных классов, например текстура с тенями, тогда для неё тоже создаётся отдельный модуль или класс, как правило это оправданно - класс Shadow будет при своём создании будет создавать текстуру соответствующего размера в зависимости от заданной детализации, предоставлять через свойство эту текстуру для использования, содержать методы для работы с ней (например размытие).

#314
18:46, 2 мая 2011

Кстате, а одномерный массив может подойдёт. Пусть id соответствует номерам элементов одномерного массива, тогда положение в массиве с текстурами можно из одномерного массива извлеч так n=arrey(id). Рад что помог :)

Ы-хы - не актуально, пока писал, Mikle ответил :)

Страницы: 120 21 22 2325 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.