从C / JNI调用RenderScript

时间:2017-08-30 06:03:47

标签: renderscript

我希望用更高效的东西替换C atan2功能。 RenderScript确实提供atan2,包括带矢量的版本。

我发现的示例演示了如何从Java调用RenderScript。是否可以从C代码调用RS?一个例子会很棒。

由于

2 个答案:

答案 0 :(得分:1)

过去有可能,尽管NDK中的RS支持已经被删除了一段时间。它仍然可能,但即使NDK样本也不再包含RS样本。从Android 7开始,您可以尝试使用" Single Source RenderScript",描述here,这应该可以从C / C ++代码中获得。

使用RS可能会看到的效率提升是由于一些可能的原因(非常依赖于平台):

  1. RS将对您的数据集进行并行操作。在某些情况下,如果可能,您正在调用的函数(例如atan2)可以并行化操作。
  2. 您的RS代码可以在协处理器(例如GPU或DSP)上执行。
  3. RS提供的内在函数和库函数针对该平台进行了高度优化。再次使用atan2作为示例,RS核心中的函数可能比标准C库更优化,因为它可能使用协处理器,或者它可能使用特定于架构的优化实现(汇编) )。
  4. 所有这些,在RS空间(Allocation)之间将数据移回非RS代码时,您的代码可能会受到I / O命中。

答案 1 :(得分:0)

我找到了两个例子;这是我要建立和运行的那个:

https://github.com/adhere/NDKCallRenderScriptDemo

我一直在搜索C ++ API的文档,但还没有找到它。