return ((color >> blueShift) « (8 - blueBits)) & blueMask;
}
intgetAlpha ( int color ) const
! {
f return ((color >> alphaShift) « (8 - alphaBits))
! & alphaMask;

f Здесь поля redMask, greenMask, blueMask и alphaMask являются битовыми масками для красной, зеленой, синей и ос-компонент пиксела.

Поля redBits, greenBits, blueBits и alphaBits содержат количество битов на каждую из компонент RGB А.

i Поля redShift, greenShift, blueShift и alphaShift содержат смещение в битах соответствующих компонент от начала пиксела.

Поля bitsPerPixel и bytesPerPixel содержат количество битов и байтов на 1 пиксел.

Метод completerromMasks осуществляет вычисление всех полей структуры по переданным маскам полей.

Метод rgbalolnt по заданным 8-битовым значениям компонент строит битовое представление пиксела в виде 32-битового беззнакового целого числа.

Методы getRed, getGreen, getBlue и getAlpha служат для доступа к значениям компонент по битовому представлению пиксела (в виде 32-)итового целового числа). При этом возвращаемые значения приводятся К 8-битовому представлению.

Используя эту структуру, легко построить класс, отвечающий за хранение и представление текстуры. Ниже приводится его описание.

class Texture : public Object {
protected :
PixelFormat format; void * data;
int width; int height ;
unsigned id; // id for use in OpenGL
// glBindTexture
int glFormat; // OpenGl format of texture
// (GL_ALPHA, GL_RGB, // GL_RGBA & etc
bool mipmap; // whether to create and use
// mipmaps
public :
Texture ( const char * theName, int theWidth,
int theHeight, const PixelFormat& theFormat );
-Texture ()
delete data;
virtual bool isOk () const.
return width > 0 ScSc height > 0 && data != NULL;
intgetWidth () const return width;
intgetHeight () const return height ;
const void * getData () const return data;

Основные классы для рендерера. Работа с ресурсами

bool isTransparent () const

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