ВУЗ:
Составители:
Рубрика:
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su
46
Параметр mode определяет, как будут отображаться многоугольники, а параметр face
устанавливает тип многоугольников, к которым будет применяться эта команда и
может принимать следующие значения:
GL_FRONT для лицевых граней
GL_BACK для обратных граней
GL_FRONT_AND_BACK для всех граней
Параметр mode может быть равен:
GL_POINT при таком режиме будут отображаться только вершины
многоугольников.
GL_LINE при таком режиме многоугольник будет представляться набором
отрезков.
GL_FILL при таком режиме многоугольники будут закрашиваться текущим
цветом с учетом освещения и этот режим установлен по умолчанию.
Кроме того, можно указывать, какой тип граней отображать на экране. Для этого
сначала надо установить соответствующий режим вызовом команды
glEnable(GL_CULL_FACE), а затем выбрать тип отображаемых граней с помощью
команды void glСullFace(GLenum mode)
Вызов с параметром GL_FRONT приводит к удалению из изображения всех лицевых
граней, а с параметром GL_BACK- обратных (установка по умолчанию).
Важно отметить, что для корректного построения перечисленных примитивов
необходимо удалять невидимые линии и поверхности, для чего надо включить
соответствующий режим вызовом команды glEnable(GL_DEPTH_TEST).
Массивы вершин
Если вершин много, то чтобы не вызывать для каждой команду glVertex..(), удобно
объединять вершины в массивы, используя команду
void glVertexPointer( GLint size, GLenum type, GLsizei stride, void *ptr )
которая определяет способ хранения и координаты вершин. При этом size определяет
число координат вершины (может быть равен 2, 3, 4), type определяет тип данных
(может быть равен GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE). Иногда удобно
хранить в одном массиве другие атрибуты вершины, и тогда параметр stride задает
смещение от координат одной вершины до координат следующей; если stride равен
нулю, это значит, что координаты расположены последовательно. В параметре ptr
указывается адрес, где находятся данные.
Аналогично можно определить массив нормалей, цветов и некоторых других
атрибутов вершины, используя команды
void NormalPointer(GLenum type, GLsizei stride, void*pointer)
void ColorPointer(GLintsize, GLenum type, GLsizei stride, void *pointer)
Для того, чтобы эти массивы можно было использовать в дальнейшем, надо вызвать
команду
void glEnableClientState(GLenum array)
с параметрами GL_VERTEX_ARRAY, GL_NORMAL_ARRAY, GL_COLOR_ARRAY
соответственно. После окончания работы с массивом желательно вызвать команду
void glDisableClientState(GLenum array)
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях» Параметр mode определяет, как будут отображаться многоугольники, а параметр face устанавливает тип многоугольников, к которым будет применяться эта команда и может принимать следующие значения: GL_FRONT для лицевых граней GL_BACK для обратных граней GL_FRONT_AND_BACK для всех граней Параметр mode может быть равен: GL_POINT при таком режиме будут отображаться только вершины многоугольников. GL_LINE при таком режиме многоугольник будет представляться набором отрезков. GL_FILL при таком режиме многоугольники будут закрашиваться текущим цветом с учетом освещения и этот режим установлен по умолчанию. Кроме того, можно указывать, какой тип граней отображать на экране. Для этого сначала надо установить соответствующий режим вызовом команды glEnable(GL_CULL_FACE), а затем выбрать тип отображаемых граней с помощью команды void glСullFace(GLenum mode) Вызов с параметром GL_FRONT приводит к удалению из изображения всех лицевых граней, а с параметром GL_BACK- обратных (установка по умолчанию). Важно отметить, что для корректного построения перечисленных примитивов необходимо удалять невидимые линии и поверхности, для чего надо включить соответствующий режим вызовом команды glEnable(GL_DEPTH_TEST). Массивы вершин Если вершин много, то чтобы не вызывать для каждой команду glVertex..(), удобно объединять вершины в массивы, используя команду void glVertexPointer( GLint size, GLenum type, GLsizei stride, void *ptr ) которая определяет способ хранения и координаты вершин. При этом size определяет число координат вершины (может быть равен 2, 3, 4), type определяет тип данных (может быть равен GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE). Иногда удобно хранить в одном массиве другие атрибуты вершины, и тогда параметр stride задает смещение от координат одной вершины до координат следующей; если stride равен нулю, это значит, что координаты расположены последовательно. В параметре ptr указывается адрес, где находятся данные. Аналогично можно определить массив нормалей, цветов и некоторых других атрибутов вершины, используя команды void NormalPointer(GLenum type, GLsizei stride, void*pointer) void ColorPointer(GLintsize, GLenum type, GLsizei stride, void *pointer) Для того, чтобы эти массивы можно было использовать в дальнейшем, надо вызвать команду void glEnableClientState(GLenum array) с параметрами GL_VERTEX_ARRAY, GL_NORMAL_ARRAY, GL_COLOR_ARRAY соответственно. После окончания работы с массивом желательно вызвать команду void glDisableClientState(GLenum array) Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su 46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »