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


Функция glColorTableEXT

Функция glColorTableEXT задает формат и размер палитры для целевых текстур с палитрой.

Синтаксис

void WINAPI glColorTableEXT(
         GLenum  target,
         GLenum  internalFormat,
         GLsizei width,
         GLenum  format,
         GLenum  type,
   const GLvoid  *data
);

Параметры

target

Целевая текстура, в которую необходимо изменить палитру. Должен быть TEXTURE_1D, TEXTURE_2D, PROXY_TEXTURE_1D или PROXY_TEXTURE_2D.

InternalFormat

Внутренний формат и разрешение палитры. Этот параметр может принимать одно из следующих символьных значений.

Константа Базовый формат Биты R G Биты Биты B Биты
GL_R3_G3_B2 GL_RGB 3 3 2
GL_RGB4 GL_RGB 4 4 4
GL_RGB5 GL_RGB 5 5 5
GL_RGB8 GL_RGB 8 8 8
GL_RGB10 GL_RGB 10 10 10
GL_RGB12 GL_RGB 12 12 12
GL_RGB16 GL_RGB 16 16 16
GL_RGBA2 GL_RGBA 2 2 2 2
GL_RGBA4 GL_RGBA 4 4 4 4
GL_RGB5_A1 GL_RGBA 5 5 5 1
GL_RGBA8 GL_RGBA 8 8 8 8
GL_RG10_A2 GL_RGBA 10 10 10 2
GL_RGB12 GL_RGBA 12 12 12 12
GL_RGBA16 GL_RGBA 16 16 16 16

width

Размер палитры. Для некоторого целого числа n должно быть 2n = 1.

format

Формат пиксельных данных. Принимаются следующие символьные константы.

Значение Значение
GL_RGBA
Каждый пиксель представляет собой группу из четырех компонентов в этом порядке: красный, зеленый, синий, альфа. Формат RGBA определяется следующим образом:
  1. Функция glColorTableEXT преобразует значения с плавающей запятой непосредственно во внутренний формат с неопределенной точностью. Целочисленные значения со знаком сопоставляются линейно с внутренним форматом таким образом, что наиболее положительное представляющее целочисленное значение сопоставляется с 1,0, а наиболее отрицательное целочисленное значение — с -1,0. Целочисленные данные без знака сопоставляются аналогичным образом: наибольшее целочисленное значение сопоставляется с 1,0, а ноль — с 0,0.
  2. Функция glColorTableEXT умножает полученные значения цвета на GL_c_SCALE и добавляет их в GL_c_BIAS, где c — RED, GREEN, BLUE и ALPHA для соответствующих компонентов цвета. Результаты зажаты в диапазоне [0,1].
  3. Если GL_MAP_COLOR имеет значение TRUE, glColorTableEXT масштабирует каждый компонент цвета в соответствии с размером таблицы подстановки GL_PIXEL_MAP_c_TO_c, а затем заменяет компонент значением, на которое он ссылается в этой таблице; c имеет значение R, G, B или A соответственно.
  4. Функция glColorTableEXT преобразует результирующий цвет RGBA в фрагменты, прикрепляя текущую позицию растра z-координаты и координаты текстуры к каждому пикселю, а затем присваивая координаты окна x и yn-муфрагменту таким образом, чтоx? = xr + nmod width
    Y? = yr +n / width
    где (xr , yr ) — текущая позиция растра.
  5. Эти пиксельные фрагменты обрабатываются так же, как фрагменты, созданные при растеризации точек, линий или многоугольников. Функция glColorTableEXT применяет сопоставление текстур, туман и все операции с фрагментами перед записью фрагментов в framebuffer.
GL_RED
Каждый пиксель является одним красным компонентом.
Функция glColorTableEXT преобразует этот компонент во внутренний формат так же, как красный компонент пикселя RGBA, а затем преобразует его в пиксель RGBA с зеленым и синим цветом, равным 0,0, а альфа - равным 1,0. После этого преобразования пиксель обрабатывается так же, как если бы он был считан как пиксель RGBA.
GL_GREEN
Каждый пиксель является одним зеленым компонентом.
Функция glColorTableEXT преобразует этот компонент во внутренний формат так же, как зеленый компонент пикселя RGBA, а затем преобразует его в пиксель RGBA с красным и синим цветом, равным 0,0, а альфа -значение 1,0. После этого преобразования пиксель обрабатывается так же, как если бы он был считан как пиксель RGBA.
GL_BLUE
Каждый пиксель является одним синим компонентом.
Функция glColorTableEXT преобразует этот компонент во внутренний формат так же, как синий компонент пикселя RGBA, а затем преобразует его в пиксель RGBA с красным и зеленым параметрами 0,0, а альфа -значение 1.0. После этого преобразования пиксель обрабатывается так же, как если бы он был считан как пиксель RGBA.
GL_ALPHA
Каждый пиксель является одним альфа-компонентом.
Функция glColorTableEXT преобразует этот компонент во внутренний формат так же, как альфа-компонент пикселя RGBA, а затем преобразует его в пиксель RGBA с красным, зеленым и синим значением 0,0. После этого преобразования пиксель обрабатывается так же, как если бы он был считан как пиксель RGBA.
GL_RGB
Каждый пиксель представляет собой группу из трех компонентов в этом порядке: красный, зеленый, синий.
Функция glColorTableEXT преобразует каждый компонент во внутренний формат так же, как красный, зеленый и синий компоненты пикселя RGBA. Три цвета преобразуется в пиксель RGBA с альфа-значением 1,0. После этого преобразования пиксель обрабатывается так же, как если бы он был считан как пиксель RGBA.
GL_BGR_EXT
Каждый пиксель представляет собой группу из трех компонентов в этом порядке: синий, зеленый, красный.
GL_BGR_EXT предоставляет формат, соответствующий макету памяти для независимых от устройств точечных изображений (DIB) Windows. Таким образом, приложения могут использовать одни и те же данные с вызовами функций Windows и пиксельных функций OpenGL.
GL_BGRA_EXT
Каждый пиксель представляет собой группу из четырех компонентов в таком порядке: синий, зеленый, красный, альфа.
GL_BGRA_EXT предоставляет формат, соответствующий макету памяти независимых от устройств windows растровых изображений (DIB). Таким образом, приложения могут использовать одни и те же данные с вызовами функций Windows и пиксельных функций OpenGL.

