Мне нужно получить изображение токовой поверхности активации с 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
Как получить рамный буфер на поверхности окна активности тока на стороне графического процессора без копии? ⇐ Android
Форум для тех, кто программирует под Android
1745225641
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79571786/how-to-get-the-frame-buffer-of-current-activitys-window-surface-on-gpu-side-wit[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия