Opentk/Source/Bind/Specifications/Docs/glPixelTransfer.xml
2009-03-08 00:46:58 +00:00

1277 lines
65 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
"http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry id="glPixelTransfer">
<refmeta>
<refmetainfo>
<copyright>
<year>1991-2006</year>
<holder>Silicon Graphics, Inc.</holder>
</copyright>
</refmetainfo>
<refentrytitle>glPixelTransfer</refentrytitle>
<manvolnum>3G</manvolnum>
</refmeta>
<refnamediv>
<refname>glPixelTransfer</refname>
<refpurpose>set pixel transfer modes</refpurpose>
</refnamediv>
<refsynopsisdiv><title>C Specification</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>glPixelTransferf</function></funcdef>
<paramdef>GLenum <parameter>pname</parameter></paramdef>
<paramdef>GLfloat <parameter>param</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>glPixelTransferi</function></funcdef>
<paramdef>GLenum <parameter>pname</parameter></paramdef>
<paramdef>GLint <parameter>param</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<!-- eqn: ignoring delim $$ -->
<refsect1 id="parameters"><title>Parameters</title>
<variablelist>
<varlistentry>
<term><parameter>pname</parameter></term>
<listitem>
<para>
Specifies the symbolic name of the pixel transfer parameter to be set.
Must be one of the following:
<constant>GL_MAP_COLOR</constant>,
<constant>GL_MAP_STENCIL</constant>,
<constant>GL_INDEX_SHIFT</constant>,
<constant>GL_INDEX_OFFSET</constant>,
<constant>GL_RED_SCALE</constant>,
<constant>GL_RED_BIAS</constant>,
<constant>GL_GREEN_SCALE</constant>,
<constant>GL_GREEN_BIAS</constant>,
<constant>GL_BLUE_SCALE</constant>,
<constant>GL_BLUE_BIAS</constant>,
<constant>GL_ALPHA_SCALE</constant>,
<constant>GL_ALPHA_BIAS</constant>,
<constant>GL_DEPTH_SCALE</constant>, or
<constant>GL_DEPTH_BIAS</constant>.
</para>
<para>
Additionally, if the <code>ARB_imaging</code> extension is supported, the
following symbolic names are accepted:
<constant>GL_POST_COLOR_MATRIX_RED_SCALE</constant>,
<constant>GL_POST_COLOR_MATRIX_GREEN_SCALE</constant>,
<constant>GL_POST_COLOR_MATRIX_BLUE_SCALE</constant>,
<constant>GL_POST_COLOR_MATRIX_ALPHA_SCALE</constant>,
<constant>GL_POST_COLOR_MATRIX_RED_BIAS</constant>,
<constant>GL_POST_COLOR_MATRIX_GREEN_BIAS</constant>,
<constant>GL_POST_COLOR_MATRIX_BLUE_BIAS</constant>,
<constant>GL_POST_COLOR_MATRIX_ALPHA_BIAS</constant>,
<constant>GL_POST_CONVOLUTION_RED_SCALE</constant>,
<constant>GL_POST_CONVOLUTION_GREEN_SCALE</constant>,
<constant>GL_POST_CONVOLUTION_BLUE_SCALE</constant>,
<constant>GL_POST_CONVOLUTION_ALPHA_SCALE</constant>,
<constant>GL_POST_CONVOLUTION_RED_BIAS</constant>,
<constant>GL_POST_CONVOLUTION_GREEN_BIAS</constant>,
<constant>GL_POST_CONVOLUTION_BLUE_BIAS</constant>, and
<constant>GL_POST_CONVOLUTION_ALPHA_BIAS</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>param</parameter></term>
<listitem>
<para>
Specifies the value that <parameter>pname</parameter> is set to.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="description"><title>Description</title>
<para>
<function>glPixelTransfer</function> sets pixel transfer modes that affect the operation of subsequent
<citerefentry><refentrytitle>glCopyPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>, and
<citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry> commands.
Additionally, if the <code>ARB_imaging</code> subset is supported, the
routines
<citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glHistogram</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glMinmax</refentrytitle></citerefentry>, and
<citerefentry><refentrytitle>glSeparableFilter2D</refentrytitle></citerefentry> are also affected.
The algorithms that are specified by pixel transfer modes operate on
pixels after they are read from the frame buffer
(<citerefentry><refentrytitle>glCopyPixels</refentrytitle></citerefentry>
<citerefentry><refentrytitle>glCopyTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage3D</refentrytitle></citerefentry>, and
<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>),
or unpacked from client memory
(<citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>, and <citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>).
Pixel transfer operations happen in the same order,
and in the same manner,
regardless of the command that resulted in the pixel operation.
Pixel storage modes
(see <citerefentry><refentrytitle>glPixelStore</refentrytitle></citerefentry>)
control the unpacking of pixels being read from client memory
and the packing of pixels being written back into client memory.
</para>
<para>
Pixel transfer operations handle four fundamental pixel types:
<emphasis>color</emphasis>,
<emphasis>color index</emphasis>,
<emphasis>depth</emphasis>, and
<emphasis>stencil</emphasis>.
<emphasis>Color</emphasis> pixels consist of four floating-point values
with unspecified mantissa and exponent sizes,
scaled such that 0 represents zero intensity
and 1 represents full intensity.
<emphasis>Color indices</emphasis> comprise a single fixed-point value,
with unspecified precision to the right of the binary point.
<emphasis>Depth</emphasis> pixels comprise a single floating-point value,
with unspecified mantissa and exponent sizes,
scaled such that 0.0 represents the minimum depth buffer value,
and 1.0 represents the maximum depth buffer value.
Finally,
<emphasis>stencil</emphasis> pixels comprise a single fixed-point value,
with unspecified precision to the right of the binary point.
</para>
<para>
The pixel transfer operations performed on the four basic pixel types are
as follows:
</para>
<variablelist>
<varlistentry>
<term><emphasis>Color</emphasis></term>
<listitem>
<para>
Each of the four color components is multiplied by a scale factor,
then added to a bias factor.
That is,
the red component is multiplied by <constant>GL_RED_SCALE</constant>,
then added to <constant>GL_RED_BIAS</constant>;
the green component is multiplied by <constant>GL_GREEN_SCALE</constant>,
then added to <constant>GL_GREEN_BIAS</constant>;
the blue component is multiplied by <constant>GL_BLUE_SCALE</constant>,
then added to <constant>GL_BLUE_BIAS</constant>; and
the alpha component is multiplied by <constant>GL_ALPHA_SCALE</constant>,
then added to <constant>GL_ALPHA_BIAS</constant>.
After all four color components are scaled and biased,
each is clamped to the range
<inlineequation><mml:math>
<!-- eqn: [0,1]:-->
<mml:mfenced open="[" close="]">
<mml:mn>0</mml:mn>
<mml:mn>1</mml:mn>
</mml:mfenced>
</mml:math></inlineequation>.
All color, scale, and bias values are specified with <function>glPixelTransfer</function>.
</para>
<para>
If <constant>GL_MAP_COLOR</constant> is true,
each color component is scaled by the size of the corresponding
color-to-color map,
then replaced by the contents of that map indexed by the scaled component.
That is,
the red component is scaled by <constant>GL_PIXEL_MAP_R_TO_R_SIZE</constant>,
then replaced by the contents of <constant>GL_PIXEL_MAP_R_TO_R</constant> indexed by itself.
The green component is scaled by <constant>GL_PIXEL_MAP_G_TO_G_SIZE</constant>,
then replaced by the contents of <constant>GL_PIXEL_MAP_G_TO_G</constant> indexed by itself.
The blue component is scaled by <constant>GL_PIXEL_MAP_B_TO_B_SIZE</constant>,
then replaced by the contents of <constant>GL_PIXEL_MAP_B_TO_B</constant> indexed by itself.
And
the alpha component is scaled by <constant>GL_PIXEL_MAP_A_TO_A_SIZE</constant>,
then replaced by the contents of <constant>GL_PIXEL_MAP_A_TO_A</constant> indexed by itself.
All components taken from the maps are then clamped to the range
<inlineequation><mml:math>
<!-- eqn: [0,1]:-->
<mml:mfenced open="[" close="]">
<mml:mn>0</mml:mn>
<mml:mn>1</mml:mn>
</mml:mfenced>
</mml:math></inlineequation>.
<constant>GL_MAP_COLOR</constant> is specified with <function>glPixelTransfer</function>.
The contents of the various maps are specified with <citerefentry><refentrytitle>glPixelMap</refentrytitle></citerefentry>.
</para>
<para>
If the <code>ARB_imaging</code> extension is supported, each of the four
color components may be scaled and biased after transformation by the
color matrix.
That is,
the red component is multiplied by <constant>GL_POST_COLOR_MATRIX_RED_SCALE</constant>,
then added to <constant>GL_POST_COLOR_MATRIX_RED_BIAS</constant>;
the green component is multiplied by <constant>GL_POST_COLOR_MATRIX_GREEN_SCALE</constant>,
then added to <constant>GL_POST_COLOR_MATRIX_GREEN_BIAS</constant>;
the blue component is multiplied by <constant>GL_POST_COLOR_MATRIX_BLUE_SCALE</constant>,
then added to <constant>GL_POST_COLOR_MATRIX_BLUE_BIAS</constant>; and
the alpha component is multiplied by <constant>GL_POST_COLOR_MATRIX_ALPHA_SCALE</constant>,
then added to <constant>GL_POST_COLOR_MATRIX_ALPHA_BIAS</constant>.
After all four color components are scaled and biased,
each is clamped to the range
<inlineequation><mml:math>
<!-- eqn: [0,1]:-->
<mml:mfenced open="[" close="]">
<mml:mn>0</mml:mn>
<mml:mn>1</mml:mn>
</mml:mfenced>
</mml:math></inlineequation>.
</para>
<para>
Similarly, if the <code>ARB_imaging</code> extension is supported, each of
the four color components may be scaled and biased after processing by
the enabled convolution filter.
That is,
the red component is multiplied by <constant>GL_POST_CONVOLUTION_RED_SCALE</constant>,
then added to <constant>GL_POST_CONVOLUTION_RED_BIAS</constant>;
the green component is multiplied by <constant>GL_POST_CONVOLUTION_GREEN_SCALE</constant>,
then added to <constant>GL_POST_CONVOLUTION_GREEN_BIAS</constant>;
the blue component is multiplied by <constant>GL_POST_CONVOLUTION_BLUE_SCALE</constant>,
then added to <constant>GL_POST_CONVOLUTION_BLUE_BIAS</constant>; and
the alpha component is multiplied by <constant>GL_POST_CONVOLUTION_ALPHA_SCALE</constant>,
then added to <constant>GL_POST_CONVOLUTION_ALPHA_BIAS</constant>.
After all four color components are scaled and biased,
each is clamped to the range
<inlineequation><mml:math>
<!-- eqn: [0,1]:-->
<mml:mfenced open="[" close="]">
<mml:mn>0</mml:mn>
<mml:mn>1</mml:mn>
</mml:mfenced>
</mml:math></inlineequation>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>Color index</emphasis></term>
<listitem>
<para>
Each color index is shifted left by <constant>GL_INDEX_SHIFT</constant> bits; any bits
beyond the number of fraction bits carried
by the fixed-point index are filled with zeros.
If <constant>GL_INDEX_SHIFT</constant> is negative,
the shift is to the right,
again zero filled.
Then <constant>GL_INDEX_OFFSET</constant> is added to the index.
<constant>GL_INDEX_SHIFT</constant> and <constant>GL_INDEX_OFFSET</constant> are specified with
<function>glPixelTransfer</function>.
</para>
<para>
From this point, operation diverges depending on the required format of
the resulting pixels.
If the resulting pixels are to be written to a color index buffer,
or if they are being read back to client memory in <constant>GL_COLOR_INDEX</constant> format,
the pixels continue to be treated as indices.
If <constant>GL_MAP_COLOR</constant> is true,
each index is masked by
<inlineequation><mml:math>
<!-- eqn: 2 sup n - 1:-->
<mml:mrow>
<mml:msup><mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msup>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math></inlineequation>,
where
<inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
is <constant>GL_PIXEL_MAP_I_TO_I_SIZE</constant>,
then replaced by the contents of <constant>GL_PIXEL_MAP_I_TO_I</constant> indexed by the
masked value.
<constant>GL_MAP_COLOR</constant> is specified with <function>glPixelTransfer</function>.
The contents of the index map is specified with <citerefentry><refentrytitle>glPixelMap</refentrytitle></citerefentry>.
</para>
<para>
If the resulting pixels are to be written to an RGBA color buffer,
or if they are read back to client memory in a format other than
<constant>GL_COLOR_INDEX</constant>,
the pixels are converted from indices to colors by referencing the
four maps
<constant>GL_PIXEL_MAP_I_TO_R</constant>,
<constant>GL_PIXEL_MAP_I_TO_G</constant>,
<constant>GL_PIXEL_MAP_I_TO_B</constant>, and
<constant>GL_PIXEL_MAP_I_TO_A</constant>.
Before being dereferenced,
the index is masked by
<inlineequation><mml:math>
<!-- eqn: 2 sup n - 1:-->
<mml:mrow>
<mml:msup><mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msup>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math></inlineequation>,
where
<inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
is
<constant>GL_PIXEL_MAP_I_TO_R_SIZE</constant> for the red map,
<constant>GL_PIXEL_MAP_I_TO_G_SIZE</constant> for the green map,
<constant>GL_PIXEL_MAP_I_TO_B_SIZE</constant> for the blue map, and
<constant>GL_PIXEL_MAP_I_TO_A_SIZE</constant> for the alpha map.
All components taken from the maps are then clamped to the range
<inlineequation><mml:math>
<!-- eqn: [0,1]:-->
<mml:mfenced open="[" close="]">
<mml:mn>0</mml:mn>
<mml:mn>1</mml:mn>
</mml:mfenced>
</mml:math></inlineequation>.
The contents of the four maps is specified with <citerefentry><refentrytitle>glPixelMap</refentrytitle></citerefentry>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>Depth</emphasis></term>
<listitem>
<para>
Each depth value is multiplied by <constant>GL_DEPTH_SCALE</constant>,
added to <constant>GL_DEPTH_BIAS</constant>,
then clamped to the range
<inlineequation><mml:math>
<!-- eqn: [0,1]:-->
<mml:mfenced open="[" close="]">
<mml:mn>0</mml:mn>
<mml:mn>1</mml:mn>
</mml:mfenced>
</mml:math></inlineequation>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>Stencil</emphasis></term>
<listitem>
<para>
Each index is shifted <constant>GL_INDEX_SHIFT</constant> bits just as a color index is,
then added to <constant>GL_INDEX_OFFSET</constant>.
If <constant>GL_MAP_STENCIL</constant> is true,
each index is masked by
<inlineequation><mml:math>
<!-- eqn: 2 sup n - 1:-->
<mml:mrow>
<mml:msup><mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msup>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math></inlineequation>,
where
<inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
is <constant>GL_PIXEL_MAP_S_TO_S_SIZE</constant>,
then replaced by the contents of <constant>GL_PIXEL_MAP_S_TO_S</constant> indexed by the
masked value.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
The following table gives the type,
initial value,
and range of valid values for each of the pixel transfer parameters
that are set with <function>glPixelTransfer</function>.
</para>
<para>
</para>
<informaltable frame="topbot">
<tgroup cols="4" align="left">
<colspec colwidth="4*" />
<colspec colwidth="1*" align="center"/>
<colspec colwidth="1*" align="center"/>
<colspec colwidth="2*" align="center"/>
<thead>
<row>
<entry rowsep="1" align="left"><emphasis role="bold">
<parameter>pname</parameter>
</emphasis></entry>
<entry rowsep="1" align="center"><emphasis role="bold">
Type
</emphasis></entry>
<entry rowsep="1" align="center"><emphasis role="bold">
Initial Value
</emphasis></entry>
<entry rowsep="1" align="center"><emphasis role="bold">
Valid Range
</emphasis></entry>
</row>
</thead>
<tbody>
<row>
<entry align="left">
<constant>GL_MAP_COLOR</constant>
</entry>
<entry align="center">
boolean
</entry>
<entry align="center">
false
</entry>
<entry align="center">
true/false
</entry>
</row>
<row>
<entry align="left">
<constant>GL_MAP_STENCIL</constant>
</entry>
<entry align="center">
boolean
</entry>
<entry align="center">
false
</entry>
<entry align="center">
true/false
</entry>
</row>
<row>
<entry align="left">
<constant>GL_INDEX_SHIFT</constant>
</entry>
<entry align="center">
integer
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_INDEX_OFFSET</constant>
</entry>
<entry align="center">
integer
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_RED_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_GREEN_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_BLUE_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_ALPHA_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_DEPTH_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_RED_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_GREEN_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_BLUE_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_ALPHA_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_DEPTH_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_RED_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_GREEN_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_BLUE_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_ALPHA_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_RED_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_GREEN_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_BLUE_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_COLOR_MATRIX_ALPHA_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_RED_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_GREEN_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_BLUE_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_ALPHA_SCALE</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
1
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_RED_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_GREEN_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_BLUE_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
<row>
<entry align="left">
<constant>GL_POST_CONVOLUTION_ALPHA_BIAS</constant>
</entry>
<entry align="center">
float
</entry>
<entry align="center">
0
</entry>
<entry align="center">
<inlineequation><mml:math>
<!-- eqn: left ( -\(if, \(if right ):-->
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:infinity/>
</mml:mrow>
<mml:infinity/>
</mml:mfenced>
</mml:math></inlineequation>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
<function>glPixelTransferf</function> can be used to set any pixel transfer parameter.
If the parameter type is boolean,
0 implies false and any other value implies true.
If <parameter>pname</parameter> is an integer parameter,
<parameter>param</parameter> is rounded to the nearest integer.
</para>
<para>
Likewise,
<function>glPixelTransferi</function> can be used to set any of the
pixel transfer parameters.
Boolean parameters are set to false if <parameter>param</parameter> is 0 and to true otherwise.
<parameter>param</parameter> is converted to floating point before being assigned to real-valued parameters.
</para>
</refsect1>
<refsect1 id="notes"><title>Notes</title>
<para>
If a
<citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glSeparableFilter2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>, or
<citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>
command is placed in a display list
(see <citerefentry><refentrytitle>glNewList</refentrytitle></citerefentry> and <citerefentry><refentrytitle>glCallList</refentrytitle></citerefentry>),
the pixel transfer mode settings in effect when the display list is
<emphasis>executed</emphasis>
are the ones that are used.
They may be different from the settings when the command was compiled
into the display list.
</para>
</refsect1>
<refsect1 id="errors"><title>Errors</title>
<para>
<constant>GL_INVALID_ENUM</constant> is generated if <parameter>pname</parameter> is not an accepted value.
</para>
<para>
<constant>GL_INVALID_OPERATION</constant> is generated if <function>glPixelTransfer</function>
is executed between the execution of <citerefentry><refentrytitle>glBegin</refentrytitle></citerefentry>
and the corresponding execution of <citerefentry><refentrytitle>glEnd</refentrytitle></citerefentry>.
</para>
</refsect1>
<refsect1 id="associatedgets"><title>Associated Gets</title>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_MAP_COLOR</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_MAP_STENCIL</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_INDEX_SHIFT</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_INDEX_OFFSET</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_RED_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_RED_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_GREEN_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_GREEN_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_BLUE_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_BLUE_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_ALPHA_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_ALPHA_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_DEPTH_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_DEPTH_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_RED_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_RED_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_GREEN_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_GREEN_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_BLUE_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_BLUE_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_ALPHA_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_COLOR_MATRIX_ALPHA_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_RED_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_RED_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_GREEN_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_GREEN_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_BLUE_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_BLUE_BIAS</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_ALPHA_SCALE</constant>
</para>
<para>
<citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_POST_CONVOLUTION_ALPHA_BIAS</constant>
</para>
</refsect1>
<refsect1 id="seealso"><title>See Also</title>
<para>
<citerefentry><refentrytitle>glCallList</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCopyTexSubImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glNewList</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glPixelMap</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glPixelStore</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glPixelZoom</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>
</para>
</refsect1>
<refsect1 id="Copyright"><title>Copyright</title>
<para>
Copyright <trademark class="copyright"></trademark> 1991-2006
Silicon Graphics, Inc. This document is licensed under the SGI
Free Software B License. For details, see
<ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
</para>
</refsect1>
</refentry>