是否可以访问 RenderScript 内核中的更多元素? [Android]
Is it possible to access more Elements in RenderScript kernel? [Android]
我想从 RenderScript 中的一个分配访问更多元素。让我们从 Google:
中获取示例代码
uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {
uchar4 out = in;
out.r = 255 - in.r;
out.g = 255 - in.g;
out.b = 255 - in.b;
return out;
}
取一个uchar4进去,也就是一个的Allocation元素。是否可以访问和操作多个元素?就像从位图中展开一个循环,例如 8 个像素。
谢谢。
您编写的内核只允许根据当前像素数据操作当前像素 (x,y)。为了访问相邻像素,您需要将分配内定义为全局分配,然后通过 rsGetElementAt_uchar4() 访问相邻像素。仅供说明,请参见下面的示例。
rs_allocation in;
uchar4 __attribute__((kernel)) doCalc(uint32_t x, uint32_t y) {
uchar4 out;
uchar4 same= rsGetElementAt_uchar4(in, x,y);
uchar4 top= rsGetElementAt_uchar4(in, x,y-1);
uchar4 left= rsGetElementAt_uchar4(in, x-1,y);
uchar4 right= rsGetElementAt_uchar4(in, x+1,y);
// (...)
out.r= // do whatever you want with same.r, top.r, left.r etc
out.g= // do whatever you want with same.g, top.g, left.g etc
out.b=...
out.a=255;
return out;
}
我想从 RenderScript 中的一个分配访问更多元素。让我们从 Google:
中获取示例代码uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {
uchar4 out = in;
out.r = 255 - in.r;
out.g = 255 - in.g;
out.b = 255 - in.b;
return out;
}
取一个uchar4进去,也就是一个的Allocation元素。是否可以访问和操作多个元素?就像从位图中展开一个循环,例如 8 个像素。
谢谢。
您编写的内核只允许根据当前像素数据操作当前像素 (x,y)。为了访问相邻像素,您需要将分配内定义为全局分配,然后通过 rsGetElementAt_uchar4() 访问相邻像素。仅供说明,请参见下面的示例。
rs_allocation in;
uchar4 __attribute__((kernel)) doCalc(uint32_t x, uint32_t y) {
uchar4 out;
uchar4 same= rsGetElementAt_uchar4(in, x,y);
uchar4 top= rsGetElementAt_uchar4(in, x,y-1);
uchar4 left= rsGetElementAt_uchar4(in, x-1,y);
uchar4 right= rsGetElementAt_uchar4(in, x+1,y);
// (...)
out.r= // do whatever you want with same.r, top.r, left.r etc
out.g= // do whatever you want with same.g, top.g, left.g etc
out.b=...
out.a=255;
return out;
}