Функция glMap2d

Функции glMap2d и glMap2f определяют двумерный оценщик.

Синтаксис

void WINAPI glMap2d(
         GLenum   target,
         GLdouble u1,
         GLdouble u2,
         GLint    ustride,
         GLint    uorder,
         GLdouble v1,
         GLdouble v2,
         GLint    vstride,
         GLint    vorder,
   const GLdouble *points
);

Параметры

target

Тип значений, создаваемых вычислителем. Принимаются следующие символьные константы.

Значение Значение
GL_MAP2_VERTEX_3
Каждая контрольная точка — это три значения с плавающей запятой , представляющие x, y и z. Внутренние команды glVertex3 создаются при оценке карты.
GL_MAP2_VERTEX_4
Каждая контрольная точка — это четыре значения с плавающей запятой , представляющие x, y, z и w. Внутренние команды glVertex4 создаются при оценке карты.
GL_MAP2_INDEX
Каждая контрольная точка — это одно значение с плавающей запятой, представляющее индекс цвета. Внутренние команды glIndex создаются при оценке карты. Однако текущий индекс не обновляется со значением этих команд glIndex .
GL_MAP2_COLOR_4
Каждая контрольная точка — это четыре значения с плавающей запятой, представляющие красный, зеленый, синий и альфа-канал. Внутренние команды glColor4 создаются при оценке карты. Однако текущий цвет не обновляется со значением этих команд glColor4 .
GL_MAP2_NORMAL
Каждая контрольная точка — это три значения с плавающей запятой, представляющие компоненты x, y и z нормального вектора. Внутренние команды glNormal создаются при оценке карты. Однако текущее нормальное значение этих команд glNormal не обновляется.
GL_MAP2_TEXTURE_COORD_1
Каждая контрольная точка — это одно значение с плавающей запятой, представляющее координату текстуры . Внутренние команды glTexCoord1 создаются при оценке карты. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .
GL_MAP2_TEXTURE_COORD_2
Каждая контрольная точка — это два значения с плавающей запятой, представляющие координаты текстуры s и t . Внутренние команды glTexCoord2 создаются при оценке карты. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .
GL_MAP2_TEXTURE_COORD_3
Каждая контрольная точка — это три значения с плавающей запятой, представляющие координаты текстуры s, t и r . Внутренние команды glTexCoord3 создаются при оценке сопоставления. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .
GL_MAP2_TEXTURE_COORD_4
Каждая контрольная точка — это четыре значения с плавающей запятой, представляющие координаты текстур s, t, r и q . Внутренние команды glTexCoord4 создаются при оценке карты. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .

u1

Линейное сопоставление u, представленное в glEvalCoord2, с u^, одной из двух переменных, вычисляемых уравнениями, заданными этой командой.

u2

Линейное сопоставление u, представленное в glEvalCoord2, с u^, одной из двух переменных, вычисляемых уравнениями, заданными этой командой.

ustride

Число значений float или double между началом контрольной точки Rij и началом контрольной точки R(i\ +1\ )\ j, где i и j — индексы контрольной точки u и v соответственно. Это позволяет внедрять точки управления в произвольные структуры данных. Единственное ограничение заключается в том, что значения для определенной контрольной точки должны занимать смежные расположения памяти.

uorder

Размер массива контрольных точек на оси U. Должно быть положительным.

Версия 1

Линейное сопоставление v, представленное в glEvalCoord2, с v^, одной из двух переменных, вычисляемых с помощью уравнений, заданных этой командой.

Версия 2

Линейное сопоставление v, представленное в glEvalCoord2, с v^, одной из двух переменных, вычисляемых с помощью уравнений, заданных этой командой.

vstride

Число значений float или double между началом контрольной точки Rij и началом контрольной точки Ri(j\ +1\ ), где i и j — индексы контрольной точки u и v соответственно. Это позволяет внедрять точки управления в произвольные структуры данных. Единственное ограничение заключается в том, что значения для определенной контрольной точки должны занимать смежные расположения памяти.

вихрь

Размер массива контрольных точек на оси V. Должно быть положительным.

точки

Указатель на массив контрольных точек.

Возвращаемое значение

