问题标签 [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.
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 中执行此操作的方法(在网上某处找到代码,它可以工作):
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。现在我收到以下错误:
android - android中的动态壁纸渲染脚本背景图像
我是渲染脚本的新手。我正在浏览动态壁纸应用程序。
现在的问题是我没有得到我的背景图片(动态壁纸中的静态背景)。
我附上下面的代码。
提前致谢。
LiveWallpaperView 文件
动态壁纸.rs
后台方法在根方法中调用,然后在同一个类中调用。
LiveWallpaperRS.java
最后我在我的 LiveWallpaperService 类中调用了它
android - 获取 RenderScript 进度
我正在使用 forEach_root 方法在 Android 上计算图像。
这很好用,但是,由于可能存在大量数据(需要处理超过 1800 万像素),因此可能需要一些时间。是否有可能获得 RenderScript forEach-loop 的当前进程?
android - 如何针对 Android 平台优化代码?
我是一名 iOS 开发人员,我正在考虑进入 Android 开发。
在 Objective-C 中,我习惯于使用inline
指令和低级代码来优化和调整特定的热点(例如图像处理)。
我如何在 Android 中做同样的事情?答案是Renderscript吗?Renderscript 是否与所有 Android 设备兼容?
至少,我是否可以指定某些方法应该被内联以节省极其、极其紧凑的循环中的过程调用?
android - 用Java解码数据
我想从 ICS 上的渲染脚本中检索数据。
我使用以下脚本发送数据:
我使用以下方法在 java 中接收数据:
mData 是一个 int 数组。
如何将其转换为所需的类型?例如一个双精度数组。
android - Android RenderScript 不显示纹理
我对 RenderScript 有疑问。我绑定的纹理不会显示在 Surface 上。我在 LogCat 或控制台中没有收到任何错误或相关说明。我使用 WallPaperService.Engine。我在 ProgramFragments 中绑定位图让它显示在 rsgBindProgramFragment 中。我在几个教程中也遇到了这个问题。Bitmap、ProgramFragments 等永远不会为空。当我阻止将位图绑定到 RenderScript 时,将显示点而不是纹理。我已经尝试了几种解码位图的方法,而不是以非常小的分辨率压缩位图。我认为在这里发布整个代码是没有意义的。请索取片段。我在这个问题上工作了大约一周。我非常感谢解决问题的每一个建议。我在 Galaxy S3 上测试该解决方案。
java - 无法运行简单的渲染脚本数学函数
我正在尝试获取一个简单的渲染脚本函数来获取两个数字,将它们相加并返回结果,但是我还没有找到一个示例项目来顺利完成这项工作。当我尝试加载文件时,我不断收到一个奇怪的错误:
我得到错误:
我的 .rs 文件很简单:
有谁知道这意味着什么,或者如果有一个简单的项目我可以为 Android ICS 下载,然后它可以进行数学运算,而不是实际的渲染?
(我可以让渲染脚本文件工作,但这不是我想要的。我不想要任何图形)
编辑今天我试图让它运行,并得到以下问题:
我收到错误消息:对于类型 ScriptC_RenderScript 的 forEach_root 方法未定义 .java 文件中没有 forEach_root 函数,即使在我清理项目后它仍然不存在。
是否有一个简单的项目可以下载,只需一个数学函数即可下载?
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
android - 为渲染脚本分配大位图(android)
我尝试在 android renderscript 中制作简单的图像过滤器,它确实适用于小图像。但是out of memory error
,例如,我得到的照片与用相机拍摄的照片一样大(尽管对于小图像,一切都很好)。我知道我的代码有点糟糕(主要是从这里复制的),所以任何关于如何在大位图上进行渲染脚本计算的提示都值得赞赏。这是调用 rs 的代码:
这是我认为与 rendescript 文件本身相关的内容:
我确实知道我不能真正将这么大的位图加载到内存中(我可以将文件加载到 imageView 中吗?),而且我之前使用过 inJustDecodeBounds 来处理它。但是在这里我不知道如何以及在哪里使用它,我不想调整位图的大小(我想处理原始文件并保存相同大小的修改文件)