Class 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).

    • Method Detail

      • isValid

        public boolean isValid()
      • hasAlpha

        public boolean hasAlpha()
        Returns true if the OpenGL read data contains alpha. This value is lazily determined after the first call of readPixels
      • 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)