*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> glReadPixels (3)              
Title
Content
Arch
Section
 

glReadPixels(3G)

Contents


NAME    [Toc]    [Back]

       glReadPixels  -  read  a  block  of  pixels from the frame
       buffer

SYNOPSIS    [Toc]    [Back]

       void glReadPixels(
               GLint x,
               GLint y,
               GLsizei width,
               GLsizei height,
               GLenum format,
               GLenum type,
               GLvoid *pixels );

PARAMETERS    [Toc]    [Back]

       Specify the window coordinates of the first pixel that  is
       read  from  the  frame  buffer. This location is the lower
       left corner of a rectangular block of pixels.  Specify the
       dimensions  of  the  pixel rectangle.  width and height of
       one correspond to a single pixel.  Specifies  the  of  the
       pixel  data.  The  following symbolic values are accepted:
       GL_COLOR_INDEX,   GL_STENCIL_INDEX,    GL_DEPTH_COMPONENT,
       GL_RED,   GL_GREEN,  GL_BLUE,  GL_ALPHA,  GL_RGB,  GL_BGR,
       GL_RGBA, GL_BGRA,  GL_LUMINANCE,  and  GL_LUMINANCE_ALPHA.
       Specifies  the data type of the pixel data. Must be one of
       GL_UNSIGNED_BYTE, GL_BYTE,  GL_BITMAP,  GL_UNSIGNED_SHORT,
       GL_SHORT,      GL_UNSIGNED_INT,      GL_INT,     GL_FLOAT,
       GL_UNSIGNED_BYTE_3_3_2,        GL_UNSIGNED_BYTE_2_3_3_REV,
       GL_UNSIGNED_SHORT_5_6_5,      GL_UNSIGNED_SHORT_5_6_5_REV,
       GL_UNSIGNED_SHORT_4_4_4_4,  GL_UNSIGNED_SHORT_4_4_4_4_REV,
       GL_UNSIGNED_SHORT_5_5_5_1,  GL_UNSIGNED_SHORT_1_5_5_5_REV,
       GL_UNSIGNED_INT_8_8_8_8,      GL_UNSIGNED_INT_8_8_8_8_REV,
       GL_UNSIGNED_INT_10_10_10_2,                             or
       GL_UNSIGNED_INT_2_10_10_10_REV.  Returns the pixel data.

