RenderScript一个输入和两个输出分配

时间:2015-08-09 00:49:21

标签: android allocation renderscript

我设法编写了一个内核,它将输入Bitmap转换为Sobel渐变的float [](SobelX和SobelY的两个独立内核)。我这样做是通过将input-Bitmap指定为全局变量,然后根据Output分配传递内核并通过rsGetElementAt引用Input-Bitmap的邻居。因为我实际上想要计算幅度(hypot(Sx,Sy)和Direction(atan2(Sy,Sx)),所以在一个Kernel-pass中完成整个事情会很好。如果我只需要计算Magnitude Array ,这可以使用相同的结构(1 intput Bitmap,1 Output float [])来完成。现在我想知道,是否可以为Direction Output(也是float [])添加额外的Allocation。我试过这个使用rs-function rsSetElementAt(),如下所示:

material.specular.setRGB( 0.05, 0.05, 0.05 );

以及相应的Java代码:

    nvm install 0.10
    nvm use 0.10
    npm rebuild
    npm t 

不幸的是,这不起作用。我不确定,问题是与rs-kernel的结构逻辑有关还是因为我不能在Java代码中使用第二个Type.Builder赋值(因为内核已经与Magnitude Output-allocation绑定)。任何帮助都非常感谢。 PS:我看到第二个Type.Builder分配和"方向"之间没有任何联系。在rs中分配 - 但是如何实现呢?

1 个答案:

答案 0 :(得分:1)

outAllocation作为参数传递给内核。但dirAllocation的存在和位置也必须传达给Renderscript方面。在启动脚本之前执行此操作:

script.set_direction(dirAllocation);

另请阅读memory allocation in Renderscript