Визуализация в научных исследованиях. Ечкина Е.Ю - 47 стр.

UptoLike

Рубрика: 

Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su
47
с соответствующим значением параметра array.
Для отображения содержимого массивов используется команда
void glArrayElement(GLint index)
которая передает OpenGL атрибуты вершины, используя элементы массива с номером
index. Это аналогично последовательному применению команд вида glColor..(…),
glNormal..(…), glVertex..(…) c соответствующими параметрами. Однако вместо нее
обычно вызывается команда
void glDrawArrays(GLenum mode, GLint first, GLsizei count)
рисующая count примитивов, определяемых параметром mode, используя элементы из
массивов с индексами от first до first+count-1. Это эквивалентно вызову команды
glArrayElement() с соответствующими индексами.
В случае если одна вершина входит в несколько примитивов, то вместо дублирования
ее координат в массиве удобно использовать ее индекс.
Для этого надо вызвать команду
void glDrawArrays(GLenum mode, GLsizei count, GLenum type, void *indices)
где indices– это массив номеров вершин, которые надо использовать для построения
примитивов, type определяет тип элементов этого массива: GL_UNSIGNED_BYTE,
GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, а count задает их количество.
Списки изображений.
Если нужно несколько раз обращаться к одной и той же группе команд, эти команды
можно объединить в так называемый список изображений (display list) и вызывать его
при необходимости. Для того, чтобы создать новый список изображений надо
поместить все команды, которые должны в него войти между командными скобками:
void glNewList(GLuint list, GLenum mode)
void glEndList()
Для различения списков используются целые положительные числа, задаваемые при
создании списка значением параметра list, а параметр mode определяет режим
обработки команд, входящих в список:
GL_COMPILE команды записываются в список без выполнения
GL_COMPILE_AND_EXECUTE команды сначала выполняются, а затем
записываются в список
После того, как список создан, его можно вызвать командой
void glCallList(GLuint list)
указав в параметре list идентификатор нужного списка. Чтобы вызвать сразу несколько
списков, можно воспользоваться командой
void glCallLists(GLsizei n, GLenum type, const GLvoid *lists)
вызывающей n списков с идентификаторами из массива lists, тип элементов которого
указывается в параметре type. Это могут быть типы GL_BYTE,
GL_UNSIGNED_BYTE, GL_SHORT, GL_INT, GL_UNSIGNED_INT некоторые
другие. Для удаления списков используется команда
void glDeleteLists(GLint list, GLsizei range)
которая удаляет списки с идентификаторами ID из диапазона list <=ID<= list+range-1.
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»


с соответствующим значением параметра array.
Для отображения содержимого массивов используется команда
void glArrayElement(GLint index)
которая передает OpenGL атрибуты вершины, используя элементы массива с номером
index. Это аналогично последовательному применению команд вида glColor..(…),
glNormal..(…), glVertex..(…) c соответствующими параметрами. Однако вместо нее
обычно вызывается команда
void glDrawArrays(GLenum mode, GLint first, GLsizei count)
рисующая count примитивов, определяемых параметром mode, используя элементы из
массивов с индексами от first до first+count-1. Это эквивалентно вызову команды
glArrayElement() с соответствующими индексами.
В случае если одна вершина входит в несколько примитивов, то вместо дублирования
ее координат в массиве удобно использовать ее индекс.
Для этого надо вызвать команду
void glDrawArrays(GLenum mode, GLsizei count, GLenum type, void *indices)
где indices– это массив номеров вершин, которые надо использовать для построения
примитивов, type определяет тип элементов этого массива: GL_UNSIGNED_BYTE,
GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, а count задает их количество.
Списки изображений.
Если нужно несколько раз обращаться к одной и той же группе команд, эти команды
можно объединить в так называемый список изображений (display list) и вызывать его
при необходимости. Для того, чтобы создать новый список изображений надо
поместить все команды, которые должны в него войти между командными скобками:
       void glNewList(GLuint list, GLenum mode)
       void glEndList()
Для различения списков используются целые положительные числа, задаваемые при
создании списка значением параметра list, а параметр mode определяет режим
обработки команд, входящих в список:
       GL_COMPILE команды записываются в список без выполнения
       GL_COMPILE_AND_EXECUTE команды сначала выполняются, а затем
        записываются в список
После того, как список создан, его можно вызвать командой
void glCallList(GLuint list)
указав в параметре list идентификатор нужного списка. Чтобы вызвать сразу несколько
списков, можно воспользоваться командой
void glCallLists(GLsizei n, GLenum type, const GLvoid *lists)
вызывающей n списков с идентификаторами из массива lists, тип элементов которого
указывается    в   параметре    type.   Это    могут быть     типы    GL_BYTE,
GL_UNSIGNED_BYTE, GL_SHORT, GL_INT, GL_UNSIGNED_INT >и некоторые
другие. Для удаления списков используется команда
void glDeleteLists(GLint list, GLsizei range)
которая удаляет списки с идентификаторами ID из диапазона list <=ID<= list+range-1.
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su            47