siDDis Skrevet 6. mai 2008 Skrevet 6. mai 2008 Eg prøver å få til offscreen rendering med JOGL. Eg bruker eksempelet som finnes her: http://en.wikipedia.org/wiki/Java_OpenGL Så har eg gjort nokre endringer i 2 metoder. Den første er run metoden i JavaDia klassen: public void run() { GLCapabilities caps = new GLCapabilities(); caps.setHardwareAccelerated(true); GLPbuffer offscreenPBuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, new DefaultGLCapabilitiesChooser(), 640, 480, null); offscreenPBuffer.addGLEventListener( new JavaRenderer() ); offscreenPBuffer.display(); offscreenPBuffer.removeGLEventListener(new JavaRenderer()); offscreenPBuffer.destroy(); System.exit(0); } Så etter gl.glEnd(); i display metoden i JavaRenderer klassen så har eg lagt til dette. gl.glReadBuffer(GL.GL_BACK); gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, 1); int width = 640; int height = 480; ByteBuffer pixelsRGB = BufferUtil.newByteBuffer(640 * 480 * 3); gl.glReadPixels(0, // GLint x 0, // GLint y 640, // GLsizei width 480, // GLsizei height GL.GL_RGB, // GLenum format GL.GL_UNSIGNED_BYTE, // GLenum type pixelsRGB); // GLvoid *pixels int[] pixelInts = new int[640 * 480]; // Convert RGB bytes to ARGB ints with no transparency. Flip image vertically by reading the // rows of pixels in the byte buffer in reverse - (0,0) is at bottom left in OpenGL. int p = width * height * 3; // Points to first byte (red) in each row. int q; // Index into ByteBuffer int i = 0; // Index into target int[] int w3 = width * 3; // Number of bytes in each row for (int row = 0; row < height; row++) { p -= w3; q = p; for (int col = 0; col < width; col++) { int iR = pixelsRGB.get(q++); int iG = pixelsRGB.get(q++); int iB = pixelsRGB.get(q++); pixelInts[i++] = 0xFF000000 | ((iR & 0x000000FF) << 16) | ((iG & 0x000000FF) << 8) | (iB & 0x000000FF); } } BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); bufferedImage.setRGB(0, 0, width, height, pixelInts, 0, width); //rotateT += 0.2f; try { File file =new File("test.png"); javax.imageio.ImageIO.write(bufferedImage, "PNG", file); } catch (Exception e) {} Alt eg får er ein svart bakgrunn. Det eg ikkje heilt forstår er det der med bufferedImage.setRGB() Den fungerer liksom ikkje....
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå