私はスクリーンショットをキャプチャするためにOpenGLレンダリング方法を使用しています。しかし、NEXUS 7でピクセル情報を読み取るには7〜8秒かかります。私はこのコードを使用してピクセル情報を読み取り、ビットマップとして保存しています。OpenGLのスクリーンショットはAndroidであまりにも多くの時間を取っていますか?
public Bitmap grabPixels(GL10 mGL) {
final int mWidth = mViewWidth;
final int mHeight = mViewHeight;
IntBuffer ib = IntBuffer.allocate(mWidth * mHeight);
IntBuffer ibt = IntBuffer.allocate(mWidth * mHeight);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for (int i = 0; i < mHeight; i++) {
for (int j = 0; j < mWidth; j++) {
ibt.put((mHeight - i - 1) * mWidth + j, ib.get(i * mWidth + j));
}
}
Bitmap mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(ibt);
return mBitmap;
}
ピクセル情報の読み取り速度を上げてビットマップに変換するにはどうすればよいですか?あなたが別のスレッドにglReadPixels()
を呼び出すことはできません
時間のかかるコマンドを測定しましたか?ピクセルを読み込むか、ビットマップを保存しますか? – BDL
@BDLビットマップの保存に時間がかかりすぎる 次のコードの実行に時間がかかり過ぎる - for(int i = 0; i
私は「なぜアンドロイドに画像を保存するのに時間がかかるのですか?」という質問を編集し、OpenGL-esのすべてのものを無関係なものとして編集します。人々はすぐにOpenGLの知識が必要でないことをすぐに理解しているため、より高い関心を引くことができます。 (これは単なる推薦です) – BDL