KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to take a screenshot of Android OpenGL. The code I found is as follows: nt size = width * height; ByteBuffer buf = ByteBuffer.allocateDirect(size * 4); buf.order(ByteOrder.nativeOrder()); glContext.glReadPixels(0, 0, width, height, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, buf); int data[] = new int[size]; buf.asIntBuffer().get(data); buf = null; Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); bitmap.setPixels(data, size-width, -width, 0, 0, width, height); data = null; short sdata[] = new short[size]; ShortBuffer sbuf = ShortBuffer.wrap(sdata); bitmap.copyPixelsToBuffer(sbuf); for (int i = 0; i < size; ++i) { //BGR-565 to RGB-565 short v = sdata[i]; sdata[i] = (short) (((v&0x1f) << 11) | (v&0x7e0) | ((v&0xf800) >> 11)); } sbuf.rewind(); bitmap.copyPixelsFromBuffer(sbuf); try { FileOutputStream fos = new FileOutputStream("/sdcard/screeshot.png"); bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); } catch (Exception e) { // handle } I tried also a code from that site link text In each case the result is a png file which is completely black. I found there is some problem with glReadPixels method but I don't know how to bypass it.
Tags (comma-separated)
Save Edits
Cancel