версии; например конструкции g!Color3f ( 1.0, 1.0, 1.0); и
GLfloat color П = {1.0, 1.0, 1.0}; glColor3fv (color); эквивалентны.
OpenGL можно рассматривать как машину, находящуюся в одном из нескольких состояний. Внутри OpenGL содержится целый ряд переменных, например текущий цвет. Если установить текущий цвет, то все последующие объекты будут этого цвета до тех пор, пока текущий цвет не будет изменен. По умолчанию каждая системная переменная имеет свое значение и в любой момент значение каждой из этих переменных можно узнать. Обычно для этого используется одна из следующих функций: glGetBooleanv (), glGetDoublev (), glGetFloatv () и glGetîntergerv (). Для определения значения некоторых переменных служат специальные функции.
12. Работа с библиотекой OpenGL
OpenGL предоставляет пользователю достаточно мощный, но низкоуровневый набор команд, и все операции высокого уровня должны выполняться в терминах этих команд. Обычно для облегчения работы вместе с OpenGL поставляется библиотека дополнительных команд, каждая из которых начинается с префикса glu. В данной главе будет рассмотрена часть этих команд.
12.1. Рисование геометрических объектов
OpenGL содержит внутри себя несколько различных буферов. Среди них фреймбуфер (куда строится изображение), z-буфер, служащий для удаления невидимых поверхностей, буфер трафарета и аккумулирующий буфер.
Для очистки окна (экрана, внутренних буферов) служит процедура
void glClear ( GLbitfield mask ); очищающая буферы, заданные переменной mask. Параметр mask является комбинацией следующих констант:
GL_COLOR_BUFFER_BIT - очистить буфер изображения (фреймбуфер), GL_DEPTH_BUFFER_BIT - очистить z-буфер, GL_ACCUM_BUFFER_BIT - очистить аккумулирующий буфер, GL_STENCIL_BUFFER_BIT - очистить буфер трафарета.
Цвет, которым очищается буфер изображения, задается процедурой
void giClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
Значение, записываемое в z-буфер при очистке, - процедурой void glClearDepth ( GLclampd depth ); значение, записываемое в буфер трафарета, - процедурой void gIClearStencil ( GLint s );