Функция glPixelStorei

Задает режимы хранения пикселей.

Синтаксис

void WINAPI glPixelStorei(
   GLenum pname,
   GLint  param
);

Параметры

pname

Символическое имя устанавливаемого параметра. Шесть параметров хранилища влияют на то, как пиксельные данные возвращаются в память клиента, поэтому они важны только для команд glReadPixels . Они следующие.

Параметр хранилища Описание
GL_PACK_SWAP_BYTES Если значение равно true, порядок байтов для компонентов многобайтового цвета, компонентов глубины, цветовых индексов или индексов трафаретов отменяется. То есть, если четырехбайтовый компонент состоит из байтов b0 , b1 , b2 , b3 , он сохраняется в памяти как b3, b2 , b1 , b0, если GL_PACK_SWAP_BYTES true. GL_PACK_SWAP_BYTES не влияет на порядок памяти компонентов в пикселях, а только на порядок байтов в компонентах или индексах. Например, три компонента пикселя формата GL_RGB всегда хранятся с красным первым, зеленым вторым и синим третьим независимо от значения GL_PACK_SWAP_BYTES.
GL_PACK_LSB_FIRST Если значение равно true, биты упорядочены в пределах байта от наименее значимого к самому значительному; В противном случае первый бит в каждом байте является наиболее значительным. Этот параметр важен только для данных растрового изображения.
GL_PACK_ROW_LENGTH Если больше нуля, GL_PACK_ROW_LENGTH определяет количество пикселей в строке. Если первый пиксель строки помещается в расположение p в памяти, то расположение первого пикселя следующей строки получается путем пропуска формулы, показыв расположение первого пикселя следующей строки в GL_PACK_ROW_LENGTH. [newline] компоненты или индексы, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины процедуры пикселя в противном случае), a — значение gl-pack-выравнивания, а s — размер одного компонента (если s<, тогда это как будто s = ). в случае 1-битовых значений расположение следующей строки получается путем пропуска формулы, показывающей расположение следующей строки в GL_PACK_ROW_LENGTH.
компоненты или индексы. Компонент слова в этом описании относится к неиндексным значениям red, green, blue, alpha и depth. Формат хранения GL_RGB, например, содержит три компонента на пиксель: сначала красный, затем зеленый и, наконец, синий.
GL_PACK_SKIP_PIXELS и
GL_PACK_SKIP_ROWS
Эти значения предоставляются в качестве удобства для программиста; они не предоставляют функциональных возможностей, которые невозможно дублировать, просто приумножения указателя, передаваемого в glReadPixels. Присвоение GL_PACK_SKIP_PIXELS значения i эквивалентно приращению указателя на i n компонентов или индексов, где n — это количество компонентов или индексов в каждом пикселе. Установка GL_PACK_SKIP_ROWS значения j эквивалентна приращению указателя по компонентам или индексам j k , где k — количество компонентов или индексов в строке, как было вычислено выше в разделе GL_PACK_ROW_LENGTH.
GL_PACK_ALIGNMENT Задает требования к выравниванию для начала каждой строки пикселей в памяти. Допустимые значения: 1 (выравнивание по байтам), 2 (строки, выровненные по четным байтам), 4 (выравнивание по словам) и 8 (строки начинаются с границ двух слов).

Остальные шесть параметров хранилища влияют на то, как пиксельные данные считываются из клиентской памяти. Эти значения важны для glDrawPixels, glTexImage1D, glTexImage2D, glBitmap и glPolygonStipple. Вот они:

