Articles of renderscript

RenderScript支持库在x86设备上崩溃

我正在使用x86设备Razor i上运行android.support.v8.renderscript.* FATAL EXCEPTION。 如果我使用android.renderscript.* ,问题就会消失android.renderscript.* ARM设备也没有问题。 这是例外: 03-03 18:35:26.009 25011-25011/com.example.app E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.MainActivity}: android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]: 143 cannot locate ‘__strlen_chk’… at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2153) at android.app.ActivityThread.access$700(ActivityThread.java:137) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5031) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) […]

加载RS jni库时出错:UnsatisfiedLinkError:无法加载RSSupport:findLibrary返回null

将RenderScript与支持库一起使用时,我在Motorola iRazr(Android 4.1.2)上出现此错误 Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn’t load RSSupport: findLibrary returned null 三星Galaxy S3上的一切正常。 Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap); RenderScript rs = RenderScript.create(ctx); ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap); Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap); theIntrinsic.setRadius(BLUR_RADIUS); theIntrinsic.setInput(tmpIn); theIntrinsic.forEach(tmpOut); tmpOut.copyTo(outputBitmap); 我使用的支持库jar是 build-tools/19.0.1/renderscript/lib/renderscript-v8.jar 任何帮助深表感谢。 编辑: 我将这些文件复制到libs文件夹中并validation了so文件是否在设备上的data / data / lib文件夹中。 librsjni.so和libRSSupport.so存在于设备上…… 编辑: […]

加载ScriptC脚本失败 – android渲染脚本

这个问题已经讨论了好几次,但是我无法让它发挥作用。 我试过构建工具v23,甚至没有编译,所以我转移到编译脚本代码的21版本。 ScriptC_rotator类现在在app \ build \ generated \ source \ rs \ debug \ com \ models中生成。 但是,现在我得到运行时’加载ScriptC脚本’。 不知道如何解决这个问题。 public Bitmap rotate(Bitmap bitmap) { Bitmap target = null; try { RenderScript rs = RenderScript.create(activity); ScriptC_rotator script = new ScriptC_rotator(rs); // this is where the error occur. script.set_inWidth(bitmap.getWidth()); script.set_inHeight(bitmap.getHeight()); Allocation sourceAllocation = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); […]

RenderScript错误地操作内核的输出

我正在尝试使用Android的RenderScript在图像后面渲染一个半透明的圆圈,但是从RenderScript内核返回一个值时会出现问题。 这是我的内核: #pragma version(1) #pragma rs java_package_name(be.abyx.aurora) // We don’t need very high precision floating points #pragma rs_fp_relaxed // Center position of the circle int centerX = 0; int centerY = 0; // Radius of the circle int radius = 0; // Destination colour of the background can be set here. float destinationR; float destinationG; […]

Renderscript支持库存在问题

我正在尝试在API 16及更高版本的设备上使用Android Renderscript支持库,遵循此处描述的步骤。 到目前为止事情并不顺利。 我的Renderscript代码如下所示。 #pragma version(1) #pragma rs java_package_name(com.xxx.renderscript.test) #include “rs_time.rsh” rs_script flipScript; rs_allocation gIn; rs_allocation gOut; int width; int height; int direction = 0; void root(uchar4 *v_out, const void *usrData, uint32_t x, uint32_t y) { if(direction == 0) { // flip horizontally const uchar4 *element = rsGetElementAt(gIn, width – x, y); float4 color […]

渲染脚本渲染比Android上的OpenGL渲染要慢得多

背景: 我想根据Android相机应用程序的代码添加实时filter。 但Android相机应用程序的架构基于OpenGL ES 1.x. 我需要使用着色器来自定义我们的filter实现。 但是,将相机应用程序更新为OpenGL ES 2.0非常困难。 然后我必须find一些其他方法来实现实时filter而不是OpenGL。 经过一些研究,我决定使用渲染脚本。 问题: 我已经通过渲染脚本编写了一个简单filter的演示。 它表明fps远低于OpenGL实现它。 大约5 fps vs 15 fps。 问题: Android官方异地说:RenderScript运行时将并行处理设备上可用的所有处理器(如多核CPU,GPU或DSP)的工作,使您可以专注于expression算法而不是调度工作或负载平衡。 那为什么渲染脚本实现较慢? 如果渲染脚本不能满足我的要求,有没有更好的方法? 代码详情: 嗨,我和提问者在同一个团队中。 我们想要编写一个基于渲染脚本的实时滤镜相机。 在我们的测试演示项目中,我们使用了一个简单的filter:添加了覆盖filterScriptC脚本的YuvToRGB IntrinsicScript。 在OpenGL版本中,我们将相机数据设置为纹理,并使用着色器执行image-filter-procss。 喜欢这个: GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureYHandle); GLES20.glUniform1i(shader.uniforms.get(“uTextureY”), 0); GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, mTextureWidth, mTextureHeight, GLES20.GL_LUMINANCE, GLES20.GL_UNSIGNED_BYTE, mPixelsYBuffer.position(0)); 在RenderScript版本中,我们将相机数据设置为Allocation,并使用script-kernals执行image-filter-procss。 喜欢这个: // The belowing code is from onPreviewFrame(byte[] data, Camera […]

