This function extracts single components of the pixel information from the
topmost window.

```
rgl.pixels(component = c("red", "green", "blue"),
viewport = par3d("viewport"), top = TRUE)
```

## Arguments

- component
Which component(s)?

- viewport
Lower left corner and size of desired region.

- top
Whether to bring window to top before reading.

## Details

The possible components are `"red"`

, `"green"`

, `"blue"`

,
`"alpha"`

, `"depth"`

, and `"luminance"`

(the sum of the three
colors). All are scaled from 0 to 1.

Note that the luminance is kept below 1 by truncating the sum; this is the
definition used for the `GL_LUMINANCE`

component in OpenGL.

## Value

A vector, matrix or array containing the desired components. If one component
is requested, a vector or matrix will be returned depending on the size of
block requested (length 1 dimensions are dropped); if more, an array, whose last dimension
is the list of components.

## See also

`rgl.snapshot`

to write a copy to a file,
`demo("stereo")`

for functions that make use of this to draw
a random dot stereogram and an anaglyph.

## Examples

```
example(surface3d)
#>
#> srfc3d> #
#> srfc3d> # volcano example taken from "persp"
#> srfc3d> #
#> srfc3d>
#> srfc3d> z <- 2 * volcano # Exaggerate the relief
#>
#> srfc3d> x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
#>
#> srfc3d> y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
#>
#> srfc3d> zlim <- range(z)
#>
#> srfc3d> zlen <- zlim[2] - zlim[1] + 1
#>
#> srfc3d> colorlut <- terrain.colors(zlen) # height color lookup table
#>
#> srfc3d> col <- colorlut[ z - zlim[1] + 1 ] # assign colors to heights for each point
#>
#> srfc3d> open3d()
#> glX
#> 120
#>
#> srfc3d> surface3d(x, y, z, color = col, back = "lines")
depth <- rgl.pixels(component = "depth")
if (length(depth) && is.matrix(depth)) # Protect against empty or single pixel windows
contour(depth)
```