package org.jzy3d.plot3d.rendering.view;

import java.awt.image.BufferedImage;

import com.jogamp.opengl.GL;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLProfile;
import com.jogamp.opengl.glu.GLU;
import com.jogamp.opengl.util.awt.AWTGLReadBufferUtil;

public class AWTRenderer3d extends Renderer3d{
    public AWTRenderer3d() {
        super();
    }
    public AWTRenderer3d(View view, boolean traceGL, boolean debugGL, GLU glu) {
        super(view, traceGL, debugGL, glu);
    }
    public AWTRenderer3d(View view, boolean traceGL, boolean debugGL) {
        super(view, traceGL, debugGL);
    }
    public AWTRenderer3d(View view) {
        super(view);
    }

    /**
     * Uses a dedicated {@link AWTGLReadBufferUtil} to read a buffered image.
     * @see {@link getLastScreenshotImage()} to retrieve the image
     */
    @Override
    public void display(GLAutoDrawable canvas) {
        GL gl = canvas.getGL();

        if (view != null) {
            view.clear(gl);
            view.render(gl, glu);

            if (doScreenshotAtNextDisplay) {
                AWTGLReadBufferUtil screenshot = new AWTGLReadBufferUtil(GLProfile.getGL2GL3(), true);
                screenshot.readPixels(gl, true);
                image = screenshot.getTextureData();
                bufferedImage = screenshot.readPixelsToBufferedImage(gl, true);

                doScreenshotAtNextDisplay = false;
            }
        }
    }
    
    public BufferedImage getLastScreenshotImage() {
        return bufferedImage;
    }
    
    protected BufferedImage bufferedImage;

}

 

Ads help maintain this website.