Функция 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 .
Имя | Значение |
---|---|
|
Target не является допустимым значением. |
|
u1 был равен u2, или v1 равен v2. |
|
Значение ustride или vstride меньше числа значений в контрольной точке. |
|
Значение uorder или vorder меньше единицы или GL_MAX_EVAL_ORDER. |
|
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd. |
Вычислители предоставляют способ использования полиномиального или рационального полиномиального сопоставления для создания вершин, норм, координат текстуры и цветов. Значения, созданные оценщиком, отправляются на последующие этапы обработки OpenGL так же, как если бы они были представлены с помощью команд glVertex, glNormal, glTexCoord и glColor , за исключением того, что созданные значения не обновляют текущую норму, координаты текстуры или цвет.
Все полиномиальные или рациональные полиномиальные сплайны любой степени (до максимальной степени, поддерживаемой реализацией OpenGL) можно описать с помощью оценщиков. К ним относятся почти все поверхности, используемые в компьютерной графике, включая поверхности B-сплайна, поверхности NURBS, поверхности Безье и т. д.
Оценщики определяют поверхности на основе бивариатных полиномов Бернштейна. Определение p (u^,v^) как
где Rij — контрольная точка, () — i-йполином Бернштейна степени
n (uorder = n + 1)
and () — полином j-гоБернштейна степени m (vorder = m + 1)
Помните, что
Функция glMap2 используется для определения основы и указания типа создаваемых значений. После определения карту можно включить и отключить, вызвав glEnable и glDisable с именем карты, одним из девяти предопределенных значений целевого объекта, описанных выше. Когда glEvalCoord2 представляет значения u и v, бивариатные полиномы Бернштейна вычисляются с помощью u^ и 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
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 [только классические приложения] |
Заголовок |
|
Библиотека |
|
DLL |
|