5. Вызывается функция gl End( ).

Типы примитивов задаются константами GL_LINES, GL_P0INTS, GL_TRIANGLES и им подобными. При использовании константы GLTRIANGLES вершины группируются по три и каждая тройка задает отдельный треугольник. Таким образом, в листинге 22.3 приведен код, предназначенный для вывода двух треугольников.

Листинг 22.3

glBegin(GL_TRIANGLES);
glVertex4d(0.0. 0.0. 0.1. 1.0): glVertex4d(0.8. 0.5. 0.1. 1.0):

glVertex4d(0.2.0.8.0.1.1.0): //Этот треугольник нарисуется первым

glVertex4d(-l.0.-1.0. 1.0. 10.0): //Если не включен тест глубины. glVertex4d(7.0. 4.0. 2.0. 10.0): // то второй треугольник наложится glVertex4d(1.0. 7.0. 2.0. 10.0): //сверху, хотя он дальше от камеры glEndO: Будем считать, что вершинам треугольников присвоены номера, определяемые порядком вызова функции gl Vertex* ( ). Тогда оператор gl Vertex4d( 0.0,0.0,0.1,1.0) задает вершину 1 (первую вершину первого треугольника). Оператор glVertex4d (1.0,7.0,2.0,10.0) задает вершину 6 (третью вершину второго треугольника).

Порядок передачи вершин треугольника в конвейер не влияет на их экранные координаты, но определяет направление обхода вершин. Таким образом, изменение порядка может сделать лицевую грань тыльной и наоборот.

Поскольку OpenGL является межплатформенным языком, он использует свои названия типов данных. В реализации кода для конкретного языка нужно указать, какие типы среды разработки соответствуют типам данных библиотеки. В среде Visual С++ необходимые объявления помещены в файле Gl.h:

typedef unsigned int GLbitfield
typedef float GLfloat typedef double GLdouble

Библиотека позволяет использовать различные типы данных для задания координат точек, компонентов цвета и других числовых параметров. Она рассчитана на использование в разных языках, поэтому вместо принятого в С++ правила задания имен в ней каждая функция реализована в нескольких вариантах, различающихся последними символами имени. Цифра в имени задает количество параметров. Так, функции glVertex4d() передаются четыре параметра типа double, glVertex4f() - типа float, aglVertex4i () - типа int. Функция gl Col or4ub(GLubyte r.


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