Я намерен обрабатывать данные RGB через RenderScript.Функциональная подпись для функции __attribute __ (kernel) и использование «OutAllocation»
Для этого я создал Отчисления в Java и передавая их функции RS Kernel, как показано ниже:
uchar3 __attribute__((kernel)) invert(uchar3 v_in, uint32_t v_out) {
v_in.r = ...;
v_in.g = ...;
v_in.b = ...;
}
Однако в идеале я хотел бы работать на v_out
подобным образом, то есть установка значений для v_out.r, v_out.g и v_out.b. В настоящее время я не могу сделать это с uint32_t v_out
.
Теперь, если я определяю выше RS ядро как:
uchar3 __attribute__((kernel)) invert(uchar3 v_in, uchar3 v_out) {
...
}
я получаю ниже ошибка компиляции времени: ошибка: Неожиданное ядро инвертировать() параметр 'v_out' типа 'uchar3 *
Пожалуйста, предложите, как это решить.
время компиляции:
error: Unexpected kernel invert() parameter 'v_out' of type 'uchar3 *'
Спасибо за ваш ответ. Эта часть работает хорошо, но я все еще не могу вернуть эти «обработанные» данные в java. Мой тестовый код (для 5 элементов) выглядит так: \t 'mScript.forEach_invert (ain, aout); \t byte [] output = {0, 0, 0, 0, 0}; \t aout.copyTo (output); ' Я что-то пропустил? – Gagan
Думаю, что это сработает. –
Да, я получил значения обратно в Java. Было несоответствие в байтах []. – Gagan