Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GLPIXELTRANSFER()					       GLPIXELTRANSFER()

NAME
     glPixelTransferf, glPixelTransferi - set pixel transfer modes

C SPECIFICATION
     void glPixelTransferf( GLenum pname,
			    GLfloat param )
     void glPixelTransferi( GLenum pname,
			    GLint param )

     delim $$

PARAMETERS
     pname  Specifies  the  symbolic  name of the pixel transfer parameter to be
	    set.  Must be one of the  following:  GL_MAP_COLOR,  GL_MAP_STENCIL,
	    GL_INDEX_SHIFT,    GL_INDEX_OFFSET,    GL_RED_SCALE,    GL_RED_BIAS,
	    GL_GREEN_SCALE, GL_GREEN_BIAS, GL_BLUE_SCALE,  GL_BLUE_BIAS,  GL_AL-
	    PHA_SCALE, GL_ALPHA_BIAS, GL_DEPTH_SCALE, or GL_DEPTH_BIAS.

     param  Specifies the value that pname is set to.

DESCRIPTION
     glPixelTransfer sets pixel transfer modes that affect the operation of sub-
     sequent  glCopyPixels,  glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubIm-
     age1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels,  glTexImage1D,  gl-
     TexImage2D,  glTexSubImage1D, and glTexSubImage2D commands.  The algorithms
     that are specified by pixel transfer modes operate on pixels after they are
     read from the frame  buffer  (glCopyPixels  glCopyTexImage1D,  glCopyTexIm-
     age2D,  glCopyTexSubImage1D, glCopyTexSubImage2D, and glReadPixels), or un-
     packed from client memory (glDrawPixels, glTexImage1D, glTexImage2D, glTex-
     SubImage1D, and glTexSubImage2D).	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 glPixelStore) control the
     unpacking	of pixels being read from client memory, and the packing of pix-
     els being written back into client memory.

     Pixel transfer operations handle four fundamental pixel types: color, color
     index, depth, and stencil.  Color 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.   Color  indices
     comprise  a  single  fixed-point  value,  with unspecified precision to the
     right of the binary point.  Depth 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, stencil pixels comprise a single fixed-point
     value, with unspecified precision to the right of the binary point.

     The pixel transfer operations performed on the four basic pixel  types  are
     as follows:

     Color	 Each of the four color components is multiplied by a scale fac-
		 tor,  then  added to a bias factor.  That is, the red component
		 is multiplied by GL_RED_SCALE, then added to  GL_RED_BIAS;  the
		 green	component is multiplied by GL_GREEN_SCALE, then added to
		 GL_GREEN_BIAS;   the	blue   component   is	multiplied    by
		 GL_BLUE_SCALE, then added to GL_BLUE_BIAS; and the alpha compo-
		 nent  is  multiplied  by  GL_ALPHA_SCALE,  then added to GL_AL-
		 PHA_BIAS.  After all four color components are scaled	and  bi-
		 ased,	each  is  clamped to the range [0,1].  All color, scale,
		 and bias values are specified with glPixelTransfer.

		 If GL_MAP_COLOR 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  GL_PIXEL_MAP_R_TO_R_SIZE,
		 then replaced by the contents of GL_PIXEL_MAP_R_TO_R indexed by
		 itself.      The     green	component     is    scaled    by
		 GL_PIXEL_MAP_G_TO_G_SIZE, then  replaced  by  the  contents  of
		 GL_PIXEL_MAP_G_TO_G  indexed  by itself.  The blue component is
		 scaled by GL_PIXEL_MAP_B_TO_B_SIZE, then replaced by  the  con-
		 tents	of GL_PIXEL_MAP_B_TO_B indexed by itself.  And the alpha
		 component is scaled by GL_PIXEL_MAP_A_TO_A_SIZE, then	replaced
		 by  the contents of GL_PIXEL_MAP_A_TO_A indexed by itself.  All
		 components taken from the maps are then clamped  to  the  range
		 [0,1].   GL_MAP_COLOR	is  specified with glPixelTransfer.  The
		 contents of the various maps are specified with glPixelMap.

     Color index
		 Each color index is shifted left by  GL_INDEX_SHIFT  bits;  any
		 bits  beyond  the number of fraction bits carried by the fixed-
		 point index are filled with zeros.  If GL_INDEX_SHIFT is  nega-
		 tive,	the  shift  is	to  the  right, again zero filled.  Then
		 GL_INDEX_OFFSET is added  to  the  index.   GL_INDEX_SHIFT  and
		 GL_INDEX_OFFSET are specified with
		 glPixelTransfer.

		 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 GL_COLOR_INDEX format, the pixels con-
		 tinue	to be treated as indices.  If GL_MAP_COLOR is true, each
		 index	is  masked  by	$2  sup  n  ~-~   1$,	where	$n$   is
		 GL_PIXEL_MAP_I_TO_I_SIZE,  then  replaced  by	the  contents of
		 GL_PIXEL_MAP_I_TO_I indexed by the masked value.   GL_MAP_COLOR
		 is  specified	with glPixelTransfer.  The contents of the index
		 map is specified with glPixelMap.

		 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 GL_COLOR_INDEX, the pixels are  converted  from  in-
		 dices	  to	colors	  by	referencing    the   four   maps
		 GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G,  GL_PIXEL_MAP_I_TO_B,
		 and  GL_PIXEL_MAP_I_TO_A.  Before being dereferenced, the index
		 is   masked   by   $2	 sup   n   ~-~	 1$,   where   $n$    is
		 GL_PIXEL_MAP_I_TO_R_SIZE	for	  the	   red	    map,
		 GL_PIXEL_MAP_I_TO_G_SIZE      for	the	 green	    map,
		 GL_PIXEL_MAP_I_TO_B_SIZE     for     the    blue    map,    and
		 GL_PIXEL_MAP_I_TO_A_SIZE for the  alpha  map.	 All  components
		 taken	from  the maps are then clamped to the range [0,1].  The
		 contents of the four maps is specified with glPixelMap.

     Depth	 Each depth value is  multiplied  by  GL_DEPTH_SCALE,  added  to
		 GL_DEPTH_BIAS, then clamped to the range [0,1].

     Stencil	 Each index is shifted GL_INDEX_SHIFT bits just as a color index
		 is,  then added to GL_INDEX_OFFSET.  If GL_MAP_STENCIL is true,
		 each index is	masked	by  $2	sup  n	~-~  1$,  where  $n$  is
		 GL_PIXEL_MAP_S_TO_S_SIZE,  then  replaced  by	the  contents of
		 GL_PIXEL_MAP_S_TO_S indexed by the masked value.

     The following table gives the type, initial value, and range of valid  val-
     ues  for  each  of the pixel transfer parameters that are set with glPixel-
     Transfer.

      +-----------------+---------+---------------+--------------------------+
      |      pname	|  type   | initial value |	  valid range	     |
      +-----------------+---------+---------------+--------------------------+
      |  GL_MAP_COLOR	| boolean |	false	  |	   true/false	     |
      | GL_MAP_STENCIL	| boolean |	false	  |	   true/false	     |
      | GL_INDEX_SHIFT	| integer |	  0	  | (-<infinity>,<infinity>) |
      | GL_INDEX_OFFSET | integer |	  0	  | (-<infinity>,<infinity>) |
      |  GL_RED_SCALE	|  float  |	  1	  | (-<infinity>,<infinity>) |
      | GL_GREEN_SCALE	|  float  |	  1	  | (-<infinity>,<infinity>) |
      |  GL_BLUE_SCALE	|  float  |	  1	  | (-<infinity>,<infinity>) |
      | GL_ALPHA_SCALE	|  float  |	  1	  | (-<infinity>,<infinity>) |
      | GL_DEPTH_SCALE	|  float  |	  1	  | (-<infinity>,<infinity>) |
      |   GL_RED_BIAS	|  float  |	  0	  | (-<infinity>,<infinity>) |
      |  GL_GREEN_BIAS	|  float  |	  0	  | (-<infinity>,<infinity>) |
      |  GL_BLUE_BIAS	|  float  |	  0	  | (-<infinity>,<infinity>) |
      |  GL_ALPHA_BIAS	|  float  |	  0	  | (-<infinity>,<infinity>) |
      |  GL_DEPTH_BIAS	|  float  |	  0	  | (-<infinity>,<infinity>) |
      +-----------------+---------+---------------+--------------------------+

     glPixelTransferf 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 pname is an integer parameter, param is rounded	to  the  nearest
     integer.

     Likewise, glPixelTransferi can be used to set any of the pixel transfer pa-
     rameters.	 Boolean  parameters  are set to false if param is 0 and to true
     otherwise.  param is converted to floating point before being  assigned  to
     real-valued parameters.

