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 ();
вызывает немедленное выполнение ранее переданных серверу команд.