2017-09-06 112 views
0

我已經寫的很短的RS,但gradle這個同步的Android工作室給我之後錯誤的renderScript:不匹配功能rsGetElementAt_uchar4

Error:(8, 34) error: no matching function for call to '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; 
    } 
} 
+0

哪裏是'extra_alloc'的聲明? – Dave

+0

@Dave omg,我會試着宣佈它 –

+0

@Dave是的,它的工作,idk我是如何錯過它的 –

回答

2

我將從一份聲明開始,對RenderScript不太瞭解。這麼說,我想你跟着類似this question代碼,但你缺少行:

rs_allocation extra_alloc; 

注意在Java中,位在那裏設置:

script.set_extra_alloc(inAllocationExtra);