android - 是否可以访问 RenderScript 内核中的更多元素? [安卓]

标签 android performance c99 renderscript android-renderscript

我想从 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进去,即one Allocation的元素。是否可以访问和操作多个元素?就像展开一个循环,例如,从 Bitmap 中提取 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;

}

关于android - 是否可以访问 RenderScript 内核中的更多元素? [安卓],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342889/

相关文章:

java - Android Studio 使用 Icon 设置准确的闹钟

c# - 具有大量几何图形的 WPF 绘图性能

javascript - 用于在 javascript 中存储对象的类型化数组

将编译时常量字符串与字符代码来自#define 的字符连接起来

c - printf 的正确用法是什么来显示用 0 填充的指针

c - 在C99中用静态变量初始化静态变量

android - 检查音频流

java - 在 Java 中将字符串日期格式化为不同的格式

java - onclicklistener 事件的空指针异常

Javascript:比较运算符中操作数的顺序