Прочитать на английском

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


Функция glMap1f

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

Синтаксис

void WINAPI glMap1f(
         GLenum  target,
         GLfloat u1,
         GLfloat u2,
         GLint   stride,
         GLint   order,
   const GLfloat *points
);

Параметры

target

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

Значение Значение
GL_MAP1_VERTEX_3
Каждая контрольная точка — это три значения с плавающей запятой , представляющие x, y и z. Внутренние команды glVertex3 создаются при оценке карты.
GL_MAP1_VERTEX_4
Каждая контрольная точка — это четыре значения с плавающей запятой , представляющие x, y, z и w. Внутренние команды glVertex4 создаются при оценке карты.
GL_MAP1_INDEX
Каждая контрольная точка — это одно значение с плавающей запятой, представляющее индекс цвета. Внутренние команды glIndex создаются при оценке карты. Однако текущий индекс не обновляется со значением этих команд glIndex .
GL_MAP1_COLOR_4
Каждая контрольная точка — это четыре значения с плавающей запятой, представляющие красный, зеленый, синий и альфа-канал. Внутренние команды glColor4 создаются при оценке карты. Однако текущий цвет не обновляется со значением этих команд glColor4 .
GL_MAP1_NORMAL
Каждая контрольная точка — это три значения с плавающей запятой, представляющие компоненты x, y и z нормального вектора. Внутренние команды glNormal создаются при оценке карты. Однако текущая норма не обновляется со значением этих команд glNormal .
GL_MAP1_TEXTURE_COORD_1
Каждая контрольная точка — это одно значение с плавающей запятой, представляющее координату текстуры . Внутренние команды glTexCoord1 создаются при оценке карты. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .
GL_MAP1_TEXTURE_COORD_2
Каждая контрольная точка — это два значения с плавающей запятой, представляющие координаты текстуры s и t . Внутренние команды glTexCoord2 создаются при оценке карты. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .
GL_MAP1_TEXTURE_COORD_3
Каждая контрольная точка — это три значения с плавающей запятой, представляющие координаты текстуры s, t и r . Внутренние команды glTexCoord3 создаются при оценке сопоставления. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .
GL_MAP1_TEXTURE_COORD_4
Каждая контрольная точка — это четыре значения с плавающей запятой, представляющие координаты текстур s, t, r и q . Внутренние команды glTexCoord4 создаются при оценке карты. Однако текущие координаты текстуры не обновляются со значением этих команд glTexCoord .

u1

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

u2

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

Шаг

Число чисел с плавающей точкой или удваивается между началом одной контрольной точки и началом следующей в структуре данных, на которые ссылается ссылка в точках. Это позволяет внедрять точки управления в произвольные структуры данных. Единственное ограничение заключается в том, что значения для определенной контрольной точки должны занимать смежные расположения памяти.

order

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

точки

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

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

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

Коды ошибок

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

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

Комментарии

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

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

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

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

где Ri — контрольная точка, а () — это i полином Бернштейна степени n (порядок =n + 1):

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

Помните, что

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

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

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

Параметры шага, порядка и точек определяют адресацию массива для доступа к контрольным точкам. Параметр point — это расположение первой контрольной точки, которая занимает одно, два, три или четыре смежных расположения памяти в зависимости от того, какая карта определяется. Параметр order — это количество контрольных точек в массиве. Параметр stride указывает, сколько расположений с плавающей или двойной для перехода указателя внутренней памяти на следующую контрольную точку.

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

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

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

glGetMap

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

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

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

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

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

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

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

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

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

Требования

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

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

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

GlEvalPoint

glMap2

glMapGrid

glNormal

glTexCoord

glVertex