问题标签 [renderscript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9996 浏览

android - 使用渲染脚本将相机 YUV 数据转换为 ARGB

我的问题是:我在 Android 中设置了一个摄像头,并使用 onPreviewFrame-listener 接收预览数据,该监听器向我传递了一个 byte[] 数组,其中包含默认 android YUV 格式的图像数据(设备不支持 R5G6B5-格式)。每个像素由 12 位组成,这使得事情有点棘手。现在我想做的是将 YUV 数据转换为 ARGB 数据,以便用它进行图像处理。这必须使用渲染脚本来完成,以保持高性能。

我的想法是在一个元素中传递两个像素(即 24 位 = 3 个字节),然后返回两个 ARGB 像素。问题是,在 Renderscript 中,一个 u8_3(一个 3 维 8 位向量)以 32 位存储,这意味着最后 8 位未使用。但是当将图像数据复制到分配中时,所有的 32 位都被使用了,所以最后 8 位丢失了。即使我使用 32 位输入数据,最后 8 位也没用,因为它们只有 2/3 像素。当定义一个包含 3 字节数组的元素时,它实际上具有 3 个字节的实际大小。但是 Allocation.copyFrom() 方法没有用数据填充 in-Allocation,认为它没有正确的数据类型来填充字节 []。

renderscript 文档指出,有一个 ScriptIntrinsicYuvToRGB 应该在 API 级别 17 中完全做到这一点。但实际上该类不存在。我已经下载了 API Level 17,尽管它似乎不再可下载。有没有人有任何关于它的信息?有没有人尝试过 ScriptIntrinsic?

所以总而言之,我的问题是:如何快速将相机数据转换为 ARGB 数据,硬件加速?

这就是在 Dalvik VM 中执行此操作的方法(在网上某处找到代码,它可以工作):

0 投票
2 回答
1196 浏览

android - 为预蜂窝构建渲染脚本

我有一个 targetVersion 为 16 的项目,我正在使用 SherlockActionBar 和 support-library 来支持 API 级别 8。我正在尝试将CarouselView集成到我的项目中。我计划将 CarouselView 用于支持的版本,将 pageViewer 用于其他版本。我正在使用 Jetbrains IDEA 进行开发。通常我可以使用 IDEA 毫无问题地构建和部署我的应用程序。但是我无法使用 android-tools 构建应用程序。产生的错误在底部。

在调查错误时,我意识到 renderscript 尝试使用 api-level 8 进行编译。我查看了 %sdk.dir%\tools\ant\build.xml 并看到 renderscript 目标使用 project.minSdkVersion 作为 targetApi。这是一个错误还是什么?

-代码生成:

[mergemanifest] 找到已删除的目标文件 [mergemanifest] 将 AndroidManifest 文件合并为一个。[mergemanifest] 清单合并已禁用。仅使用项目清单。[echo] 处理aidl 文件... [aidl] 没有要编译的AIDL 文件。[echo] ---------- [echo] 处理 RenderScript 文件... [renderscript] 找到 1 个 RenderScript 文件。 [renderscript] 使用 -target-api 8 编译 1 个 RenderScript 文件[renderscript] 优化级别:0 [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:236:14:错误:包含向量的结构维度 3 无法在此 API 级别导出:'carouselPlane' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:242: 17:错误:无法在此 API 级别导出包含维度 3 向量的结构:'carouselCylinder' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel \carousel.rs:254:21:错误:无法在此 API 级别导出包含维度 3 向量的结构:'cardVertices' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\ pozitron\teb\customwidgets\carousel\carousel.rs:262:26: 错误:无法在此 API 级别导出包含维度 3 向量的结构:'camera' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs :1503:20: 错误:无法在此 API 级别导出包含维度 3 向量的结构:'p' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\ customwidgets\carousel\carousel.rs:1045:9:错误:无法在此 API 级别导出包含维度 3 向量的结构:'ray' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src \com\pozitron\teb\customwidgets\carousel\carousel.rs:1092:9:错误:无法在此 API 级别导出包含维度 3 向量的结构:'ray' [llvm-rs-cc.exe] D:\项目 [llvm-rs-cc.exe] ects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:1503:20: 错误:包含维度为 3 c [llvm-rs-cc.exe] 的向量的结构不能在此 API 级别导出:'p' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron \teb\customwidgets\carousel\carousel.rs:1781:17:错误:无法在此 API 级别导出包含维度 3 向量的结构:'ray'

BUILD FAILED D:\Android\android-sdk\tools\ant\build.xml:645:执行此行时出现以下错误:D:\Android\android-sdk\tools\ant\build.xml:665: null返回:1

编辑:正如 Selvin 建议的那样,我从旧版本中复制了 renderscript 文件夹和 llvm-rs-cc.exe。现在我收到以下错误:

0 投票
1 回答
1076 浏览

android - android中的动态壁纸渲染脚本背景图像

我是渲染脚本的新手。我正在浏览动态壁纸应用程序。

现在的问题是我没有得到我的背景图片(动态壁纸中的静态背景)。

我附上下面的代码。

提前致谢。

LiveWallpaperView 文件

动态壁纸.rs

后台方法在根方法中调用,然后在同一个类中调用。

LiveWallpaperRS.java

最后我在我的 LiveWallpaperService 类中调用了它

0 投票
1 回答
342 浏览

android - 获取 RenderScript 进度

我正在使用 forEach_root 方法在 Android 上计算图像。

这很好用,但是,由于可能存在大量数据(需要处理超过 1800 万像素),因此可能需要一些时间。是否有可能获得 RenderScript forEach-loop 的当前进程?

0 投票
1 回答
157 浏览

android - 如何针对 Android 平台优化代码?

我是一名 iOS 开发人员,我正在考虑进入 Android 开发。

在 Objective-C 中,我习惯于使用inline指令和低级代码来优化和调整特定的热点(例如图像处理)。

我如何在 Android 中做同样的事情?答案是Renderscript吗?Renderscript 是否与所有 Android 设备兼容?

至少,我是否可以指定某些方法应该被内联以节省极其、极其紧凑的循环中的过程调用?

0 投票
1 回答
282 浏览

android - 用Java解码数据

我想从 ICS 上的渲染脚本中检索数据。

我使用以下脚本发送数据:

我使用以下方法在 java 中接收数据:

mData 是一个 int 数组。

如何将其转换为所需的类型?例如一个双精度数组。

0 投票
0 回答
161 浏览

android - Android RenderScript 不显示纹理

我对 RenderScript 有疑问。我绑定的纹理不会显示在 Surface 上。我在 LogCat 或控制台中没有收到任何错误或相关说明。我使用 WallPaperService.Engine。我在 ProgramFragments 中绑定位图让它显示在 rsgBindProgramFragment 中。我在几个教程中也遇到了这个问题。Bitmap、ProgramFragments 等永远不会为空。当我阻止将位图绑定到 RenderScript 时,将显示点而不是纹理。我已经尝试了几种解码位图的方法,而不是以非常小的分辨率压缩位图。我认为在这里发布整个代码是没有意义的。请索取片段。我在这个问题上工作了大约一周。我非常感谢解决问题的每一个建议。我在 Galaxy S3 上测试该解决方案。

0 投票
2 回答
1004 浏览

java - 无法运行简单的渲染脚本数学函数

我正在尝试获取一个简单的渲染脚本函数来获取两个数字,将它们相加并返回结果,但是我还没有找到一个示例项目来顺利完成这项工作。当我尝试加载文件时,我不断收到一个奇怪的错误:

我得到错误:

我的 .rs 文件很简单:

有谁知道这意味着什么,或者如果有一个简单的项目我可以为 Android ICS 下载,然后它可以进行数学运算,而不是实际的渲染?

(我可以让渲染脚本文件工作,但这不是我想要的。我不想要任何图形)

编辑今天我试图让它运行,并得到以下问题:

我收到错误消息:对于类型 ScriptC_RenderScript 的 forEach_root 方法未定义 .java 文件中没有 forEach_root 函数,即使在我清理项目后它仍然不存在。

是否有一个简单的项目可以下载,只需一个数学函数即可下载?

0 投票
3 回答
4286 浏览

android - filterscript 文档在哪里(以及如何使用它)?

一个月前 Jelly Bean 4.2 发布时,Filterscript 也发布了。它似乎是一种语言,它是具有不同文件扩展名的 Renderscript 的下标。这就是我对语言的所有了解。

我已经阅读了整个 Internet 上存在的关于 Filterscript 的两个总段落,并.fs使用.pragma rs_fp_relaxed.rs

我的ADT是最新的公版(21.0.0),对Filterscript来说似乎太低了。 tools.android.com似乎有 21.0.1 Preview,但在发行说明中没有提到 Filterscript(实际上它只是一个错误修复版本)。任何地方都没有文档!

如何使用过滤器脚本?它的文档在哪里?

我试过的:

https://www.google.com/search?q=filterscript+site:android.com&tbs=li:1

http://developer.android.com/about/versions/android-4.2.html#Renderscript

http://developer.android.com/tools/sdk/eclipse-adt.html#notes

http://tools.android.com/recent/2101preview1

0 投票
1 回答
1553 浏览

android - 为渲染脚本分配大位图(android)

我尝试在 android renderscript 中制作简单的图像过滤器,它确实适用于小图像。但是out of memory error,例如,我得到的照片与用相机拍摄的照片一样大(尽管对于小图像,一切都很好)。我知道我的代码有点糟糕(主要是从这里复制的),所以任何关于如何在大位图上进行渲染脚本计算的提示都值得赞赏。这是调用 rs 的代码:

这是我认为与 rendescript 文件本身相关的内容:

我确实知道我不能真正将这么大的位图加载到内存中(我可以将文件加载到 imageView 中吗?),而且我之前使用过 inJustDecodeBounds 来处理它。但是在这里我不知道如何以及在哪里使用它,我不想调整位图的大小(我想处理原始文件并保存相同大小的修改文件)