void freeObject ( const Strings theName ) ,-
void upload ( ) ,-
void setRgbFormat ( const PixelFormatS format ) {
defFormats [0] = format;
}
void setRgbaFormat ( const PixelFormatS format ) {
defFormats [1] = format;
}
void setMonoFormat ( const PixelFormatS format ) {
defFormats [2] = format;
}
const PixelFormatS getRgbFormat () const {
return defFormats [0] ,-
}
Основные классы для рендерера. Работа с ресурсами
const PixelFormatS getRgbaFormat () const (
return defFormats [1];
}
const PixelFormatS getMonoFormat () const {
return defFormats [2];
}
static MetaClass classlnstance;
В массиве sources содержится список зарегистрированных поставщиков ресурсов, и когда поступает запрос на ресурс, то ResourceManager перебирает всех поставщиков ресурсов для нахождение запрашиваемого файла.
о».
Data * ResourceManager : : getResource ( const Strings theName ) {
Data * data;
for ( Array :: Iterator it = sources.getlterator (); lit.end (); ++it )
{
ResourceSource * source = (ResourceSource *) it.value ();
if ( ( data = source -> getFile ( theName ) ) != NULL ) return data;
}
(*sysLog) « "Cannot locate " << theName « logEndl; return NULL;
}
При декодировании ресурсов используется эта же схема: имеется список зарегистрированных декодеров decoders и, после того как файл с ресурсом был прочитан, им всем по очереди передается запрос на декодирование файла.
Метод checkExtension служит для ускорения нахождения нужного декодера. Обычно в расширении файла с ресурсом уже содержится информация о типе необходимого декодера (например, файлу flare.tga соответствует тип tga и он должен декодироваться при помощи объекта класса TgaDecoder); поэтому перед передачей всем декодерам запроса на декодирование А. В- Боресков. Графика трехмерной компьютерной игры
им предлагается проверить имя ресурса на соответствие типу ресурса, и если находится декодер, идентифицирующий ресурс как свой, то он получает приоритетное право на его декодирование. В случае если такая схема не срабатывает, то по очереди перебирваются все объекты-декодеры.