Android RenderScript:与函数rsGetElementAt_uchar4不匹配

Android RenderScript:与函数rsGetElementAt_uchar4不匹配,android,renderscript,android-renderscript,Android,Renderscript,Android Renderscript,我写了很短的RS,但在gradle sync之后,Android Studio给了我一个错误 错误:(8,34)错误:没有用于调用的匹配函数 “rsGetElementAt_uchar4” 脚本: #pragma version(1) #pragma rs java_package_name(xx.xxx.xxxxxxx) uchar4 road = 0; const uchar4 nothing = 0; void init() { road.a = 0xff; } uchar4

我写了很短的RS,但在gradle sync之后,Android Studio给了我一个错误

错误:(8,34)错误:没有用于调用的匹配函数 “rsGetElementAt_uchar4”

脚本:

#pragma version(1)
#pragma rs java_package_name(xx.xxx.xxxxxxx)

uchar4 road = 0;
const uchar4 nothing = 0;

void init() {
    road.a = 0xff;
}

uchar4 __attribute__((kernel)) kernel(uchar4 original, uint32_t x, uint32_t y) {
    uchar4 masked = rsGetElementAt_uchar4(extra_alloc, x, y));
    if (original.r != masked.r || original.g != masked.g || original.b != masked.b) {
        return road;
    } else {
        return nothing;
    }
}
在build.gradle中:

defaultConfig {
    applicationId "xx.xxx.xxxxxxx"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    renderscriptTargetApi 24 // I've tried almost every possible value
    renderscriptSupportModeEnabled true
}
相同的代码,但使用API 23可以:

#pragma version(1)
#pragma rs java_package_name(gl.kid.maptilt)

uchar4 road = 0; // I don't know, how to declare uchar4, any advice?
const uchar4 nothing = 0;

void init() {
    road.a = 0xff;
}

uchar4 __attribute__((kernel)) root(uchar4 original, uchar4 masked, uint32_t x, uint32_t y) {
    if (original.r != masked.r || original.g != masked.g || original.b != masked.b) {
        return road;
    } else {
        return nothing;
    }
}

我将从一个免责声明开始,我对RenderScript知之甚少。也就是说,我认为您遵循的代码与类似,但您缺少一行:

rs_allocation extra_alloc;
注意Java中设置它的位:

script.set_extra_alloc(inAllocationExtra);

我将从一个免责声明开始,我对RenderScript知之甚少。也就是说,我认为您遵循的代码与类似,但您缺少一行:

rs_allocation extra_alloc;
注意Java中设置它的位:

script.set_extra_alloc(inAllocationExtra);

额外分配的声明在哪里?@Dave omg,我将尝试声明it@Dave是的,它成功了,idk我怎么错过了它
extra\u alloc
的声明在哪里?@Dave omg,我会尽力声明的it@Dave是的,它起作用了,idk我怎么会错过它