如果USAGE_SHARED,则启用GPU的驱动程序上的Renderscript失败

我们使用renderscript进行音频dsp处理。 它很简单,并且对我们的用例显着提高了性能。 但是,在具有启用GPU执行的自定义驱动程序的设备上, USAGE_SHARED遇到了令人讨厌的问题。 您可能知道, USAGE_SHARED标志使USAGE_SHARED分配重用给定的内存,而不必创建它的副本。 因此,它不仅可以节省内存,在我们的情况下,可以将性能提高到所需的水平。 以下代码与USAGE_SHARED在默认的libRSDriver.so驱动程序( libRSDriver.so )上正常工作。 使用自定义驱动程序( libRSDriver_adreno.so ), USAGE_SHARED不会重用给定的内存,因此也不会重用数据。 这是使用USAGE_SHARED并调用USAGE_SHARED内核的代码 void process(float* in1, float* in2, float* out, size_t size) { sp rs = new RS(); rs->init(app_cache_dir); sp e = Element::F32(rs); sp t = Type::create(rs, e, size, 0, 0); sp in1Alloc = Allocation::createTyped( rs, t, RS_ALLOCATION_MIPMAP_NONE, RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_SHARED, in1); sp […]

如何在Android Studio上创建Renderscript脚本,并让它们运行?

背景 我想研究一下在Android和Renderscript上创建Renderscript脚本,在过去的一年里,Android-Studio成为Google支持Android应用程序开发的唯一IDE。 问题 为此,我find了多个网站,如下: https://developer.android.com/guide/topics/renderscript/compute.html#writing-an-rs-kernel 如何在Gradle中使用Renderscript支持库 http://developer.android.com/guide/topics/renderscript/compute.html https://futurestud.io/blog/how-to-use-the-renderscript-support-library-with-gradle-based-android-projects/ http://developer.android.com/guide/topics/renderscript/advanced.html 事实上,我见过的所有教程和示例都是针对Eclipse的,他们说我需要做的就是在“raw”文件夹中创建一个“rs”文件(也在“src”文件夹中尝试,在“MainActivity.java”文件的相同文件夹),它将为我自动生成所需的Java文件,前缀为“ScriptC_”。 但它对我不起作用。 我试过的 我已经从我发现的一些样本(对于Eclipse)中创建了一个名为“julia.rs”的文件。 这是代码: #pragma version(1) #pragma rs java_package_name(lb.com.myapplication) float cx; float cy; float width; float height; float zoom; int precision; uchar *color; void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) { float fx = (x + 0.5f) / width * (4.f / […]

将Collada文件转换为a3d(Android3d)对象

我正在研究Renderscriptfunction并坚持使用A3D(Android 3d)文件格式。 我找不到一种简单的方法将Collada文件转换为A3D格式来存储我的搅拌机模型。 我想知道你们是否有想法我可以尝试一下? 有没有人有一个工作代码示例,这样可以看到我做错了什么? 更多信息: http : //developer.android.com/reference/android/renderscript/FileA3D.html 编辑:不要误认为Asci3d文件扩展(也是* .a3d)

使用由Camera预览填充的SurfaceTexture作为Jelly Bean中的Renderscript输入分配

在Jelly Bean中,是否可以使用由相机预览填充的SurfaceTexture创建Renderscript分配? 我正在从Android源代码树中构建我的应用程序,所以我可以使用@hide API,例如Allocation.setSurfaceTexture()。 但是,我想避免使用RS Graphics弃用的API。 这里的类似问题没有得到完全回答,也没有特定于JB的问题。 尝试以下代码时出现以下问题: 进入Renderscript的数据始终为零 对于重复调用的onFrameAvailable回调,我必须updateTexImage(),因为当我调用Allocation.ioReceive()时,它在第一次之后不再被回调,并且logcat中存在“无效的EGLDisplay”。 然而我认为ioReceive()是要走的路 – 它内部也是updateTexImage()。 支持的分配types包括RGBA8888但不包括NV21(这是相机预览格式),RS代码如何能够以这种方式格式化数据? (我知道我正在使用的设备确实支持所请求的VGA分辨率)。 public class SampleRSCPCActivity extends Activity implements SurfaceTexture.OnFrameAvailableListener { final static int DO_KERNEL = 0; private static final String TAG=”SAMPLERSCP”; private static Camera mCamera; private Camera.Parameters mParams; private int mFrameWidth, mFrameHeight; private static SurfaceTexture mST; private RenderScript mRS; private Allocation mInAllocation; […]