title: Java OpenGL draw offscreen buffer to image
body: <p>I'm trying to write a java opengl (JOGL) method that writes to an offscreen drawable and then writes that to an image. I have verified this works when using an onscreen drawable as well as GLP buffers, but the output image in its current state is just solid black. The code is below.</p>
  
  <pre><code>GLProfile glp = GLProfile.getDefault();
  GLCapabilities caps = new GLCapabilities(glp);
  caps.setOnscreen(false);
  
  // create the offscreen drawable
  GLDrawableFactory factory = GLDrawableFactory.getFactory(glp);
  GLOffscreenAutoDrawable drawable = factory.createOffscreenAutoDrawable(null,caps,null,width,height);
  drawable.display();
  drawable.getContext().makeCurrent();
  
  // a series of x/y coordinates
  FloatBuffer buffer = generateData();
  
  GL2 gl = drawable.getGL().getGL2();
  
  // use pixel coordinates
  gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
  gl.glLoadIdentity();    
  gl.glOrtho(0d, width, height, 0d, -1d, 1d);
  
  // draw some points to the drawable
  gl.glPointSize(4f);
  gl.glColor3f(1f,0f,0f);    
  gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
  gl.glVertexPointer(2, GL2.GL_FLOAT, 0, buffer);
  gl.glDrawArrays(GL2.GL_POINTS, 0, numPoints);
  
  BufferedImage im = new AWTGLReadBufferUtil(drawable.getGLProfile(), false).readPixelsToBufferedImage(drawable.getGL(), 0, 0, width, height, true /* awtOrientation */);
  ImageIO.write(im,"png",new File("im.png"));
  </code></pre>