NOTES
     If a glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D,
     glCopyTexSubImage2D,  glDrawPixels,  glReadPixels,  glTexImage1D,	glTexIm-
     age2D, glTexSubImage1D, or glTexSubImage2D command is placed in  a  display
     list  (see  glNewList  and glCallList), the pixel transfer mode settings in
     effect when the display list is executed are the ones that are used.   They
     may  be  different from the settings when the command was compiled into the
     display list.

ERRORS
     GL_INVALID_ENUM is generated if pname is not an accepted value.

     GL_INVALID_OPERATION is generated if glPixelTransfer  is  executed  between
     the execution of glBegin and the corresponding execution of glEnd.

ASSOCIATED GETS
     glGet with argument GL_MAP_COLOR
     glGet with argument GL_MAP_STENCIL
     glGet with argument GL_INDEX_SHIFT
     glGet with argument GL_INDEX_OFFSET
     glGet with argument GL_RED_SCALE
     glGet with argument GL_RED_BIAS
     glGet with argument GL_GREEN_SCALE
     glGet with argument GL_GREEN_BIAS
     glGet with argument GL_BLUE_SCALE
     glGet with argument GL_BLUE_BIAS
     glGet with argument GL_ALPHA_SCALE
     glGet with argument GL_ALPHA_BIAS
     glGet with argument GL_DEPTH_SCALE
     glGet with argument GL_DEPTH_BIAS

SEE ALSO
     glCallList,  glCopyPixels,  glCopyTexImage1D,  glCopyTexImage2D, glCopyTex-
     SubImage1D,  glCopyTexSubImage2D,	glDrawPixels,	glNewList,   glPixelMap,
     glPixelStore, glPixelZoom, glReadPixels, glTexImage1D, glTexImage2D, glTex-
     SubImage1D, glTexSubImage2D

							       GLPIXELTRANSFER()

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=glPixelTransferi&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help