2016-12-13 7 views
1

компилировать Renderscript код для Android API16 +Функция renderscript Android установлена ​​как ядро ​​автоматически, как ее избежать?

У меня есть функция сценария:

void setBuffers(uchar *y, uchar *u, uchar *v){ 
... 
} 

С этим я хочу установки внутренних указателей (распределение) в сценарий. Но компилятор рассматривает все функции с параметрами указателя, как будто они имеют атрибут RS_KERNEL, и делает его функцией ядра, с кодом Java, сгенерированным как forEach_setBuffers, или жалуется, что y должен быть int (true для ядер).

Я предполагаю, что этот режим авто-ядра был добавлен как упрощение, так что нам не нужно отмечать функции в скриптах. Ницца.

Но мне нужно сделать функцию invokable так, чтобы код Java содержал invoke_setBuffers. Как это сделать?

ответ

0

У вас не может быть invokable, который принимает указатели, поэтому происходит «ярлык» этого, помеченного как ядро. Если у вас есть функция, которая принимает указатели, но не нуждается в отражении в Java, вы можете пометить ее «static», чтобы убедиться, что она не рассматривается как ядро. Для получения фактических данных о распределении из Java вы должны сделать этот invokable вместо аргументов «rs_allocation».