neio
> Тогда все равно выходит, либо WorldManager должен быть синглтоном, либо
> менеджеры..
Есть несколько способов взаимодействия компонента с контекстом в многопоточной среде:
1) глобальный контекст (синглтон).
основная проблема: общая структура, к которой нужно организовывать конкурентный доступ.
2) локальная ссылка в компоненте на контекст.
избыточность связанная с хранением ссылки.
3) привязка контекста к идентификатору потока (Thread Local Storage).
один из любимейших способов используемых при проектировании (веб) серверов.
AlexCraft
Благодарю. Наставило на путь истинный.
Еще один вопрос, может не в тему, стоит ли использовать свои аллокаторы памяти? Допустим менеджер геометрии, динамической, выделяет память из уже зарезервированного пула?
Вообще, стоит ли этим заниматься? Смотрел исходники doom3, там они писали свой аллокатор, да там вообще вся STL переписана =)
Снова вернусь к тебе. Это нормально?
У меня появилось дерево самих аспектов, дерево сцены (так как игра в 2Д, то оно превратилось в иерархию игровых объектов по секторам мира, что бы легче симулировать их поведение), линейный список задач рендеру. Организация нагрузки на рендер породила менеджер геометрии. Его задача - проходить по сцене, и паковать геометрию (а она линкуеться только в древе аспектов с объектом) в стейты, привязывать к ним материал (это шейдер, с описанием пассов и настроек) , ну и по мелочи. Материалы и геомерия не имеют своих менеджеров. Нужен ли он им?
Вопрос по организации рендера в компонентной системе.
В 2д движке все просто - добавляешь объекту компонент спрайт, спрайт регистрируется в рендере и рендер его каждый кадр рисует. А как быть в 3д случае, когда для отрисовки нужен материал, текстура и меш?
В Unity для того, чтобы объект выводился на экран ему нужно добавить меш и меш рендерабл в котором должен содержаться материал в котором содержится текстура. Меш рендерабл регистрируется в рендере и рендер каждый кадр тянет из рендерабла материал, как то тянет из гейм объекта меш и все это рендерит. По мне так такой подход выглядит не очень изящно, но ничего другого я придумать не могу.
Тема в архиве.