Renderscript: Как выделить массив uchar4
В моем коде Android я сохраняю массив цветов, который хотел бы использовать в своем коде рендеринга:
for(int col = 0; col < imgWidth; col++){
const uchar4 colour = *(const uchar4*)rsGetElementAt(colours, col, 0);
if (in.r == colour.r && in.g == colour.g && in.b == colour.b){
in.r = 255;
in.g = 0;
in.b = 0;
break;
} else {
in.r = 0;
in.g = 255;
in.b = 0;
}
}
return in;
В общем, если пиксель является одним из цветов в массиве, включите его в красный цвет. Проблема в том, что я пытаюсь выделить массив пикселей. В РС у меня есть:
rs_allocation colours;
int imgWidth;
а в яве у меня есть:
Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap myBitmap = Bitmap.createBitmap(pickedPanels.size(), 1, conf);
myBitmap.setPixels(myInts, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(),0);
final RenderScript rs = RenderScript.create(this);
// The input image.
final Allocation input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
// The output image.
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptC_singlesource script = new
ScriptC_singlesource(rs);
// The array of colours.
final Allocation pixels = Allocation.createFromBitmap(rs, myBitmap, Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
script.set_image(pixels);
script.set_imgWidth(pickedPanels.size());
script.forEach_root(input, output);
// retrieve output
output.copyTo(bitmap);
ImageView destim = (ImageView) findViewById (dest);
destim.setDrawingCacheEnabled(true);
destim.setImageBitmap(bitmap);
Я читал, что у вас не может быть более 2 распределений. Итак, я предполагаю, что это моя проблема. Итак, я хочу попробовать прочитать цвета как uchar4*, но я не могу найти пример того, как это сделать.