siDDis Skrevet 6. mai 2008 Del 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.... Lenke til kommentar
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å