Как получить рамный буфер на поверхности окна активности тока на стороне графического процессора без копии?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как получить рамный буфер на поверхности окна активности тока на стороне графического процессора без копии?

Сообщение Anonymous »

Мне нужно получить изображение токовой поверхности активации с 30-60 кадров в секунду и использовать его в качестве источника текстуры в Opengl ES для рендеринга. Поверхность окна непосредственно без копии в Android?public static void request(@NonNull Window source, @Nullable Rect srcRect,
@NonNull Bitmap dest, @NonNull OnPixelCopyFinishedListener listener,
@NonNull Handler listenerThread) {
validateBitmapDest(dest);
final Rect insets = new Rect();
final Surface surface = sourceForWindow(source, insets);
request(surface, adjustSourceRectForInsets(insets, srcRect), dest, listener,
listenerThread);
}

private static void validateBitmapDest(Bitmap bitmap) {
// TODO: Pre-check max texture dimens if we can
if (bitmap == null) {
throw new IllegalArgumentException("Bitmap cannot be null");
}
if (bitmap.isRecycled()) {
throw new IllegalArgumentException("Bitmap is recycled");
}
if (!bitmap.isMutable()) {
throw new IllegalArgumentException("Bitmap is immutable");
}
}

private static Surface sourceForWindow(Window source, Rect outInsets) {
if (source == null) {
throw new IllegalArgumentException("source is null");
}
if (source.peekDecorView() == null) {
throw new IllegalArgumentException(
"Only able to copy windows with decor views");
}
Surface surface = null;
final ViewRootImpl root = source.peekDecorView().getViewRootImpl();
if (root != null) {
surface = root.mSurface;
final Rect surfaceInsets = root.mWindowAttributes.surfaceInsets;
outInsets.set(surfaceInsets.left, surfaceInsets.top,
root.mWidth + surfaceInsets.left, root.mHeight + surfaceInsets.top);
}
if (surface == null || !surface.isValid()) {
throw new IllegalArgumentException(
"Window doesn't have a backing surface!");
}
return surface;
}


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

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

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

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

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

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

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