Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在没有分配的情况下在RenderScript中使用字节数据类型?_Android_Renderscript - Fatal编程技术网

Android 如何在没有分配的情况下在RenderScript中使用字节数据类型?

Android 如何在没有分配的情况下在RenderScript中使用字节数据类型?,android,renderscript,Android,Renderscript,如何在android上的RS层中使用byte数据类型?我的目标是安卓4.1及以上版本 我正在Java类中读取一个byte[]中的图像文件,并打算将该byte[]传递给RenderScript进行一些处理,然后在Java类中获取byte[]数据。我很清楚,如果数据是int[],我会做这些事情。换句话说,我的问题是-RenderScript中字节的等效数据类型是什么?您可以在.rs文件中以char的形式访问它。例如,您可以创建如下所示的内核: char __attribute__((kernel))

如何在android上的RS层中使用
byte
数据类型?我的目标是安卓4.1及以上版本


我正在Java类中读取一个
byte[]
中的图像文件,并打算将该
byte[]
传递给RenderScript进行一些处理,然后在Java类中获取
byte[]
数据。我很清楚,如果数据是
int[]
,我会做这些事情。换句话说,我的问题是-RenderScript中字节的等效数据类型是什么?

您可以在.rs文件中以
char
的形式访问它。例如,您可以创建如下所示的内核:

char __attribute__((kernel)) foo(char c) {
    return c + 1;
}

您仍然需要在Java中创建
分配
来将数据传递到内核(读取和/或写入),并使用
copyTo()
/
copyFrom()
来来回传递
字节
缓冲区。

您能详细说明为什么不想使用分配吗?你能解释一下你在用字节数据类型做什么吗?我已经编辑了我的问题。在安卓4.1、4.2、4.3和4.4完美版中,我可以尽我所能进行分配。正是我想要的。但是,当我使用
rsSendToClient
将我的
char[]
发送回Java时,我会得到Big-Endian格式的
mData[]
。RenderScript中是否有以Little Endian格式发送/接收数据的直接API?没有。我仍然不明白您为什么喜欢rsSendToClient()。由于我在RS上工作,我知道这是返回Java的最慢路径(而不是使用分配和相关的复制例程。将来,使用
USAGE\u SHARED
您甚至可以获得位图以外的数据类型的零拷贝。我可以在android 4.1中使用
Allocation
吗?AFAIK(参考:Google IO 2013)
rsSetElementAt
API最近添加到android RS层。如果我错了,请纠正我。如果不是
rsSetElementAt
,那么是否有其他方法传输
字节[]
在RS和Java层之间?可以,但我认为有更好的方法。即使是针对4.1,也应该使用支持库。这使您可以在运行v8(FroYo)或更高版本的设备上使用v18的功能。有了支持库,您可以使用
rsSetElementAt()