Поделиться через


Функция glMap2f

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

Синтаксис

void WINAPI glMap2f(
         GLenum  target,
         GLfloat u1,
         GLfloat u2,
         GLint   ustride,
         GLint   uorder,
         GLfloat v1,
         GLfloat v2,
         GLint   vstride,
         GLint   vorder,
   const GLfloat *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

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

uorder

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

Версия 1

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

Версия 2

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

vstride

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

vorder

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

точки

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

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

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

Коды ошибок

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

Имя Значение
GL_INVALID_ENUM
Target не является допустимым значением.
GL_INVALID_VALUE
u1 равен u2, или v1 равен версии 2.
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.

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

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

Напомним, что

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

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

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

и

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

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

Параметры ustride, uorder, vstride, vorder и points определяют адресацию массива для доступа к контрольным точкам. Параметр points — это расположение первой контрольной точки, которая занимает одно, два, три или четыре смежных расположения памяти в зависимости от того, какая карта определяется. В массиве есть контрольные точки uorder x vorder . Параметр ustride указывает, сколько расположений с плавающей или двойной точкой пропускается для перехода внутреннего указателя памяти из контрольной точки R ij в контрольную точку R(\ i+1\ )j. Параметр vstride указывает, сколько расположений с плавающей или двойной точкой пропускается для перехода внутреннего указателя памяти из контрольной точки 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