type

Тип данных для данных. Принимаются следующие символьные константы: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT и GL_FLOAT.

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

Значение Значение
GL_UNSIGNED_BYTE
8-разрядное целое число без знака
GL_BYTE
8-разрядное целое число со знаком
GL_UNSIGNED_SHORT
16-разрядное целое число без знака
GL_SHORT
16-разрядное целое число со знаком
GL_UNSIGNED_INT
32-разрядное целое число без знака
GL_INT
32-разрядное целое число
GL_FLOAT
Число одинарной точности с плавающей запятой

data

Указатель на данные текстуры в палитре. Данные обрабатываются как отдельные пиксели записи одноуровневой текстуры для элемента палитры.

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

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

Коды ошибок

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

Имя Значение
GL_INVALID_VALUE
width — недопустимое целое число.
GL_INVALID_ENUM
Target, internalFormat, format или type не были принятыми значениями.
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Комментарии

Текстуры в палитре определяются с помощью палитры цветов и набора данных изображения, который состоит из индексов к цветовым записям палитры (таблица цветов).

Функция glColorTableEXT указывает палитру текстур целевой текстуры. Он принимает данные из памяти и преобразует их так, как если бы каждая запись палитры представляет собой один пиксель объемной текстуры. Функция glColorTableEXT распаковывает и преобразует данные и преобразует их во внутренний формат, максимально соответствующий заданному формату .

Если ширина палитры превышает диапазон цветовых индексов в данных текстуры, некоторые записи палитры не используются. Если ширина палитры меньше диапазона цветовых индексов в данных текстуры, наиболее значительные биты данных текстуры игнорируются и при доступе к палитре используется только соответствующее количество битов в индексе. При указании целевого объекта прокси-сервера с помощью PROXY_TEXTURE_1D или PROXY_TEXTURE_2D размер палитры текстуры прокси-сервера изменяется, а ее параметры задаются, но данные не передаются или к ней не обращаются.

Если целевой параметр GL_PROXY_TEXTURE_1D или GL_PROXY_TEXTURE_2D, а реализация не поддерживает значения , указанные для формата или ширины, glColorTableEXT может не создать запрошенную таблицу цветов. В этом случае таблица цветов пуста, а все полученные параметры будут равны нулю. Вы можете определить, поддерживает ли OpenGL определенный формат и размер таблицы цветов, вызвав glColorTableEXT с целевым прокси-сервером, а затем вызвав glGetColorTableParameterivEXT или glGetColorTableParameterfvEXT , чтобы определить, соответствует ли параметр ширины, заданному glColorTableEXT. Если полученная ширина равна нулю, запрос таблицы цветов с помощью glColorTable завершился ошибкой . Если полученная ширина не равна нулю, можно вызвать glColorTable с реальным целевым объектом с TEXTURE_1D или TEXTURE_2D, чтобы задать таблицу цветов.

Примечание

Функция glColorTableEXT — это функция расширения, которая не является частью стандартной библиотеки OpenGL, но является частью расширения GL_EXT_paletted_texture. Чтобы проверка, поддерживает ли ваша реализация OpenGL glColorTableEXT, вызовите glGetString(GL_EXTENSIONS). Если возвращается GL_EXT_paletted_texture, поддерживается glColorTableEXT . Чтобы получить адрес функции расширения, вызовите wglGetProcAddress.

Чтобы получить фактические данные таблицы цветов, заданные функцией glColorTableEXT , вызовите glGetColorTableEXT. Чтобы получить параметры, такие как ширина и формат, таблицы цветов, указанной функцией glColorTableEXT , вызовите функцию glGetColorTableParameterivEXT или glGetColorTableParameterfvEXT .

Требования

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

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

glBegin

glColorSubTableEXT

glEnd

glGetColorTableEXT

glGetColorTableParameterfvEXT

glGetColorTableParameterivEXT

wglGetProcAddress