Возвращение структуры Renderscript из ядра Renderscript
618 просмотра
2 ответа
Я ищу, чтобы вернуть массив структуры из моего ядра Renderscript. Моя проблема в том, что, хотя я могу создать массив структуры в java, используя сгенерированный код, и передать его моему корневому методу, получив распределение массива, сгенерированного из этого, я не могу вернуть массив обратно в java. В документации Renderscript говорится, что для копирования из выделения используется метод copyTo, который обеспечивает завершение работы над ним. Однако этот метод поддерживает только float, int, byte, bitmap. Даже после ожидания нескольких секунд, прежде чем получить доступ к массиву, чтобы убедиться, что отрисовка завершена, данные в распределении выходных данных вообще не изменяются, поэтому мне интересно, правильно ли я подхожу к этому.
Любая помощь на всех приветствуется
Изменить для уточнения:
Я создаю массив моей структуры в Java со следующим
ScriptField_NBody bodys = ScriptField_NBody.create1D(mRS, size, Allocation.USAGE_SCRIPT);
ScriptField_NBody outBodys = new ScriptField_NBody(mRS, 1);
Затем я вызываю функцию Renderscript после заполнения тела
nBodyScript.forEach_root(bodys.getAllocation(), outBodys.getAllocation())
Мой рендер должен просто скопировать bodys в outBodys
void root(const NBody_t *v_in, NBody_t *v_out, uint32_t x) {
*v_out = *v_in;
}
Вернувшись в Java, я теперь хочу получить доступ к outBodies (из кода отладки я знаю, что моя функция рендеринга читает данные и копирует их нормально). Однако я не могу использовать стандартный метод copyTo для функции outBodys.getllocation (), поскольку она может принимать только значения float, int, bytes и bitmaps, а объект outBodies не обновляется из выделения самостоятельно. Обратите внимание, что NBody_t - это структура, которую я определил в файле рендеринга.
Автор: John Lampitt Adey Источник Размещён: 13.11.2019 11:33Ответы (2)
1 плюс
RenderScript в настоящее время не отражает метод для копирования значений из определенной пользователем структуры в Java. У нас действительно есть только методы, которые работают с примитивным Java и векторными типами. Распределение по-прежнему может использоваться другими ядрами или функциями на стороне скрипта.
Автор: Stephen Hines Размещён: 17.10.2013 07:430 плюса
На самом деле вы должны использовать метод copy1DRangeToUnchecked класса Allocation. Вы можете скопировать его в свой собственный ByteBuffer и десериализовать его самостоятельно.
Автор: Martin Kosicky Размещён: 29.07.2016 07:24Вопросы из категории :
- android Насколько хорошо отражает эмулятор Android Phone?
- android Как сохранить состояние активности Android с помощью сохранения состояния экземпляра?
- android Android: доступ к дочерним представлениям из ListView
- android Как вызвать SOAP веб-сервис на Android
- android Как вы форматируете дату и время в Android?
- android Android: Получение имени файла с камеры?
- android Перезапуск активности при ротации Android
- android Проблема с нехваткой памяти при загрузке изображения в растровый объект
- android Отправьте приложение с базой данных
- android Как удалить контакт программно в Android
- renderscript Возвращение структуры Renderscript из ядра Renderscript
- renderscript Ошибка библиотеки поддержки Proguard + RenderScript
- renderscript Как заставить работать Android Render Script Group?
- renderscript Цепь 2: встроенные функции Renderscript: Blur & ColorMatrix
- renderscript Почему не обновляется код Renderscript, если я не удаляю свое приложение между каждым изменением в моих файлах .rs?
- renderscript образец Renderscript запускается на GPU
- renderscript Сбой RenderScript при создании ScriptC
- renderscript Использование Renderscript с com.android.library - скрипты генерируются неправильно
- renderscript Список устройств, на которых не работает Renderscript
- renderscript Android: импортировать скрипт рендеринга в затмение