Estoy tratando de tomar una captura de pantalla de Android OpenGL.Toma de captura de pantalla de Android OpenGL
El código que he encontrado es la siguiente:
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
}
me trataron también un código de ese sitio link text
En cada caso, el resultado es un archivo PNG que es completamente negro. Encontré que hay algún problema con el método glReadPixels
pero no sé cómo eludirlo.
estoy consiguiendo colores erroneal con este solución, por ejemplo, los colores amarillos están pintados de azul ... ¿? cómo resolverlo por favor? – NullPointerException
@ Gordon ¿Cómo inicializas gl? – XXX