Eu estou tentando processar um GLSurfaceView para um JPEG usando o seguinte código:
FileOutputStream image = FileIO.getInstance().writeFile("racesow/test" + this.frameNum +" .jpg"); // creates an ouputstream in external storage directory
Bitmap bitmap = Bitmap.createBitmap(640, 480, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
this.game.glView.draw(canvas); // glView is the GLSurfaceView
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, image);
image.flush();
image.close();
Eu estou executando este código depois que a cena completa foi renderizada para o surfaceview. As imagens estão sendo criadas, mas elas estão todas em preto. Alguma ideia?
Respostas:
1 para resposta № 1Isso simplesmente não é implementado (SurfaceView.draw"1
, GLSurfaceView
). Tirar screenshots usando o OpenGL requer manuseio especial, mas o draw
método não é substituído em GLSurfaceView
.
No entanto, uma vez que é uma classe aberta, você pode derivar dela e adicionar sua própria implementação de draw
com código personalizado para tirar screenshots; ou o que mais lhe convier.