return format.bitsPerPixel == 8 | | format.bitsPerPixel == 32;
int getNumComponents () const return format.bytesPerPixel;
bool isMipmapped () const return mipmap;
void setMipmap ( bool flag ) mipmap = flag;
unsigned& getld () return id;
int getOpenGLFormat () const return glFormat;
void setOpenGLFormat ( int fmt ) glFormat = fmt;
void upload ( );
void unload ();
int getOpenGLType () const;
// write 32-bit pixel buffer to Texture line void writeLine ( int y, long * buf,
long * palette = NULL ) ; void readLine ( int y, long * buf ) ;
static MetaClass classlnstance ;

А. В. Боресков: Графика трехмерной компьютерной игры

Поле format содержит описание формата, в котором хранятся пикселы в массиве data.

Поля width и height содержат размер текстуры в пикселах.

Поля id и glFormat содержат идентификатор и тип текстуры в OpenGL.

Поле uiipmap отвечает за использование пирамидального фильтрования при загрузке текстуры в графический ускоритель. Сама загрузка осуществляется при помощи метода upload.

Для загрузки текстуры из файла мы будем пользоваться методом wriie-Line. Данный метод получает на вход номер строки и массив значений пикселов для этой строки в виде 32-битового RGBA-значения и должен перевести эти значения во внутренний формат текстуры в массиве data. Использование записи пикселов на уровне строки (а не отдельных пикселов) объясняется исключительно соображениями эффективности.

Метод readLine переводит строку пикселов из внутреннего представления в 32-битовый RGBA-формат.

Одними из наиболее важных методов этого класса являются методы upload и unload, соответственно регистрирующие и дерегистрирующие данную текстуру в OpenGL.

Класс ResourceManager

Поскольку в нашем проекте понадобится работа с различными типами ресурсов (текстуры, модели, описание сцены), то удобно сразу реализовать некоторый централизованный механизм для унифицированной работы с различными типами ресурсов.

При этом следует иметь в виду как то, что сам файл с ресурсом может храниться различным образом (в виде обычного файла, внутри специального файла ресурсов, например рак, или же внутри архива, например zip), так и то, что существуют различные форматы файлов с ресурсами (например, текстура может храниться в форматах рсх, bmp, gif,jpeg, png, tga и многих других). Поэтому было бы удобно отделить способ доступа к файлу с ресурсом от способа его декодирования (процесса построения объекта по загруженному файлу).


⇐ Предыдущая| |Следующая ⇒