标签: renderscript

现在我们有Honeycomb,什么是RenderScript?

所以Android 3.0(蜂窝)现在已经推出,并拥有一种名为Renderscript的新硬件加速3D图形引擎.

Renderscript 3D图形引擎

Renderscript是一个运行时3D框架,它既可以提供用于构建3D场景的API,也可以提供与平台无关的特殊着色器语言,以获得最佳性能.使用Renderscript,您可以加速图形操作和数据处理.Renderscript是为应用程序,壁纸,旋转木马等创建高性能3D效果的理想方式.

根据这篇可追溯到2009年的博客文章,这个图形引擎已经可以在名为Fountain的类中使用(甚至在蜂窝之前).最后一条线索对我很有帮助,因为现在我可以在Honeycomb代码中轻松找到该类名.

你们中的任何人都可以提供更多有关Renderscript的见解吗?以及如何更多地了解如何使用它?既然这已成为一个公共api,我假设知情人士可以获得自由谈论它的许可(我希望).

3d android renderscript android-3.0-honeycomb

1
推荐指数
1
解决办法
979
查看次数

Renderscript rs.finish(), allocation.syncAll(), copyTo() :等待内核执行完成

我正在编写 android 渲染脚本代码,它需要背靠背的内核调用(有时一个内核的输出成为另一个内核的输入)。我还有一些全局指针,从 Java 层绑定到内存。每个内核更新这些全局指针并输出一些东西。我必须确保在 kernel2 开始执行之前已完成 kernel1 的执行。

我查看了 android renderscript 文档,但无法很好地理解 syncAll(Usage) 和 finish()。谁能澄清如何实现这种行为?

谢谢

mScript.forEach_kernel1(mColorImageAllocation, tempAlloc);

// make sure kernel1 finishes, from android rs doc, copyTo should block 
tempAlloc.copyTo(testOutputBitmap);

