com.jogamp.opengl.util

## Class GLReadBufferUtil

- java.lang.Object
- - com.jogamp.opengl.util.GLReadBufferUtil

- Direct Known Subclasses:
    AWTGLReadBufferUtil

      public class GLReadBufferUtil
      extends Object

  Utility to read out the current FB to TextureData, optionally writing the data back to a texture object.

  May be used directly to write the TextureData to file (screenshot).

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GLReadBufferUtil(boolean alpha, boolean write2Texture)`
    `GLReadBufferUtil(GLPixelBuffer.GLPixelBufferProvider pixelBufferProvider, boolean alpha, boolean write2Texture)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `dispose(GL gl)`
    `GLPixelStorageModes` | `getGLPixelStorageModes()`
    `GLPixelBuffer` | `getPixelBuffer()` Returns the `GLPixelBuffer`, created and filled by `#readPixels(GLAutoDrawable, boolean)`.
    `GLPixelBuffer.GLPixelBufferProvider` | `getPixelBufferProvider()` Returns the `GLPixelBuffer.GLPixelBufferProvider` used by this instance.
    `Texture` | `getTexture()`
    `TextureData` | `getTextureData()`
    `boolean` | `hasAlpha()`
    `boolean` | `isValid()`
    `boolean` | `readPixels(GL gl, boolean mustFlipVertically)` Read the drawable's pixels to TextureData and Texture, if requested at construction.
    `boolean` | `readPixels(GL gl, int inX, int inY, int inWidth, int inHeight, boolean mustFlipVertically)` Read the drawable's pixels to TextureData and Texture, if requested at construction.
    `void` | `rewindPixelBuffer()` rewind the raw pixel ByteBuffer
    `void` | `write(File dest)` Write the TextureData filled by `#readPixels(GLAutoDrawable, boolean)` to file

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### GLReadBufferUtil

          public GLReadBufferUtil(boolean alpha,
                          boolean write2Texture)

      Parameters:
        `alpha` - true for RGBA readPixels, otherwise RGB readPixels. Disclaimer: Alpha maybe forced on ES platforms!
        `write2Texture` - true if readPixel's TextureData shall be written to a 2d Texture

    - #### GLReadBufferUtil

          public GLReadBufferUtil(GLPixelBuffer.GLPixelBufferProvider pixelBufferProvider,
                          boolean alpha,
                          boolean write2Texture)

  - ### Method Detail

    - #### getPixelBufferProvider

          public GLPixelBuffer.GLPixelBufferProvider getPixelBufferProvider()

      Returns the `GLPixelBuffer.GLPixelBufferProvider` used by this instance.

    - #### isValid

          public boolean isValid()

    - #### hasAlpha

          public boolean hasAlpha()

    - #### getGLPixelStorageModes

          public GLPixelStorageModes getGLPixelStorageModes()

    - #### getPixelBuffer

          public GLPixelBuffer getPixelBuffer()

      Returns the `GLPixelBuffer`, created and filled by `#readPixels(GLAutoDrawable, boolean)`.

    - #### rewindPixelBuffer

          public void rewindPixelBuffer()

      rewind the raw pixel ByteBuffer

    - #### getTextureData

          public TextureData getTextureData()

      Returns:
        the resulting TextureData, filled by `#readPixels(GLAutoDrawable, boolean)`

    - #### getTexture

          public Texture getTexture()

      Returns:
        the Texture object filled by `#readPixels(GLAutoDrawable, boolean)`, if this instance writes to a 2d Texture, otherwise null.
      See Also:
        `GLReadBufferUtil(boolean, boolean)`

    - #### write

          public void write(File dest)

      Write the TextureData filled by `#readPixels(GLAutoDrawable, boolean)` to file

    - #### readPixels

          public boolean readPixels(GL gl,
                           boolean mustFlipVertically)

      Read the drawable's pixels to TextureData and Texture, if requested at construction.
      Parameters:
        `gl` - the current GL context object. It's read drawable is being used as the pixel source.
        `mustFlipVertically` - indicates whether to flip the data vertically or not. The context's drawable `GLDrawable.isGLOriented()` state is taken into account. Vertical flipping is propagated to TextureData and handled in a efficient manner there (TextureCoordinates and TextureIO writer).
      See Also:
        `GLReadBufferUtil(boolean, boolean)`

    - #### readPixels

          public boolean readPixels(GL gl,
                           int inX,
                           int inY,
                           int inWidth,
                           int inHeight,
                           boolean mustFlipVertically)

      Read the drawable's pixels to TextureData and Texture, if requested at construction.
      Parameters:
        `gl` - the current GL context object. It's read drawable is being used as the pixel source.
        `inX` - readPixel x offset
        `inY` - readPixel y offset
        `inWidth` - optional readPixel width value, used if [1 .. drawable.width], otherwise using drawable.width
        `inHeight` - optional readPixel height, used if [1 .. drawable.height], otherwise using drawable.height
        `mustFlipVertically` - indicates whether to flip the data vertically or not. The context's drawable `GLDrawable.isGLOriented()` state is taken into account. Vertical flipping is propagated to TextureData and handled in a efficient manner there (TextureCoordinates and TextureIO writer).
      See Also:
        `GLReadBufferUtil(boolean, boolean)`

    - #### dispose

          public void dispose(GL gl)

Copyright 2010 JogAmp Community.