Инициализация библиотек и вывод примитивов
GLubyte g. GLubyte b, GLubyte alpha) устанавливает текущий цвет вершины и получает четыре беззнаковых байта, определяющих три компонента цвета и коэффициент непрозрачности.
Вместо нескольких параметров функция может получать один указатель на массив параметров, но тогда ее имя заканчивается буквой v, как у функции glVertex3sv(const GLshort *v). В результате заголовочный файл Gl.h содержит прототипы 24 вариантов функции Vertex*() и еще больше вариантов функции задания текущего цвета gl Col or*(). Когда в тексте речь будет идти о любом из возможных вариантов функции, то будет указываться постфикс *.
На экране отображаются только те части графических примитивов, которые попадают в канонический объем, реализованный в виде куба трехмерного пространства с длиной ребра 2, которое охватывает отрезок от -1 до 1 по каждой координате. Обратите внимание на то, что однородная координата Ve у последней вершины (вершины Vg) равна 7. Но вершина будет видна на экране, так как ее декартова координата получается после деления на Ve w, которое равно десяти. Поэтому иногда пишут, что на экране отображаются вершины, попадающие в куб однородных координат со стороной от -Wro + W. Таким образом, если мы хотим отображать на экране модели объектов реального мира, задавая их размеры в привычных единицах (например, в миллиметрах), необходимо или выбрать значение w, обеспечивающее попадание вершин примитивов в канонический объем, или масштабировать координаты X, У, Z перед началом процесса рисования.
Точки канонического объема проецируются в квадрат размером 2x2. При выводе на поверхность рисования он отображается в прямоугольник размером Wx Я пикселов, который называют областью просмотра или областью вывода. Канонический квадрат растягивается и смещается с использованием коэффициентов, передаваемых функции задания области просмотра gl Vi ewPort (i nt x. i nt y. int W. int H).
Перед рисованием область просмотра можно залить цветом фона. Цвет задается при помощи функции glClearColor(0.9f. 0.9f. 0.9f, O.Of). В этой функции компоненты цвета изменяются в диапазоне от 0 (минимальная яркость) до 1.0 (максимальная яркость). Собственно очистка экрана выполняется функцией д1С1еаг(). Эта же функция может заносить начальные значения в Z-буфер, поэтому надо при помощи флага GL_COLOR_BUFFER_BIT указать, что заполняется только буфер изображения: