Android 可以访问RenderScript内核中的更多元素吗?[安卓]

Android 可以访问RenderScript内核中的更多元素吗?[安卓],android,performance,c99,renderscript,android-renderscript,Android,Performance,C99,Renderscript,Android Renderscript,我想从RenderScript中的一个分配中访问更多元素。让我们以谷歌的示例代码为例: 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,谁是分配的一个元素。是否可以访问和

我想从RenderScript中的一个分配中访问更多元素。让我们以谷歌的示例代码为例:

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,谁是分配的一个元素。是否可以访问和管理多个元素?例如,使用位图中的8个像素展开循环


谢谢。

您编写的内核只允许根据当前像素数据操作当前像素x,y。为了访问相邻像素,您需要将In分配定义为全局分配,然后通过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;

}

您编写的内核只允许基于当前像素数据操纵当前像素x,y。为了访问相邻像素,您需要将In分配定义为全局分配,然后通过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;

}

谢谢你的支持!谢谢你的支持!