- Renderscript
- Android — RenderScript
- Как работает RenderScript
- Как начать
- Ядро RenderScript
- Использование Renderscript на android-устройствах с процессорами Intel®
- 1. Технология Renderscript внутри Android
- 2. Dalvik vs. Renderscript в монохромной обработке изображения
- 3. Оптимизация renderscript
- 4. Зависимость времени работы dalvik и renderscript реализаций от размеров изображений
- Заключение
- Как создать скрипты Renderscript на Android Studio и заставить их работать?
- Задний план
- Проблема
- Что я пробовал
- Вопрос
Renderscript
Renderscript — отдельная технология для работы с графикой и 3D на низком уровне, способная быстро работать с изображениями.
Признаться, предварительное знакомство с Renderscript оставило меня в недоумении. Сама Google не так много говорит об этой технологии — примеров раз, два и обчёлся. Кроме того, с версии Android 16 там что-то поменяли, и все старые примеры из интернета, которые я хотел изучить, пошли коту под хвост — Eclipse стал ругаться, что все эти классы и методы устарели.
Я так и не понял, стоит ли интересоваться данной технологией дальше или не обращать на неё внимания. Даже документация написана как-то неряшливло и непонятно. А примеры из документации у меня даже не заработали как надо, пришлось самостоятельно разбираться и исправлять ляпы в проекте. Поэтому оставлю статью с заделом на будущее. Может потом вернёмся к этой теме.
Разработка с использованием Renderscript немного отличается от создания обычного приложения. Создайте новый проект для API 16 и выше. Разметка для основной активности:
Далее в в папке src/имя_пакета создайте новый файл с расширением rs, например, mono.rs следующего содержания:
Данный файл является скриптом перевода цветного изображения в черно-белый. Во второй строчке в скобках нужно указать свой пакет. Когда вы сохраните данных документ, то в папке res/raw появится файл mono.bc. Не обращаем на него внимания, трогать не надо.
Теперь откроем класс активности и напишем код:
Источник
Android — RenderScript
В этой главе мы узнаем об Android RenderScript. Обычно приложения на Android спроектированы так, чтобы потреблять как можно меньше ресурсов. Но некоторые приложения, такие как 3D-игры, требуют высокоуровневой обработки на Android.
Для обеспечения этих приложений высокой производительностью Android представил RenderScript. Это основанный на Android фреймворк, который используется для запуска приложений, которые выполняют очень сложные вычислительные задачи. Разработка на этой основе осуществляется в Native Development Kit (NDK), предоставляемом Android. RenderScript чрезвычайно полезен для приложений, которые выполняют следующие типы действий:
- 3D-рендеринг
- Обработка изображения
- Вычислительная фотография
- Компьютерное зрение
Как работает RenderScript
Основа RenderScript в основном основана на параллельных вычислениях данных. Он распределяет нагрузку приложения на все процессоры, доступные на вашем устройстве, такие как многоядерные процессоры или графические процессоры.
Такое параллельное распределение рабочей нагрузки освобождает программиста от напряжения балансировки нагрузки и планирования работы. Вы можете написать более подробные и сложные алгоритмы для своего приложения, не беспокоясь о вычислительной мощности.
Как начать
Для использования RenderScript Framework у вас должно быть две вещи:
- Ядро RenderScript
- API RenderScript
Ядро RenderScript
Ядро — это программа, которая управляет инструкциями по обработке данных и управляет рабочей нагрузкой на центральных процессорах. Ядро является фундаментальной частью операционной системы.
Точно так же, чтобы запустить среду RenderScript, нам нужен письменный скрипт с именем Kernel, чтобы управлять всеми запросами на обработку данных из нашего приложения и использовать больше функций ОС Android, предоставляемых NDK, и, как упоминалось ранее, разработка RenderScript выполняется в Native. Комплект разработчика Android.
Сценарий ядра написан на языке C-99 языка Си. Этот стандарт был до разработки C ++. Файл сценария ядра RenderScript обычно помещается в файл .rs . Каждый файл называется скриптом. Сценарий RenderScript Kernel может содержать следующие элементы:
Sr.No | Элементы и описание | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
300×512 | 600×1024 | 1200×1024 | 1200×2048 | |
dalvik | 85 | 353 | 744 | 1411 |
renderscript | 75 | 99 | 108 | 227 |
выигрыш | 1.13 | 3.56 | 6.8 | 6.2 |
Заметим линейную зависимость времени для dalvik относительно размера изображения в отличие от renderscript. Это отличие можно объяснить наличием времени инициализации renderscript-контекста.
Для изображений сравнительно малых размеров выигрыш несущественный, т.к. время инициализации renderscript-контекста около 50-60 мсек. Однако на изображениях средних размеров, которые чаще всего используются на android-устройствах, выигрыш составляет 4-6x.
Заключение
В статье были рассмотрены dalvik и renderscript реализации монохромной обработки изображений разных размеров. За счет распараллеливания, компиляторной оптимизации и нативного исполнения кода renderscript солидно превосходит dalvik в производительности для изображений средних размеров. Этим небольшим примером я старался показать, когда renderscript может стать помощником повышения производительности приложений, которые при этом останутся аппаратно-независимыми.
Источник
Как создать скрипты Renderscript на Android Studio и заставить их работать?
Задний план
Я хочу исследовать создание сценариев Renderscript на Android и Renderscript в целом, и за последний год Android-Studio стала единственной средой разработки, которую Google поддерживает для разработки приложений Android.
Проблема
Для этого я нашел несколько веб-сайтов:
- https://developer.android.com/guide/topics/renderscript/compute.html#writing-an-rs-kernel
- Как использовать библиотеку поддержки Renderscript с Gradle
- http://developer.android.com/guide/topics/renderscript/compute.html
- https://futurestud.io/blog/how-to-use-the-renderscript-support-library-with-gradle-based-android-projects/
- http://developer.android.com/guide/topics/renderscript/advanced.html
Дело в том, что все обучающие программы и образцы, которые я видел, предназначены для Eclipse, и они говорят, что все, что мне нужно сделать, это создать файл «rs» в «сырой» папке (также в папке «src», в Той же папке в файле «MainActivity.java»), и он будет автоматически генерировать необходимые файлы Java для меня, имея префикс «ScriptC_».
Но это не работает для меня.
Что я пробовал
Я создал файл из некоторого образца, который я нашел (для Eclipse) под названием «julia.rs». Вот код:
В java-файле я хотел получить доступ к вновь созданному файлу, поэтому начал писать «ScriptC» и ожидал, что он заполнит необходимые дополнительные символы, но это не так.
Я не могу, например, использовать этот фрагмент кода:
Я также попытался добавить поддержку Renderscript для старых версий Android, но это, конечно же, не помогло:
Еще одна вещь, которую я пробовал, – это использовать папку New-> Folder-> RenderScript через контекстное меню приложения, но затем я получил эту ошибку:
Вопрос
Каков правильный способ создания и запуска сценария Renderscript на Android-Studio?
EDIT: К сожалению, у меня опять такая же проблема, и на этот раз установка renderscriptTargetApi на 18 не помогает. Я также пробовал другие проекты с Renderscript здесь и здесь , но у обоих одинаковые проблемы:
Теперь я добавил щедрость, чтобы решить эту проблему раз и навсегда.
Единственной модификацией, которую должен был успешно построить проект, является изменение значения renderscriptTargetApi с 22 на 18. В противном случае компиляция скриптов Renderscript создает промежуточные файлы, которые используют 64-битный ABI, который процесс сборки не связывает с прекомпилированными промежуточными продуктами в инструментах сборки 22.0.01, которые используют 32-битный ABI.
ОБНОВЛЕНИЕ: по состоянию на сентябрь 2015 г. новая версия средств сборки (23.0.0) не работает с библиотекой поддержки Renderscript, так что вам нужно ее отключить или вернуть инструменты до 22.0.01.
Создание приложений для Android с помощью renderscript внутри сильно отличается от создания обычного приложения для Android. Приятно видеть, что вы получили эту работу в конце 🙂 Для всех, кто хочет поиграть с источником, его можно найти в github: https://github.com/carlemil/JuliaLiveWallpaper и два других проекта rs, над которыми я работал : https://github.com/carlemil/alw.plasma и https://github.com/carlemil/alw.eld, и если вы хотите увидеть их в действии, я получил их в google play: https: / /play.google.com/store/apps/developer?id=Erbsman
Это было исправлено в модуле gradle-plugin 2.1.0 и Build-Tools 23.0.3. Используйте следующий код:
ОБНОВЛЕНИЕ: Если появляется ошибка «Gradle version 2.10 required», НЕ изменяйте
Вместо этого обновите поле distributionUrl файла Project \ gradle \ wrapper \ gradle-wrapper.properties, чтобы
И измените « Файл»> «Настройки»> «Сборка», «Выполнение», «Развертывание»> «Инструменты сборки»> «Градл»> «Градл», чтобы использовать упаковку градиента по умолчанию в соответствии с «Gradle Version 2.10». Ошибка .
Источник