问题标签 [android-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 - Renderscript 的行为不一致
我写了以下渲染脚本:
当我运行该脚本时,我进入了 logcat:
这让我很惊讶,因为所有的curve_?t?
指针都应该是空的,我没有在 Java 代码中绑定它们。这很奇怪,所以我修改了脚本的调试部分,我得到了:
logcat 中的结果是:
out2
是 1,curve_hts
NULL 也是。没有out3
日志,if
指令没有被调用,那么如何out_s
改变它的值呢?
android - Renderscript ScriptC 编译阻塞主线程
我正在开发一个使用自定义 RenderScript 脚本进行图像处理的应用程序。现在,因为我有很多这些脚本在使用,所以我在应用程序第一次启动时预加载它们。“预加载”是指我实例化每个脚本,以便它可以在设备上编译。下面是这个操作的代码片段。大约有 60 个脚本,但我认为这足以说明操作。
如您所见,我在后台线程上执行此操作。问题是脚本似乎无论如何都在主线程上编译。问题是他们阻止了用户界面。我已经用 AsyncTask 和 Service 进行了尝试,结果相同。我怀疑 RenderScript 在内部跳转到主线程来编译它们。
现在,在 Android Nougat (7.0) 之前,根据设备速度,预加载相同数量的脚本需要不到 10 秒的时间。在 Nougat 上,它需要将近一分钟,考虑到它会阻塞 UI,这是一个巨大的问题,尽管只是在第一个应用程序启动时。在随后的每次启动中,它都会在几秒钟内预加载(因为脚本已经编译)。
我需要预加载,因为按需实例化脚本不是一种选择,因为一旦用户开始使用应用程序,所有脚本都必须准备好并编译。
logcat的相关部分:
此外,如果相关,我在第一次应用程序启动时使用 RenderScript.ContextType.PROFILE,在每次后续启动时使用 RenderScript.ContextType.NORMAL。使用 RenderScript.ContextType.DEBUG 会导致脚本在每个应用程序启动时编译,所花费的时间与其他上下文相同,并且 logcat 输出略有不同:
build.gradle 的相关部分:
我搜索了有关 RenderScript 内部工作的文档和信息,但它真的很稀缺,因为大部分内部工作都由设备供应商自行决定。
所以我的问题是:是否可以强制 RenderScript 在后台线程上编译脚本,而不会阻塞 UI。
任何帮助表示赞赏。
android-ndk - Android NDK r14 是否支持 Renderscript?
我正在尝试构建和使用原生代码中的 RenderScript 的 android 应用程序。我想知道哪些版本的 NDK 支持 RenderScript API?
我在 NDK r14 中找不到 RenderScript 头文件,但它们在 r10e 版本之前一直存在。
NDK 不再支持 RenderScript 吗?如果支持它,我在哪里可以找到它的 API 的一些示例?
谢谢!
android - 优化行和列单元格的渲染脚本总和
在优化以下代码方面有什么建议吗?代码首先对图像进行灰度、反转然后阈值处理(代码不包括在内,因为它很简单)。然后它对每一行和每一列的元素求和(所有元素都是 1 或 0)。然后它找到具有最高值的行和列的行和列索引。
该代码应该找到图像的质心并且它可以工作,但我想让它更快
我正在为 API 23 开发,因此不能使用缩减内核。
Java 片段:
Renderscript.rs 片段:
任何帮助,将不胜感激
android - Android Camera2 Renderscript 过热问题
我有这个过热问题,运行几个小时后它会关闭我的手机。我想 24/7 全天候运行,请帮助我改进:
我使用 Camera2 接口,RAW 格式后跟渲染脚本将 YUV420888 转换为 rgba。我的渲染脚本如下:
这是我调用渲染脚本转换为 rgba 的地方:
这是使用 OpenCV 运行图像处理的回调:
整个过程以〜22fps的速度运行。我仔细检查过,没有内存泄漏。但是即使在屏幕关闭的情况下运行一段时间后,手机也会变得非常热,并自行关闭。请注意,如果我删除图像处理部分,问题仍然存在。这有什么问题?我可以打开手机相机应用程序并让它运行几个小时而不会出现问题。
- 渲染脚本会导致热量吗?
- 22fps会导致热量吗?也许我应该减少它?
- Android后台服务会不会发热?
谢谢。
ps:我在完全支持Camera2接口的LG G4上测试了这个。
android - Android,来自 SupportLibrary 的 RenderScript 和 java.lang.NoClassDefFoundError
我想使用 SupportLibrary 中的 RenderScript 来创建模糊效果。
为此,我从这里找到了解决方案 https://stackoverflow.com/a/14988991/408780
问题是, rs = RenderScript.create(myAndroidContext) 导致 java.lang.NoClassDefFoundError ,我不知道出了什么问题。
根据https://developer.android.com/reference/android/support/v8/renderscript/ScriptIntrinsicBlur.html ScriptIntrinsicBlur 在版本 23 中添加。
所以我只是在应用程序 gradle 中添加了以下几行:
我还尝试了如下所述的 renderscriptTargetApi 21 https://github.com/react-native-community/react-native-blur/issues/110#issuecomment-272956182
但仍然没有成功。有什么建议么?
也许一些额外的信息:
minSdk = 14,targetSdk = 19,compileSdk = 25
先感谢您。
java - android renderscript ScriptIntrinsicColorMatrix setRGBtoYUV 示例用法
正如标题所说,如何使用 ScriptIntrinsicColorMatrix 将位图 RGB 转换回 YUV byte[]?下面是示例代码(不能被zxing解码):
我注意到的一件事是原始相机 YUV 字节为 3110400 字节,但在使用 ScriptIntrinsicColorMatrix 转换后变为 8294400,我认为这是错误的。
YUV -> BW -> YUV 的原因是我想将图像转换为黑白(不是灰度)并返回 YUV 以进行 zxing 解码,同时在 Surfaceview 中显示黑白(如自定义相机滤镜) .
尝试了下面的代码,但它有点慢(可以通过 zxing 解码)。
RGB 到 YUV 的任何其他快速替代方案?如果 ScriptIntrinsicColorMatrix 类无法完成?
谢谢,麻烦您了
android - 为什么在 API 级别 23 或更高级别删除 RenderScript 图形?没有 GLSL 的替代 FragmentShader 解决方案?
Android RenderScript 图形子系统从 API23 及以上版本中移除:
https://developer.android.com/guide/topics/renderscript/reference/rs_graphics.html
这是否意味着 renderscript 不再是 VertexShader/FragmentShader 解决方案的替代品?这是否意味着 renderscript 将不再使用 OpenGL/GPU 进行计算?
弃用下的决定是什么?
在 Android 平台上是否有任何没有 GLSL 的替代 FragmentShader 解决方案?
android-things - Android Things 是否支持 RenderScript 计算?
我知道 Android Things 支持 NDK。我找不到说明 Android Things 是否支持 RenderScript Compute 的参考。我的假设是否定的(因为并非所有的 Things 平台都会有合适的 GPU),但我希望人们可能已经尝试过,或者知道 RenderScript Compute 是否适用于 Android Things。
java - Android:动态创建掩码
在我的 android 应用程序中,我有一辆车,用户可以从中单击并选择不同的面板。图像相对复杂(与此处粘贴的图像相反),因此很难将按钮覆盖在正确的位置。此外还有很多不同的图像。我想尝试的解决方案:
- 使用此处建议的颜色掩码检测选择了哪个面板:https ://blahti.wordpress.com/2012/06/26/images-with-clickable-areas/
- 根据选择的面板(在我的示例中为蓝色和绿色)生成蒙版。
- 根据面罩的不同,在汽车上覆盖一层红色 - 只需一个彩色滤光片就可以了。
(第一个图像代表用于确定单击哪个面板的颜色,第二个图像代表生成的掩码,最后一个图像代表“结果”)。
我遇到的唯一问题是:如何动态创建蒙版?我想过使用填充类型的方法来创建一个带有所选面板的“蒙版”的新画布。但是,我担心它可能计算量太大。有更简单的建议吗?[
更新:好的,所以我已经走了很远。正如预期的那样,蒙版的创建时间太长(小图像需要 2-4 秒)。但是,后来我发现了 RenderScripts!!我想我仍然可以让它工作。我现在唯一的小问题是:我如何传递已按下的颜色?
我当前的代码如下所示:
这是脚本:
但是,当我尝试从 myBitmap(或脚本中的图像)读取像素值时,RGB 始终为 0。
(对不起命名不好等。我一直在疯狂地试图弄清楚这一点)