Функция 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 в памяти, то расположение первого пикселя следующей строки получается путем пропуска [newline] components or indexes, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины для процедуры пикселя в противном случае), a — значение gl-pack-alignment, а s — размер одного компонента в байтах (если s<, тогда это как будто s = ). В случае 1-разрядных значений расположение следующей строки получается путем пропуска
компоненты или индексы. Компонент слова в этом описании относится к неиндексным значениям 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 в памяти, то расположение первого пикселя следующей строки получается путем пропуска [newline] components or indexes, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины для процедуры пикселя в противном случае), a — значение gl-pack-alignment, а s — размер одного компонента в байтах (если s<, тогда это как будто s = ). в случае 1-разрядных значений расположение следующей строки получается путем пропуска
компоненты или индексы. Компонент слова в этом описании относится к неиндексным значениям 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 [только классические приложения] |
Заголовок |
|
Библиотека |
|
DLL |
|