关于Android RenderScript 的详细说明和一些实用文档
2014-09-19 15:58
369 查看
RenderScript 是一种低级的高性能编程语言,用于3D渲染和处理密集型计算(3D播放等和关于CPU密集型的计算)。一直以来Android 在绘图性能的表现一直差强人意,引入NDK之后才有所改善,而在Honeycomb 中发布了RenderScript 这一杀手级在Framework 后,大大的增加了Android 本地语言的执行能力和计算能力。以下是参考一些网上总结的几点:
RenderScript 采用了c99语法(标准C来自1999年,最新标准是C11,来自2011年),新的应用编程接口(API)最终编译成原生代码。这意味着做为Android 图形开发者就不得不再系统的学习一套API,因为它的API并非人人都清楚,而Google 对于RenderScript 这方面的文档又少之又少。
RenderScript 无法从其他C应用程序移植过来,不过它在Android 设备上比NDK 更常见。相比于NDK的可移植性要弱一些,记得以前移植过一个C程序叫Cadaver的webdav客户端 就是使用的NDK,所以这点来说RenderScript 的移植性可以说有待改善。
RenderScript 在机器上进行第一遍编译,然后在目标设备上进行最后一遍编译(Just-In-Time Compiling),因而带来更高效的原生二进制代码。这也就是意味着,凡是支持RenderScript 的设备都可以运行你的代码。不用管什么架构。
目前 ,RenderScript 带来的代码只能在主处理器上运行,它会自动生成可利用多个核心的代码(如果设备上有多个核心)。就因此,编译出来的程序是针对该机器的最佳优化,这解决了Device Fragmentation,也就是说开发者再也不必担心使用者的手机、平板够不够好、有没有GPU...等等问题,全都交给RenderScript 去担心就好。没有GPU,RenderScript 写好的程序就交由CPU来处理(背后的编译技术其实是使用的LLVM)。
RenderScript 有类似于CUDA的Compute API用于计算,配置和设置相对比较容易。最终的运行速度实际上要比胜过于NDK 的实现方式, 需要编写的代码比较少。而RenderScript 最适合用于做3D的用户界面或高性能计算任务。而上面的编译和调试所说的一样,随着最后一遍的编译可以通过硬件直接或得性能的提升。
引入RenderScript 并不是来代替NDK的,而是给开发者多一种选择。
关于官方的文档
http://developer.android.com/guide/topics/renderscript/index.html 这是官方RenderScript 的首页
http://developer.android.com/guide/topics/renderscript/graphics.html 关于图形方面的知识
http://developer.android.com/guide/topics/renderscript/compute.html 关于计算方面的知识
国外一个比较不错的开发者的博客,目前只有两篇:
http://blog.iangclifton.com/2011/08/24/renderscript-101-part-1-renderscript-basics-tutorial/ http://blog.iangclifton.com/2011/08/24/renderscript-101-part-2-renderscript-interaction/
另外那些rs文件里面的函数如何寻找?
4.0的请到框架这里查找相应的头文件:
frameworks/base/libs/rs/scriptc,这里包含以下的头文件
rs_allocation.rsh rs_atomic.rsh rs_cl.rsh rs_core.rsh rs_debug.rsh rs_graphics.rsh rs_math.rsh rs_matrix.rsh rs_object.rsh rs_quaternion.rsh rs_time.rsh rs_types.rsh
或者在SDK的platform 下也可以找到。
转帖:http://www.cnblogs.com/TerryBlog/archive/2012/03/02/2377251.html
编程语言和可移植性
RenderScript 采用了c99语法(标准C来自1999年,最新标准是C11,来自2011年),新的应用编程接口(API)最终编译成原生代码。这意味着做为Android 图形开发者就不得不再系统的学习一套API,因为它的API并非人人都清楚,而Google 对于RenderScript 这方面的文档又少之又少。RenderScript 无法从其他C应用程序移植过来,不过它在Android 设备上比NDK 更常见。相比于NDK的可移植性要弱一些,记得以前移植过一个C程序叫Cadaver的webdav客户端 就是使用的NDK,所以这点来说RenderScript 的移植性可以说有待改善。
编译和调试
RenderScript 在机器上进行第一遍编译,然后在目标设备上进行最后一遍编译(Just-In-Time Compiling),因而带来更高效的原生二进制代码。这也就是意味着,凡是支持RenderScript 的设备都可以运行你的代码。不用管什么架构。目前 ,RenderScript 带来的代码只能在主处理器上运行,它会自动生成可利用多个核心的代码(如果设备上有多个核心)。就因此,编译出来的程序是针对该机器的最佳优化,这解决了Device Fragmentation,也就是说开发者再也不必担心使用者的手机、平板够不够好、有没有GPU...等等问题,全都交给RenderScript 去担心就好。没有GPU,RenderScript 写好的程序就交由CPU来处理(背后的编译技术其实是使用的LLVM)。
性能
RenderScript 有类似于CUDA的Compute API用于计算,配置和设置相对比较容易。最终的运行速度实际上要比胜过于NDK 的实现方式, 需要编写的代码比较少。而RenderScript 最适合用于做3D的用户界面或高性能计算任务。而上面的编译和调试所说的一样,随着最后一遍的编译可以通过硬件直接或得性能的提升。
最后
引入RenderScript 并不是来代替NDK的,而是给开发者多一种选择。
如何学习?
关于官方的文档 http://developer.android.com/guide/topics/renderscript/index.html 这是官方RenderScript 的首页
http://developer.android.com/guide/topics/renderscript/graphics.html 关于图形方面的知识
http://developer.android.com/guide/topics/renderscript/compute.html 关于计算方面的知识
国外一个比较不错的开发者的博客,目前只有两篇:
http://blog.iangclifton.com/2011/08/24/renderscript-101-part-1-renderscript-basics-tutorial/ http://blog.iangclifton.com/2011/08/24/renderscript-101-part-2-renderscript-interaction/
另外那些rs文件里面的函数如何寻找?
4.0的请到框架这里查找相应的头文件:
frameworks/base/libs/rs/scriptc,这里包含以下的头文件
rs_allocation.rsh rs_atomic.rsh rs_cl.rsh rs_core.rsh rs_debug.rsh rs_graphics.rsh rs_math.rsh rs_matrix.rsh rs_object.rsh rs_quaternion.rsh rs_time.rsh rs_types.rsh
或者在SDK的platform 下也可以找到。
转帖:http://www.cnblogs.com/TerryBlog/archive/2012/03/02/2377251.html
相关文章推荐
- 关于Android RenderScript 的详细说明和一些实用文档
- 关于Android RenderScript 的详细说明和一些实用文档
- 关于Android RenderScript 的详细说明和一些实用文档
- 关于Android RenderScript 的详细说明和一些实用文档
- 关于Android RenderScript 的详细说明和一些实用文档
- android成长日记 10.关于BroadcastReceiver的详细说明
- 关于获取Android系统所有已安装App信息的一些操作(详细)
- 关于Android使用新浪API的一些说明
- 关于android控件PopupMenu使用的一些说明
- 关于PHP-Zend framework2 框架 学习过程。 阅前须知: ZF2中的配置文件是可以静态文件配置来注册和通过相关函数动态注册。 1.EventManager(事件驱动),关于事件驱动,在ZF2相关资料没有详细说明,可以参考ANDROID的事件驱动,MFC的消息响应/事件驱动。
- Android中关于布局填充器的各种详细用法和说明
- 这篇文档的价值在于详细的描述了三层交换的基本流程,以及一些关于三层交换表的有价值的技术细节。让读者对三层交换的认识提升到一个新的高度! 这篇文档的价值在于详细的描述了三层交换的基本流程,以及一些关于三
- 关于Android应用程序中重载函数onCreate(Bundle savedInstanceState)的一些简单说明
- Android中关于系统Intent的一些应用的说明
- 分享一些本人自己收藏实用的Android OpenGL 书籍文档
- 关于 Android Fragment的官方说明文档
- android官方文档关于oncreate()的参数说明
- 最近做的Android项目,和同事分开做的,所以需要写一些文档注释,说明自己的工作内容
- Android中关于CoordinatorLayout的一些实用布局技巧
- 转载的一篇东西,方便以后查找。关于samba的详细说明文档