2017-01-04 4 views
0

Я пытаюсь запустить простой Renderscript пример, но я получаю следующее сообщение об ошибке:Renderscript: не ошибка со смертельным исходом RS, индекс Foreach ядра находится вне границ

01-03 16:10:04.723 25608-28248/com.testing.android E/RenderScript_jni: non fatal RS error, The forEach kernel index is out of bounds 

Код, который вызывает это вопрос:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_img_name); 

ScriptC_test test = new ScriptC_test(mRS); 
Allocation in = Allocation.createFromBitmap(mRS, bitmap); 
Allocation out = Allocation.createTyped(mRS, in.getType()); 

test.forEach_grayscale(in, out); 
out.copyTo(bitmap); 

Мой файл RS выглядит следующим образом:

#pragma version(1) 
#pragma rs java_package_name(com.testing.android) 

uchar4 RS_KERNEL grayscale(uchar4 pixelIn, uint32_t x, uint32_t y) { 
    uchar grayscale = (pixelIn.r + pixelIn.g + pixelIn.b)/3; // simple average 

    uchar4 pixelOut; 
    pixelOut.a = pixelIn.a; 
    pixelOut.r = grayscale; 
    pixelOut.g = grayscale; 
    pixelOut.b = grayscale; 

    return pixelOut; 
} 

кто-нибудь есть идея, что может быть неправильно с кодом выше?

Спасибо!

ответ

0

Я исправил эту проблему, перейдя из библиотеки поддержки (android.support.v8.rendscript) в собственную библиотеку (android.rderscript).

Если кто знает, почему это имеет значение, сообщите мне об этом!

+0

Вы используете Android Studio? Что такое build.gradle для вашего проекта? –

+0

Да, я использую Android Studio. Прежде чем пытаться использовать библиотеку поддержки, я добавил renderscriptTargetApi 18 и renderscriptSupportModeEnabled true в defaultConfig в build.gradle. –

+0

Иногда вам могут помочь новые Build-Tools, а также попробовать Build -> Clean Project. –

Смежные вопросы