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


Функция glPixelStoref

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

Синтаксис

void WINAPI glPixelStoref(
   GLenum  pname,
   GLfloat 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] components or indexes, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины для процедуры пикселя в противном случае), a — значение gl-pack-alignment, а 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] components or indexes, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины для процедуры пикселя в противном случае), a — значение gl-pack-alignment, а 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