OpenGL содержит внутри себя несколько различных буферов. Среди них фрейм-буфер (куда производится построение изображения), г-буфер, служащий для удаления невидимых поверхностей, буфер трафарета и аккумулирующий буфер (рис. 4.1)

Рис. 4.1

Для очистки окна (экрана, внутренних буферов) служит процедура void glclear ( GLbitfield mask ); очищающая буферы, заданные переменной mask. Параметр mask является комбинацией следующих констант:

GL_COLOR_BUFFER_BIT - очистить буфер изображения (фрейм-буфер); GLJDEPTHJBUFFERJBIT - очистить г-буфер; GL_ACCUM_BUFFER_BIT - очистить аккумулирующий буфер; GL_STENCBL_BUFFER_BIT- очистить буфер трафарета.

При этом цвет, которым очищается буфер изображения, задается процедурой

void glClearColor ( GLclampf read, GLclampf green,
GLclampf blue, GLclampf alpha );

Значение, записываемое в г-буфер при очистке, задается процедурой void glClearDepth ( GLclampd depth );

Основы библиотеки OpenGL

Значение, записываемое в буфер трафарета, задается процедурой

void glClearStencil ( GLint s );

Цвет, записываемый в аккумулирующий буфер, задается процедурой

void glClearAccum ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );

При этом сама команда glClear очищает одновременно все заданные буферы, заполняя их соответствующими значениями. Для задания цвета объекта служит процедура

void glColor3{b si f d ub us ui}(TYPE r,TYPE g,TYPE b >; void glColor4{b s i f d ub us ui}(TYPE r,TYPE g,TYPE b,
TYPE a );
void glColor3{b si f d ub us ui}v(const TYPE * v ); void glColor4{b si f d ub us ui}v(const TYPE * v ) ;

Если а-значение не задано, то оно автоматически кладется равным единице. Версии процедуры glColor*, где параметры являются переменными с плавающей точкой, автоматически обрезают переданные значения в отрезок [0, 1]. Значения остальных типов приводятся (масштабируются) в этот отрезок для беззнаковых типов (при этом наибольшему возможному значению соответствует значение, равное единице) и в отрезок [-1,1] для типов со знаком.

Процедура

void glFlush ();

вызывает немедленное выполнение ранее переданных серверу команд.


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