DESCRIPTION    [Toc]    [Back]

       glReadPixels() returns pixel data from the  frame  buffer,
       starting  with  the  pixel  whose  lower left corner is at
       location (x, y), into client memory starting  at  location
       pixels.  Several  parameters control the processing of the
       pixel data before it is placed into client  memory.  These
       parameters  are  set  with three commands: glPixelStore(),
       glPixelTransfer(), and glPixelMap(). This  reference  page
       describes  the  effects on glReadPixels() of most, but not
       all of the parameters specified by these three commands.

       When the GL_ARB_imaging extension is supported, the  pixel
       data  may  be processed by additional operations including
       color table lookup, color matrix tranformations,  convolutions,
 histograms and minimum and maximun pixel value computations.


       glReadPixels() returns values from each pixel  with  lower
       left  corner at (x + i, y + j) for 0 <= i < width and 0 <=
       j < height. This pixel is said to be the ith pixel in  the
       jth  row. Pixels are returned in row order from the lowest
       to the highest row, left to right in each row.

       format specifies  the   for  the  returned  pixel  values;
       accepted values are: Color indices are read from the color
       buffer selected by glReadBuffer().   Each  index  is  converted
  to fixed point, shifted left or right depending on
       the  value  and  sign  of  GL_INDEX_SHIFT,  and  added  to
       GL_INDEX_OFFSET.  If  GL_MAP_COLOR is GL_TRUE, indices are
       replaced    by    their    mappings    in    the     table
       GL_PIXEL_MAP_I_TO_I.   Stencil  values  are  read from the
       stencil buffer. Each index is converted  to  fixed  point,
       shifted  left  or right depending on the value and sign of
       GL_INDEX_SHIFT,   and   added   to   GL_INDEX_OFFSET.   If
       GL_MAP_STENCIL  is  GL_TRUE, indices are replaced by their
       mappings in the table GL_PIXEL_MAP_S_TO_S.   Depth  values
       are  read  from  the  depth buffer. Each component is converted
 to floating point such that the minimum depth value
       maps  to 0 and the maximum value maps to 1. Each component
       is   then   multiplied   by   GL_DEPTH_SCALE,   added   to
       GL_DEPTH_BIAS,  and  finally  clamped  to the range [0,1].
       Processing differs  depending  on  whether  color  buffers
       store  color  indices  or  RGBA color components. If color
       indices are stored, they are read from  the  color  buffer
       selected  by  glReadBuffer().  Each  index is converted to
       fixed point, shifted left or right depending on the  value
       and  sign of GL_INDEX_SHIFT, and added to GL_INDEX_OFFSET.
       Indices are then replaced by the  red,  green,  blue,  and
       alpha    values    obtained   by   indexing   the   tables
       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. Each table
       must be of size 2 sup n, but n may be different  for  different
  tables. Before an index is used to look up a value
       in a table of size 2 sup n, it must be masked against 2[n]
       - 1.

              If  RGBA  color  components are stored in the color
              buffers,  they  are  read  from  the  color  buffer
              selected by glReadBuffer(). Each color component is
              converted to floating point such that  zero  intensity
  maps  to  0.0 and full intensity maps to 1.0.
              Each component is then multiplied by GL_c_SCALE and
              added to GL_c_BIAS, where c is RED, GREEN, BLUE, or
              ALPHA. Finally, if GL_MAP_COLOR  is  GL_TRUE,  each
              component is clamped to the range [0, 1], scaled to
              the size of its corresponding table,  and  is  then
              replaced    by    its    mapping   in   the   table
              GL_PIXEL_MAP_c_TO_c, where c is R, G, B, or A.

              Unneeded  data  is  then  discarded.  For  example,
              GL_RED  discards  the green, blue, and alpha components,
 while GL_RGB discards only the alpha  component.
   GL_LUMINANCE  computes  a  single-component
              value as the sum of the red, green, and blue components,
  and GL_LUMINANCE_ALPHA does the same, while
              keeping alpha as a second value. The  final  values
              are clamped to the range [0, 1].

       The  shift, scale, bias, and lookup factors just described
       are all specified by glPixelTransfer(). The  lookup  table
       contents themselves are specified by glPixelMap().

       Finally,  the  indices  or components are converted to the
       proper , as specified by type. If format is GL_COLOR_INDEX
       or  GL_STENCIL_INDEX  and type is not GL_FLOAT, each index
       is masked with the  mask  value  given  in  the  following
       table.  If  type  is  GL_FLOAT, then each integer index is
       converted to single-precision floating-point .

       If format is GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA,  GL_RGB,
       GL_BGR,   GL_RGBA,   GL_BGRA,  GL_LUMINANCE,  or  GL_LUMINANCE_ALPHA
 and type is not GL_FLOAT,  each  component  is
       multiplied by the multiplier shown in the following table.
       If type is GL_FLOAT, then each component is passed  as  is
       (or  converted  to the client's single-precision floatingpoint
  if it is different from the one used by the GL).

       --------------------------------------------------------
       type                index mask   component conversion
       --------------------------------------------------------
       GL_UNSIGNED_BYTE    2^8 - 1      (2^8 - 1)  c
       GL_BYTE             2^7 - 1      [(2^8 - 1) c - 1] / 2
       GL_BITMAP           1            1
       GL_UNSIGNED_SHORT   2^16 - 1     (2^16 - 1) c
       GL_SHORT            2^15 - 1     [(2^16 - 1) c - 1] / 2
       GL_UNSIGNED_INT     2^32 - 1     (2^32 - 1) c
       GL_INT              2^31 - 1     [(2^32 - 1) c - 1] / 2
       GL_FLOAT            none         c
       --------------------------------------------------------

       Return values are placed in memory as follows.  If  format
       is  GL_COLOR_INDEX,  GL_STENCIL_INDEX, GL_DEPTH_COMPONENT,
       GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA,  or  GL_LUMINANCE,  a
       single value is returned and the data for the ith pixel in
       the jth row is placed in  location  (j)"width"+i.   GL_RGB
       and GL_BGR return three values, GL_RGBA and GL_BGRA return
       four values, and GL_LUMINANCE_ALPHA returns two values for
       each  pixel,  with  all  values  corresponding to a single
       pixel occupying contiguous space in pixels. Storage parameters
 set by glPixelStore(), such as GL_PACK_LSB_FIRST and
       GL_PACK_SWAP_BYTES, affect the way that  data  is  written
       into memory. See glPixelStore() for a description.

NOTES    [Toc]    [Back]

       Values for pixels that lie outside the window connected to
       the current GL context are undefined.

       If an error is generated, no change is made  to  the  contents
 of pixels.

ERRORS    [Toc]    [Back]

       GL_INVALID_ENUM  is  generated if format or type is not an
       accepted value.

       GL_INVALID_ENUM is generated if type is GL_BITMAP and format
 is not GL_COLOR_INDEX or GL_STENCIL_INDEX.

       GL_INVALID_VALUE is generated if either width or height is
       negative.

       GL_INVALID_OPERATION   is   generated   if    format    is
       GL_COLOR_INDEX and the color buffers store RGBA color components.


       GL_INVALID_OPERATION is generated if  format  is  GL_STENCIL_INDEX
 and there is no stencil buffer.

       GL_INVALID_OPERATION    is    generated   if   format   is
       GL_DEPTH_COMPONENT and there is no depth buffer.

       GL_INVALID_OPERATION is  generated  if  glReadPixels()  is
       executed between the execution of glBegin() and the corresponding
 execution of glEnd().

       GL_INVALID_OPERATION  is  generated  if  type  is  one  of
       GL_UNSIGNED_BYTE_3_3_2,        GL_UNSIGNED_BYTE_2_3_3_REV,
       GL_UNSIGNED_SHORT_5_6_5,  or   GL_UNSIGNED_SHORT_5_6_5_REV
       and format is not GL_RGB.

       GL_INVALID_OPERATION  is  generated  if  type  is  one  of
       GL_UNSIGNED_SHORT_4_4_4_4,  GL_UNSIGNED_SHORT_4_4_4_4_REV,
       GL_UNSIGNED_SHORT_5_5_5_1,  GL_UNSIGNED_SHORT_1_5_5_5_REV,
       GL_UNSIGNED_INT_8_8_8_8,      GL_UNSIGNED_INT_8_8_8_8_REV,
       GL_UNSIGNED_INT_10_10_10_2,                             or
       GL_UNSIGNED_INT_2_10_10_10_REV  and  format   is   neither
       GL_RGBA nor GL_BGRA.

       The    formats    GL_BGR,    and    GL_BGRA    and   types
       GL_UNSIGNED_BYTE_3_3_2,        GL_UNSIGNED_BYTE_2_3_3_REV,
       GL_UNSIGNED_SHORT_5_6_5,      GL_UNSIGNED_SHORT_5_6_5_REV,
       GL_UNSIGNED_SHORT_4_4_4_4,  GL_UNSIGNED_SHORT_4_4_4_4_REV,
       GL_UNSIGNED_SHORT_5_5_5_1,  GL_UNSIGNED_SHORT_1_5_5_5_REV,
       GL_UNSIGNED_INT_8_8_8_8,      GL_UNSIGNED_INT_8_8_8_8_REV,
       GL_UNSIGNED_INT_10_10_10_2,                            and
       GL_UNSIGNED_INT_2_10_10_10_REV are available only  if  the
       GL version is 1.2 or greater.

ASSOCIATED GETS    [Toc]    [Back]

       glGet() with argument GL_INDEX_MODE

SEE ALSO    [Toc]    [Back]

      
      
       glCopyPixels(3),  glPixelMap(3), glDrawPixels(3), glPixelStore(3), glPixelTransfer(3), glReadBuffer(3)



                                                 glReadPixels(3G)
[ Back ]
 Similar pages
Name OS Title
glDrawPixels Tru64 write a block of pixels to the frame buffer
gldrawpixels IRIX write a block of pixels to the frame buffer
glcopypixels IRIX copy pixels in the frame buffer
glCopyPixels Tru64 copy pixels in the frame buffer
rectwrite IRIX draws a rectangular array of pixels into the frame buffer
lrectwrite IRIX draws a rectangular array of pixels into the frame buffer
readsource IRIX sets the source for pixels that various routines read
glreadbuffer IRIX select a color buffer source for pixels
glReadBuffer Tru64 select a color buffer source for pixels
CDseekblock IRIX set read pointer for CD-ROM to start of specified block
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service