for (short i = 0; i < NUM_DIST; i++) {
            mScript.set_gCurrentDistanceIndex(i);
            mScript.forEach_kernel2(tempAlloc);    
        mRS.finish(); // wait till kernel2 finishes
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,在 kernel1 的输出上使用不同的全局参数调用相同的 kernel2。

parallel-processing android gpu sync renderscript

1
推荐指数
1
解决办法
862
查看次数

在Android手机上使用RenderScript支持库尝试模糊图像时出错

我正在尝试模糊我的图像,并使用RenderScript在RelativeLayout的背景上显示模糊,应用程序在模拟器中工作,但手机中的应用程序不断崩溃,出现此错误:

08-05 22:21:36.543:E/RenderScript_jni(11549):无GC方法08-05 22:21:36.553:D/dalvikvm(11549):在/system/lib/libRSSupport.so 0x41803ab8中找不到JNI_OnLoad,跳过init 08-05 22:21:36.557:E/dalvikvm(11549):错误:找不到本地方法08-05 22:21:36.557:E/dalvikvm(11549):请求:Landroid/support/v8/renderscript /RenderScript; ._nInit :() V 08-05 22:21:36.558:E/JNIHelp(11549):RegisterNatives因'android/support/v8/renderscript/RenderScript'失败,中止08-05 22:21:36.558: A/libc(11549):0xdeadbaad(代码= 1),线程11549(m.example.login)的致命信号11(SIGSEGV)

这是我在单独的类上的模糊代码:

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v8.renderscript.*;

public class Blur {
    public static Bitmap blurBitmap(Context context, Bitmap src) {
        Bitmap outBitmap = src.copy(src.getConfig(), true);

        final RenderScript rs = RenderScript.create(context);
        final Allocation input = Allocation.createFromBitmap(rs, src);
        final Allocation output = Allocation.createFromBitmap(rs, outBitmap);

        final ScriptIntrinsicBlur script =
                ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
        script.setRadius(25f);
        script.setInput(input);
        script.forEach(output);
        output.copyTo(outBitmap);

        rs.destroy();

        return outBitmap;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里是MainActivity中的ny代码(我从图库中获取位图):

Uri selectedImageUri = data.getData();
Blur blur …
Run Code Online (Sandbox Code Playgroud)

android bitmap blur renderscript

1
推荐指数
1
解决办法
3928
查看次数

通过Renderscript在GPU中进行内存分配

我在Android上通过Renderscript制作了3种模糊的位图.使用app很多次后,它会自动关闭.记录如下:

V/RenderScript(4548):用户支持的分配失败了步幅要求,回退到单独的分配
D/dalvikvm(4548):GC_EXPLICIT释放1K,5%释放21256K/22352K,暂停1ms + 4ms,总共20ms

在清单文件中启用了largeHeap,但它没有帮助.我需要通过renderscript在GPU中清除内存不是吗?我没有找到如何做到这一点.

Android操作系统:4.4.2,设备:Samsung Note II.

有谁知道如何处理这个?

android bitmap renderscript

1
推荐指数
1
解决办法
1632
查看次数

是否可以在RenderScript内核中访问更多元素?[Android]产品

我想从RenderScript中的一个Allocation访问更多元素.我们来自Google的示例代码:

uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {
  uchar4 out = in;
  out.r = 255 - in.r;
  out.g = 255 - in.g;
  out.b = 255 - in.b;
  return out;
}
Run Code Online (Sandbox Code Playgroud)

它需要一个uchar4,谁是分配的一个元素.是否可以访问和操作多个元素?就像展开一个循环一样,例如,来自Bitmap的8个像素.

谢谢.

performance android c99 renderscript android-renderscript

1
推荐指数
1
解决办法
212
查看次数

Proguard混淆和Renderscript

我知道Proguard(当minifyenabeled设置为true时)会支持Java代码,但是Renderscript脚本呢?有谁知道吗?谢谢.

android proguard renderscript

1
推荐指数
1
解决办法
165
查看次数

谷歌关于RenderScript的代码不起作用?

我发现谷歌关于RenderScript的文档有更新(https://developer.android.com/guide/topics/renderscript/compute.html).所以我用它的代码来测试,但是有一个错误

Error:(31, 23) error: implicit declaration of function 'rsCreateAllocation_uchar4' is invalid in C99
Error:(31, 17) error: initializing 'rs_allocation' (aka 'struct rs_allocation') with an expression of incompatible type 'int'
Run Code Online (Sandbox Code Playgroud)

那是代码:

rs_allocation tmp = rsCreateAllocation_uchar4(imageWidth, imageHeight);
rsForEach(invert, inputImage, tmp);
rsForEach(greyscale, tmp, outputImage);
Run Code Online (Sandbox Code Playgroud)

所以我想知道:1:为什么会发生这种情况(我认为sdk api是原因,但我已将AS,SDK和sdk工具更新到最新版本)?2:有什么区别

uchar4 RS_KERNEL root(uchr4 in, unit32_t x, uint32_t y)
Run Code Online (Sandbox Code Playgroud)

void RS_KERNEL root(uchr4* in, uchar4* out, unit32_t x, uint32_t y)
Run Code Online (Sandbox Code Playgroud)

我认为第二种方法更快?!但我不能确定.并且使用指针作为params的方法用于未命名为root()的函数(我测试它).如果带有指针参数的方法更快,我如何在RS文件中使用2个或更多内核函数?

android renderscript

1
推荐指数
1
解决办法
416
查看次数

androidx renderscript崩溃“加载RS jni库时出错:java.lang.UnsatisfiedLinkError:从JNI_OnLoad返回的JNI_ERR”

我在项目中使用的是Android DS-Photo-Editor-SDK v1.5(“ ds-photo-editor-sdk-v6.aar”)和androidx。打开编辑器过滤器时出现以下错误:

2018-10-26 19:36:27.949 16826-16898/com.levionsoftware.photos E/software.photo: ----- class 'Landroidx/renderscript/RenderScript;' cl=0x16f0d598 -----
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:   objectSize=492 (172 from super)
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:   access=0x8008.0001
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:   super='java.lang.Class<java.lang.Object>' (cl=0x0)
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:   vtable (71 entries, 11 in super):
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:      0: long androidx.renderscript.RenderScript.a(int, long, boolean)
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:      1: long androidx.renderscript.RenderScript.a(long, int, int, int)
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:      2: long androidx.renderscript.RenderScript.a(long, int, int, int, java.lang.String)
2018-10-26 19:36:27.951 16826-16898/com.levionsoftware.photos E/software.photo:      3: long androidx.renderscript.RenderScript.a(long, …
Run Code Online (Sandbox Code Playgroud)

android renderscript android-renderscript androidx

1
推荐指数
1
解决办法
1163
查看次数

可能是android renderscript源中的一个小错误

只是查看renderscript源代码.我想我在第36行发现了一个错误

private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
Run Code Online (Sandbox Code Playgroud)

认为需要是双倍的==但没有足够的编码经验才能确定.

android renderscript

0
推荐指数
1
解决办法
473
查看次数

如何在Renderscript中获取位图分配的邻近像素?

我想执行需要相邻像素的图像处理操作,但我不确定如何从分配中访问它们.我见过的大多数内核都在单个像素上运行,更新它,然后返回它.有没有办法可以在下面的方法中访问(x,y)的邻居.

uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {

  uchar4 neighbor = allocation[x+1][y]; // How do I do this in renderscript?
  uchar4 otherNeighbor = allocation[x-1][y]; 
  ...
}
Run Code Online (Sandbox Code Playgroud)

android image-processing renderscript

0
推荐指数
1
解决办法
819
查看次数

在Android Studio中设置RenderScript

我拼命想在Android Studio中设置RenderScript.根据本手册http://developer.android.com/guide/topics/renderscript/compute.html#ide-setup我设置了最高可用的renderscriptTargetApi 22和renderscriptSupportModeEnabled为true.我使用buildToolsVersion"22.0.1".有了这个,我可以使用ScriptIntrinsic函数 - 但没有实现编译自编写的RenderScript(尝试20h +现在......).我总是遇到与R-File(红色)相同的问题 - 最迟当我尝试重建项目时.我究竟做错了什么?非常感谢您的帮助.

android renderscript

0
推荐指数
1
解决办法
2370
查看次数