glBegin(GL_POINTS):
glVertex2i(100.50):
g1Vertex2i(100.130):
glVertex2i(150.130): glEndO:

GL_P0INTS является встроенной константой OpenGL. Для рисования других примитивов следует заменить GL_P0INTS на GL_LINES, GL_P0LIG0N и т. д. Каждая из этих констант будет введена в свое время.

Как мы увидим позже, эти команды посылают информацию о вершине в «графический конвейер» («graphies pipeline»), в котором она проходит ряд преобразований. Для наших целей достаточно считать, что эта информация направляется более или менее прямо в систему координат экранного окна.

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

,2. Рисование основных графических примитивов

2,2. Рисование основных графических примитивов Префикс «gl» указывает, что функция взята из библиотеки OpenGL (в отличие от префикса «gl ut» у функций из GL Utility Toolkit). Затем идет основная часть команды, за ней следует число аргументов, пересылаемых в функцию (чаще всего 3 и 4), и, наконец, тип аргумента (i для целых величин, f или d для величин с плавающей точкой и т. д., так как у нас всего лишь краткое описание). Если мы захотим сослаться на основную команду, не уточняя специфику ее аргументов, то будем использовать звездочку: gl Vertex*( ).

Для создания той же картинки из трех точек, изображенной на рис 2.3, вы могли бы, например, передать функции вещественные величины вместо целых, используя для этого следующие команды:

glBegi n(GL_P01NTS):
glVertex2d(100.0.50.0):
glVertex2d(100.0.130.0):
glVertex2d(150.0.130.0): glEndO:

Типы данных OpenGL

OpenGL работает с определенными типами данных. Например, функции вроде glVertex2i() требуют целых величин определенного размера (32 бита). Хорошо известно, что в некоторых системах тип данных int из С или С++ является 16-битным, в то время как в других системах он 32-битный. Не существует также стандартного размера для типов float и double. Для гарантии того, что OpenGL-функции получают нужные типы данных, полезно использовать для типов OpenGL встроенные имена, такие как GLint или GLfloat. Список типов OpenGL приведен в табл. 2.1. С некоторыми из этих типов мы столкнемся лишь позднее.


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