如何写RenderScript应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何写RenderScript应用

如何写RenderScript应用 简介 RenderScript本质是封装了Native OpenGL2.0接口,使界面渲染不需要通过Android虚拟机,从而达到近似Native OpenGL的渲染效率。除此之外,RenderScript名为“Script”,是一种脚本语言。这表明了它比Native OpenGL拥有更好的可移植性,能在不同处理器和GPU上运行。为了做到这一点,其实是有一个叫做Low Level Virtual Machine(LLVM)的东西。它负责在运行时将RenderScript脚本实时编译为本地执行的二进制代码,从而保证了脚本的可移植性。 由于RenderScript在Android 3.0才公开文档,而我们现在用的是Android 2.3.4。所以有许多API是不同的,文档极度缺乏。本文主要介绍了RenderScript应用的一般编写架构及简单原理。由于时间仓促、水平有限,讲得非常浅显。后面随着学习的深入,应该还有更深入的总结。 Android应用架构 RenderScript渲染的图像要在应用中呈现出来,就必须有一套特有的应用架构来打通通道和做显示容器。这个架构在应用层上主要涉及三个类:Activity、RSSurfaceView和RenderScriptGL。 如果你写过Android OpenGL程序,你会发现这个结构非常类似。RenderScriptGL具体是负责配置、执行RenderScript脚本,实现图像渲染。但是图像渲染一定需要一个容器用于呈现,这就需要RSSurfaceView。RSSurfaceView继承自SurfaceView,我们主要是需要SurfaceView得到一个Surface作为渲染的容器。然后就可以将这个SurfaceView放在Activity中,一个应用就成型了。 具体来说,就是Activity通过setContentView将RSSurfaceView的子类作为显示内容。RSSurfaceView通过成员变量SurfaceHolder的getSurface方法获得一个Surface。RenderScriptGL通过contextSetSurface方法,将Surface与RenderScript绑定。Android应用的架构就构建好了。 注意:和Android 3.0不同,Android 2.3.4应用工程中的.rs脚本代码并没有放在src目录下,而是作为raw资源,放在raw文件夹下。 RenderScript基本作图流程 要实现RenderScript作画,在Java层最重要的是RenderScriptGL类。除此之外就是.rs的脚本文件了。 RenderScript实现一个最基本的纹理作图,主要分为三个步骤:初始化状态、绑定.rs脚本并初始化、初始化作图的视图模式。 初始化状态 OpenGL是一个状态机的概念,它的控制都是通过使能某个状态实现的。因此,为了使用OpenGL,我们在作图前需要对一些状态进行初始化。在这里具体是指初始化以下三个类:ProgramVertex、ProgramFragment和ProgramStore。我们初始化的方法,是构建一个这样的类的Builder实例,配置好对应的值,然后创建这个类的实力。最后调用setName方法为该对象取好名字,以便在.rs文件中引用。 ProgramVertex 和定点数组相关的状态设置,包括纹理矩阵的开启。一般通过以下代码初始化: ProgramVertex.Builder pvb = new ProgramVertex.Builder(mRS, null, null); mPVBackground = pvb.create(); mPVBackground.setName(PVBackground); ProgramFragment 纹理相关的状态设置,我们可以通过它,上传纹理。一般代码如下: ProgramFragment.Builder b = new ProgramFragment.Builder(mRS); mPFBackground = b.create(); mPFBackground.setName(PFBackground); ProgramFragment.Builder builder = new ProgramFragment.Builder(mRS); builder.setTexture(ProgramFragment.Builder.EnvMode.MODULATE, ProgramFragment.Builder.Format.RGBA, 0); ProgramFragment mPfT

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档