Функция 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 в памяти, то расположение первого пикселя следующей строки получается путем пропуска [newline] компоненты или индексы, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины процедуры пикселя в противном случае), a — значение gl-pack-выравнивания, а 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] компоненты или индексы, где n — количество компонентов или индексов в пикселях, l — количество пикселей в строке (gl-pack-row-length, если оно больше нуля, аргумент ширины процедуры пикселя в противном случае), a — значение gl-pack-выравнивания, а 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 |
|