Эта функция не возвращает значение.

Коды ошибок

Следующие коды ошибок могут быть получены функцией glGetError .

Имя Значение
GL_INVALID_ENUM
Target не является допустимым значением.
GL_INVALID_VALUE
u1 был равен u2, или v1 равен v2.
GL_INVALID_VALUE
Значение ustride или vstride меньше числа значений в контрольной точке.
GL_INVALID_VALUE
Значение uorder или vorder меньше единицы или GL_MAX_EVAL_ORDER.
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Комментарии

Вычислители предоставляют способ использования полиномиального или рационального полиномиального сопоставления для создания вершин, норм, координат текстуры и цветов. Значения, созданные оценщиком, отправляются на последующие этапы обработки OpenGL так же, как если бы они были представлены с помощью команд glVertex, glNormal, glTexCoord и glColor , за исключением того, что созданные значения не обновляют текущую норму, координаты текстуры или цвет.

Все полиномиальные или рациональные полиномиальные сплайны любой степени (до максимальной степени, поддерживаемой реализацией OpenGL) можно описать с помощью оценщиков. К ним относятся почти все поверхности, используемые в компьютерной графике, включая поверхности B-сплайна, поверхности NURBS, поверхности Безье и т. д.

Оценщики определяют поверхности на основе бивариатных полиномов Бернштейна. Определение p (u^,v^) как

Уравнение, показывающее определение p ().

где Rij — контрольная точка, () — i-йполином Бернштейна степени

n (uorder = n + 1)

Уравнение, показывающее полиномиал Бернштейна степени n.

and () — полином j-гоБернштейна степени m (vorder = m + 1)

Уравнение, показывающее полиномиал Бернштейна степени m.

Помните, что

Уравнения, показывающие эквивалентность 1.

Функция glMap2 используется для определения основы и указания типа создаваемых значений. После определения карту можно включить и отключить, вызвав glEnable и glDisable с именем карты, одним из девяти предопределенных значений целевого объекта, описанных выше. Когда glEvalCoord2 представляет значения u и v, бивариатные полиномы Бернштейна вычисляются с помощью u^ и v^, где

Уравнение, показывающее определение you^.

и

Уравнение, показывающее определение v^.

Целевой параметр является символьной константой, которая указывает, какие контрольные точки предоставляются в точках и какие выходные данные создаются при оценке карты.

Параметры ustride, uorder, vstride, vorder и points определяют адресацию массива для доступа к контрольным точкам. Параметр point — это расположение первой контрольной точки, которая занимает одно, два, три или четыре смежных расположения памяти в зависимости от того, какая карта определяется. В массиве есть контрольные точки uorder x vorder . Параметр ustride указывает, сколько расположений float или double пропущено для перехода указателя внутренней памяти из контрольной точки Rij в контрольную точку R(\ i+1\ )j. Параметр vstride указывает, сколько расположений float или double пропущено для перехода указателя внутренней памяти из контрольной точки Rij в контрольную точку Ri(j\ +1\ ).

Как и в случае со всеми командами OpenGL, которые принимают указатели на данные, содержимое точек было скопировано с помощью glMap2 перед возвратом. Изменения содержимого точек не оказывают влияния после вызова glMap2 .

Следующие функции извлекают сведения, связанные с glMap2:

glGet с аргументом GL_MAX_EVAL_ORDER

glGetMap

glIsEnabled с аргументом GL_MAP2_VERTEX_3

glIsEnabled с аргументом GL_MAP2_VERTEX_4

glIsEnabled с аргументом GL_MAP2_INDEX

glIsEnabled с аргументом GL_MAP2_COLOR_4

glIsEnabled с аргументом GL_MAP2_NORMAL

glIsEnabled с аргументом GL_MAP2_TEXTURE_COORD_1

glIsEnabled с аргументом GL_MAP2_TEXTURE_COORD_2

glIsEnabled с аргументом GL_MAP2_TEXTURE_COORD_3

glIsEnabled с аргументом GL_MAP2_TEXTURE_COORD_4

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Gl.h
Библиотека
Opengl32.lib
DLL
Opengl32.dll

См. также раздел

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

GlEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex