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

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

glCopyPixels(3G)

Contents


NAME    [Toc]    [Back]

       glCopyPixels - copy pixels in the frame buffer

SYNOPSIS    [Toc]    [Back]

       void glCopyPixels(
               GLint x,
               GLint y,
               GLsizei width,
               GLsizei height,
               GLenum type );

PARAMETERS    [Toc]    [Back]

       Specify the window coordinates of the lower left corner of
       the rectangular region of pixels to  be  copied.   Specify
       the  dimensions  of the rectangular region of pixels to be
       copied. Both must be nonnegative.  Specifies whether color
       values,  depth values, or stencil values are to be copied.
       Symbolic constants GL_COLOR, GL_DEPTH, and GL_STENCIL  are
       accepted.

DESCRIPTION    [Toc]    [Back]

       glCopyPixels() copies a screen-aligned rectangle of pixels
       from the specified frame buffer location to a region relative
 to the current raster position. Its operation is well
       defined only if the entire pixel source region  is  within
       the  exposed portion of the window. Results of copies from
       outside the window, or from regions of the window that are
       not exposed, are hardware dependent and undefined.

       x  and  y specify the window coordinates of the lower left
       corner of the rectangular region to be copied.  width  and
       height specify the dimensions of the rectangular region to
       be copied. Both width and height must not be negative.

       Several parameters control the  processing  of  the  pixel
       data  while  it  is being copied. These parameters are set
       with  three  commands:  glPixelTransfer,  glPixelMap,  and
       glPixelZoom.  This reference page describes the effects on
       glCopyPixels() of most, but not  all,  of  the  parameters
       specified by these three commands.

       glCopyPixels()  copies  values  from  each  pixel with the
       lower left-hand 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 copied in row order  from
       the  lowest to the highest row, left to right in each row.

       type specifies whether color, depth, or stencil data is to
       be  copied. The details of the transfer for each data type
       are as follows: Indices or RGBA colors are read  from  the
       buffer  currently specified as the read source buffer (see
       glReadBuffer). If the GL is  in  color  index  mode,  each
       index  that  is  read  from  this buffer is converted to a
       fixed-point  with an unspecified number  of  bits  to  the
       right of the binary point. Each index is then shifted left
       by GL_INDEX_SHIFT bits, and added to  GL_INDEX_OFFSET.  If
       GL_INDEX_SHIFT  is negative, the shift is to the right. In
       either case, zero  bits  fill  otherwise  unspecified  bit
       locations  in  the  result.  If  GL_MAP_COLOR is true, the
       index is replaced with the value  that  it  references  in
       lookup   table  GL_PIXEL_MAP_I_TO_I.  Whether  the  lookup
       replacement of the index is done or not, the integer  part
       of the index is then ANDed with 2^b-1, where b is the number
 of bits in a color index buffer.

              If the GL is in RGBA mode, the  red,  green,  blue,
              and alpha components of each pixel that is read are
              converted  to  an  internal  floating-point    with
              unspecified  precision.  The  conversion  maps  the
              largest representable component value to  1.0,  and
              component  value  0 to 0.0. The resulting floatingpoint
  color  values   are   then   multiplied   by
              GL_c_SCALE  and added to GL_c_BIAS, where c is RED,
              GREEN, BLUE, and ALPHA  for  the  respective  color
              components.  The  results  are clamped to the range
              [0,1]. If GL_MAP_COLOR is true, each  color  component
   is  scaled  by  the  size  of  lookup  table
              GL_PIXEL_MAP_c_TO_c, then  replaced  by  the  value
              that it references in that table.  c is R, G, B, or
              A.

              If the GL_ARB_imaging extension is  supported,  the
              color  values  may  be  additionally  processed  by
              color-table lookups, color-matrix  transformations,
              and convolution filters.

              The  GL then converts the resulting indices or RGBA
              colors to fragments by attaching the current raster
              position  z  coordinate  and texture coordinates to
              each pixel, then assigning window coordinates (x[r]
              +  i , y[r] + j), where (x[r], y[r]) is the current
              raster position, and the pixel was the ith pixel in
              the jth row. These pixel fragments are then treated
              just like the fragments  generated  by  rasterizing
              points,  lines,  or polygons. Texture mapping, fog,
              and all the fragment operations are applied  before
              the  fragments  are  written  to  the frame buffer.
              Depth values are read from  the  depth  buffer  and
              converted  directly  to  an internal floating-point
              with unspecified precision. The resulting floatingpoint
   depth   value   is   then   multiplied   by
              GL_DEPTH_SCALE  and  added  to  GL_DEPTH_BIAS.  The
              result is clamped to the range [0,1].

              The GL then converts the resulting depth components
              to fragments by attaching the current raster  position
  color  or color index and texture coordinates
              to each pixel, then  assigning  window  coordinates
              (x[r]  +  i  , y[r] + j), where (x[r], y[r]) is the
              current raster position, and the pixel was the  ith
              pixel  in  the  jth  row. These pixel fragments are
              then treated just like the fragments  generated  by
              rasterizing  points,  lines,  or  polygons. Texture
              mapping, fog, and all the fragment  operations  are
              applied  before  the  fragments  are written to the
              frame buffer.  Stencil indices are  read  from  the
              stencil  buffer and converted to an internal fixedpoint
 with an unspecified number  of  bits  to  the
              right  of  the binary point. Each fixed-point index
              is then shifted left by  GL_INDEX_SHIFT  bits,  and
              added to GL_INDEX_OFFSET. If GL_INDEX_SHIFT is negative,
 the shift is to the right. In  either  case,
              zero  bits fill otherwise unspecified bit locations
              in the result. If GL_MAP_STENCIL is true, the index
              is  replaced  with  the value that it references in
              lookup  table  GL_PIXEL_MAP_S_TO_S.   Whether   the
              lookup replacement of the index is done or not, the
              integer part of the index is then ANDed with 2  sup
              b  -1, where b is the number of bits in the stencil
              buffer. The  resulting  stencil  indices  are  then
              written  to  the stencil buffer such that the index
              read from the ith location of the jth row is  written
 to location (x[r] + i , y[r] + j), where (x[r],
              y[r]) is the current  raster  position.   Only  the
              pixel  ownership  test,  the  scissor test, and the
              stencil writemask affect these write operations.

       The rasterization described thus far  assumes  pixel  zoom
       factors  of  1.0.   If glPixelZoom is used to change the x
       and y pixel zoom factors, pixels are  converted  to  fragments
  as  follows.  If (x[r], y[r]) is the current raster
       position, and a given pixel is in the ith location in  the
       jth  row of the source pixel rectangle, then fragments are
       generated for pixels whose centers are  in  the  rectangle
       with corners at (x[r] + zoom[x]^ i, y[r] + zoom[y] j)

       and (x[r] + zoom[x] (i + 1), y[r] + zoom[y] ( j + 1 ))

       where zoom[x] is the value of GL_ZOOM_X and zoom[y] is the
       value of GL_ZOOM_Y.

EXAMPLES    [Toc]    [Back]

       To copy the color pixel in the lower left  corner  of  the
       window to the current raster position, use glCopyPixels(0,
       0, 1, 1, GL_COLOR);

NOTES    [Toc]    [Back]

       Modes specified by glPixelStore() have no  effect  on  the
       operation of glCopyPixels().

ERRORS    [Toc]    [Back]

       GL_INVALID_ENUM  is  generated  if type is not an accepted
       value.

       GL_INVALID_VALUE is generated if either width or height is
       negative.

       GL_INVALID_OPERATION  is generated if type is GL_DEPTH and
       there is no depth buffer.

       GL_INVALID_OPERATION is generated if  type  is  GL_STENCIL
       and there is no stencil buffer.

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

ASSOCIATED GETS    [Toc]    [Back]

       glGet() with argument GL_CURRENT_RASTER_POSITION
       glGet() with argument GL_CURRENT_RASTER_POSITION_VALID

SEE ALSO    [Toc]    [Back]

      
      
       glColorTable(3),  glConvolutionFilter1D(3), glConvolutionFilter2D(3), glDepthFunc(3),  glDrawBuffer(3),  glDrawPixels(3),   glMatrixMode(3),   glPixelMap(3),  glPixelTransfer(3), glPixelZoom(3),  glRasterPos(3),  glReadBuffer(3),
       glReadPixels(3), glSeparableFilter2D(3), glStencilFunc(3)



                                                 glCopyPixels(3G)
[ Back ]
 Similar pages
Name OS Title
glReadPixels Tru64 read a block of pixels from the frame buffer
glDrawPixels Tru64 write a block of pixels to the frame buffer
gldrawpixels IRIX write a block of pixels to the frame buffer
glreadpixels IRIX read a block of pixels from 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
glcopyteximage2dext IRIX copy pixels into a 2D texture image
glcopyteximage2d IRIX copy pixels into a 2D texture image
glCopyTexImage1D Tru64 copy pixels into a 1D texture image
glcopytexsubimage3dext IRIX copy pixels into a 3D texture subimage
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service