Система трехмерного графического моделирования на основе библиотеки OpenGL. Параметрическая модель сложного трехмерного объекта
38

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);

};