処理された画像をOpenGL ESで保存するために、以下のコードを作成しました。それはうまくいく。その後androidのglReadPixels()による24ビットカラー情報の取得方法
ByteBuffer bb = ByteBuffer.allocate(mWidth * mHeight * 4);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL_RGBA, GL_UNSIGNED_BYTE, bb);
try {
TJCompressor tjCompressor = new TJCompressor(bb.array(), 0, 0, mWidth, 0, mHeight, TJ.PF_RGB);
tjCompressor.setJPEGQuality(100);
tjCompressor.setSubsamp(TJ.SAMP_444);
return tjCompressor.compress(0);
} catch (Exception e) {
e.printStackTrace();
}
、メモリおよび処理時間を節約するためのアルファチャンネルなし24ビットの色情報を取得するために次のように、Iは、ライン#1と符号の#2を変更しました。
ByteBuffer bb = ByteBuffer.allocate(mWidth * mHeight * 3);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL_RGB, GL_UNSIGNED_BYTE, bb);
そしてさらに、IはMGL(GL10インスタンス)のEGLConfigでEGL_ALPHA_SIZE
を除去します。 GLUtils.texImage2D()メソッドが呼び出されたときに内部フォーマットパラメータとしてGLES20.GL_RGB
を渡しました。
しかし、結果は何か問題があることを示しています。結果画像は黒色で、glReadPixels()
メソッド呼び出し後にbb
バッファーのデータをチェックしたところ、すべてのデータがゼロであることがわかりました。私は助言が必要です。ヘルプ、plz。コアGLES2で
詳細はお返事ありがとうございます。私はそれが他のいくつかのデバイスで正常に動作することを発見しました。 –