Параметр хранилища Описание
GL_UNPACK_SWAP_BYTES Если значение равно true, порядок байтов для компонентов многобайтового цвета, компонентов глубины, цветовых индексов или индексов трафаретов отменяется. То есть, если четырехбайтовый компонент состоит из байтов b0 , b1 , b2 , b3 , он сохраняется в памяти как b3, b2 , b1 , b0, если GL_UNPACK_SWAP_BYTES имеет значение true. GL_UNPACK_SWAP_BYTES не влияет на порядок памяти компонентов в пикселях, а только на порядок байтов в компонентах или индексах. Например, три компонента пикселя формата GL_RGB всегда хранятся с красным первым, зеленым вторым и синим третьим независимо от значения GL_UNPACK_SWAP_BYTES.
GL_UNPACK_LSB_FIRST Если значение равно true, биты упорядочены в пределах байта от наименее значимого к самому значительному; В противном случае первый бит в каждом байте является наиболее значительным. Это важно только для данных растрового изображения.
GL_UNPACK_ROW_LENGTH Если больше нуля, GL_UNPACK_ROW_LENGTH определяет количество пикселей в строке. Если первый пиксель строки помещается в расположение p в памяти, расположение первого пикселя следующей строки получается путем пропуска формулы, показыв расположение первого пикселя следующей строки в GL_UNPACK_ROW_LENGTH. [newline] компоненты или индексы, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины процедуры пикселя в противном случае), a — значение gl-pack-выравнивания, а s — размер одного компонента (если s<, тогда это как будто s = ). в случае 1-разрядных значений расположение следующей строки получается путем пропуска формулы, показывающей расположение следующей строки в GL_UNPACK_ROW_LENGTH.
компоненты или индексы. Компонент слова в этом описании относится к неиндексным значениям red, green, blue, alpha и depth. Формат хранения GL_RGB, например, содержит три компонента на пиксель: сначала красный, затем зеленый и, наконец, синий.
GL_UNPACK_SKIP_PIXELS и
GL_UNPACK_SKIP_ROWS
Эти значения предоставляются в качестве удобства для программиста; они не предоставляют функциональных возможностей, которые нельзя дублировать, просто приумножая указатель, передаваемый в glDrawPixels, glTexImage1D, glTexImage2D, glBitmap или glPolygonStipple. Присвоение GL_UNPACK_SKIP_PIXELS значения i эквивалентно приращению указателя на i n компонентов или индексов, где n — количество компонентов или индексов в каждом пикселе. Присвоение GL_UNPACK_SKIP_ROWS значения j эквивалентно приращению указателя по компонентам или индексам j k , где k — это число компонентов или индексов в строке, как описано выше в разделе GL_UNPACK_ROW_LENGTH.
GL_UNPACK_ALIGNMENT Задает требования к выравниванию для начала каждой строки пикселей в памяти. Допустимые значения: 1 (выравнивание по байтам), 2 (строки, выровненные по четным байтам), 4 (выравнивание по словам) и 8 (строки начинаются с границ двух слов).

param

Значение, которому присвоено значение pname .

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

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

Комментарии

Функция glPixelStore задает режимы хранения пикселей, которые влияют на работу последующих glDrawPixels и glReadPixels , а также на распаковку шаблонов многоугольников (см . glPolygonStipple), растровые изображения (см. glBitmap) и шаблоны текстур (см. glTexImage1D, glTexImage2D, glTexSubImage1D и glTexSubImage2D).

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

Pname Тип Начальное значение Допустимый диапазон значений
GL_PACK_SWAP_BYTES Логическое false true или false
GL_PACK_SWAP_BYTES Логическое false true или false
GL_PACK_ROW_LENGTH Целое число 0 [0,?)
GL_PACK_SKIP_ROWS Целое число 0 [0,?)
GL_PACK_SKIP_PIXELS Целое число 0 [0,?)
GL_PACK_ALIGNMENT Целое число 4 1, 2, 4 или 8
GL_UNPACK_SWAP_BYTES Логическое false true или false
GL_UNPACK_LSB_FIRST Логическое false true или false
GL_UNPACK_ROW_LENGTH Целое число 0 [0,?)
GL_UNPACK_SKIP_ROWS Целое число 0 [0,?)
GL_UNPACK_SKIP_PIXELS Целое число 0 [0,?)
GL_UNPACK_ALIGNMENT Целое число 4 1, 2, 4 или 8

Функцию glPixelStoref можно использовать для задания любого параметра хранилища пикселей. Если параметр имеет тип Boolean, а параметр имеет значение 0,0, то параметр имеет значение false; в противном случае ему присваивается значение true. Если pname является параметром целочисленного типа, то параметр округляется до ближайшего целого числа.

Аналогичным образом, функцию glPixelStorei также можно использовать для задания любого из параметров хранилища пикселей. Логические параметры имеют значение false, если параметр имеет значение 0, в противном случае — true. Параметр param преобразуется в число с плавающей запятой, а затем назначается параметрам с реальным значением.

Режимы хранения пикселей, которые действуют при размещении glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glBitmap или glPolygonStipple в списке отображения, управляют интерпретацией данных памяти. Режимы хранения пикселей, которые действуют при выполнении отображаемого списка, не имеют значения.

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

glGet с GL_PACK_SWAP_BYTES аргументов

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

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

glGet с GL_PACK_SKIP_ROWS аргументов

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

glGet с GL_PACK_ALIGNMENT аргументов

glGet с GL_UNPACK_SWAP_BYTES аргументов

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

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

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

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

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

Требования

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

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

glBegin

glBitmap

glDrawPixels

glEnd

glPixelMap

glPixelTransfer

glPixelZoom

glPolygonStipple

glReadPixels

glTexImage1D

glTexImage2D