6.3 Структуры данных для источников света
В реализуемом программном продукте структура данных для источников света описывается на языке C++ следующим образом:
struct
{
float pos[4];
float dir[3];
float color[4];
int lightmodeltype;
bool shining;
} settings, где
pos – массив координат источника света, dir – массив координат напрвляющего вектора, color – массив, содержащий цвет излучаемого света в формате RGBA, lightmodeltype – тип источника света (точечный, удалённый, цилиндрический), shining – признак включенности источника света.
Выше приведена структура данных заключена в класс, написанный для облегчения работы с источниками света, имеющий следующий протокол
class LIGHT
{
struct{
float pos[4];
float dir[3];
float color[4];
int lightmodeltype;
GLboolean shining;
} settings;
int index;
public:
void Draw();
GLenum GetIndex();
bool Shining();
LIGHT& TurnOn();
LIGHT& TurnOff();
LIGHT(int gllight):index(gllight);
~LIGHT(){glDisable(index);}
void SetLightModelType(int lmt);
void Dispose(float PosX, float PosY, float PosZ, float PosT);
LIGHT& Direct(float DirX, float DirY, float DirZ);
LIGHT& SetColor(float r, float g, float b);
void GetPosition(float *x, float *y, float *z);
void GetDirection(float *x, float *y, float *z);
void GetColor(float *r, float *g, float *b);
};