Получение всех атласов для эмиттера

Обсуждение специальной версии Magic Particles (Dev), предназначенной для разработчиков игр.

Получение всех атласов для эмиттера

Сообщение xert » Вс апр 26, 2015 2:44 pm

Здравствуйте! В игре используются заранее сгенерированные атласы текстур. Имеется ли возможность получить все атласы для конкртеного HM_EMITTER без инициации процедуры рендера? Заранее спасибо.
xert
 
Сообщения: 2
Зарегистрирован: Вс апр 26, 2015 2:40 pm

Re: Получение всех атласов для эмиттера

Сообщение Odin_KG » Пн апр 27, 2015 6:37 am

Добрый день!

Имеется ли возможность получить все атласы для конкртеного HM_EMITTER без инициации процедуры рендера?

На самом деле никакой зависимости между атласами и процессом рендера нет. Просто враппер написан так, что атласы перестраиваются перед рендером, но так делать необязательно. В примере же это сделано из соображений универсальности - атласы изменяются при вызове Magic_CreateAtlasesForEmitters / Magic_CreateAtlases и при удалении эмиттера Magic_UnloadEmitter, для которого уже был ранее построен атлас (уничтожаются ненужные атласы).

Для версии 2.25 для одного эмиттера (или анимированной папки) все текстуры будут всегда находится только на одном атласе - это гарантирует, что текстуру не придется менять при рисовании. Для версии 3.0 эта ситуация изменится, так как там будут возможны очень сложные спецэффекты, у которых может использовать, например, мультитекстурирование, поэтому эмиттеру может соответствовать N атласов, но пока этого нет.

Все статические атласы, которые привязаны к ptc-файлу, можно узнать через функции: Magic_GetStaticAtlas и Magic_GetStaticAtlasCount.

Чтобы узнать атлас для конкретного эмиттера необходимо загрузить этот эмиттер и вызвать для него Magic_CreateAtlasesForEmitters, а далее получить изменения через Magic_GetNextAtlasChange. Если такой атлас уже был построен, то Magic_GetNextAtlasChange сразу же вернет MAGIC_ERROR.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: Получение всех атласов для эмиттера

Сообщение xert » Пн апр 27, 2015 4:51 pm

Спасибо за оперативный ответ! Но, я имел ввиду получение id текстуры не на момент загрузки и формирвания данных а к примеру из кода

MAGIC_RENDERING rendering;
Magic_CreateFirstRenderedParticlesList(...., &rendering);
rendering.texture_id <-

Прим. - атласы заранее сгенерированы в готовые текстуры и сохранены на диске
xert
 
Сообщения: 2
Зарегистрирован: Вс апр 26, 2015 2:40 pm

Re: Получение всех атласов для эмиттера

Сообщение Odin_KG » Пн апр 27, 2015 6:23 pm

Спасибо за оперативный ответ!

Пожалуйста!

>Но, я имел ввиду получение id текстуры не на момент загрузки и формирвания данных а к примеру из кода
Я видимо не очень вопрос понимаю.

Вы хотите обойтись без Magic_GetNextAtlasChange что-ли?
Хм... ну, можно, конечно. Только как бы вы там не запутались с этой самодеятельностью. Загляните в структуру MAGIC_TEXTURE, возможно, там как раз то, что вам нужно. Поле file должно содержать имя текстурного атласа, если я правильно помню :-)
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm


Вернуться в Magic API

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron