Android opengl es glreadpixels () сохраняет черное изображение в галерее, даже если предварительный просмотр в порядкеAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android opengl es glreadpixels () сохраняет черное изображение в галерее, даже если предварительный просмотр в порядке

Сообщение Anonymous »

Я работаю над проектом Android, используя OpenGL ES (и Tencent's Tebeautykit), чтобы создать предварительный просмотр камеры с фильтрами красоты. Предварительный просмотр отображается с использованием пользовательского glcameraxView. < /p>
Я называю Glreadpixels () внутри очереди, чтобы захватить кадр -буфер после вызова Glfinish () для обеспечения завершения рендеринга.public void captureBitmapAsync(OnBitmapCapturedListener listener) {
queueEvent(() -> {
GLES20.glFinish(); // Ensure all rendering is done

int width = getWidth();
int height = getHeight();
int size = width * height;

ByteBuffer buffer = ByteBuffer.allocateDirect(size * 4);
buffer.order(ByteOrder.nativeOrder());
GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer);

int[] data = new int[size];
buffer.asIntBuffer().get(data);

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.setPixels(data, size - width, -width, 0, 0, width, height);

Matrix matrix = new Matrix();
matrix.preScale(1.0f, -1.0f); // Flip vertically
Bitmap correctedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);
bitmap.recycle();

post(() -> listener.onBitmapCaptured(correctedBitmap));
});
}

< /code>
✅ То, что я пробовал:
обеспечить glfinish () вызывается до glreadpixels (). < /p>
Правильно проверенные предварительные просмотр. Ошибки. Предварительный просмотр рамки от OpenGL и сохраните его в виде изображения, чтобы он появлялся, как показано в предварительном просмотре камеры (не черный)?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ugh-previe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»