RenderScipt学习总结

上传人:仙*** 文档编号:91583648 上传时间:2022-05-17 格式:DOC 页数:12 大小:115.50KB
返回 下载 相关 举报
RenderScipt学习总结_第1页
第1页 / 共12页
RenderScipt学习总结_第2页
第2页 / 共12页
RenderScipt学习总结_第3页
第3页 / 共12页
点击查看更多>>
资源描述
RenderScipt 学习总结Renderscript(渲染脚本)是Google全新加入的一个标志性功能,是一个新的 API, 旨在带来更高的性能的下级 API 给开发者,它带有高性能的 3D 渲染和计算操作,这可以很大程度的提高他们的应用程序的性能Renderscript 已经被使用到了一些东西中,比如 Honeycomb 的动态壁纸中以及复杂的 YouTube 和 Book 应用中,这个内建的 Renderscript 是非常出色的,就像 Google 说的“接近极端”,它将提高你的设备上执行本地代码的性能。从目前的情况来看这是非常不错的,与现存的 NDK 不同,最终产品将可以跨平台工作。(以上介绍均来自网上)更多介绍请google。光栅化:确定最佳接近图形的像素集合,并用指定属性写像素的过程!也称为扫描转化。 OpenGL红宝书上解释为:把物体的数学描述以及与物体相关的颜色信息转换为屏幕上的像素,这个过程称为光栅化。/解释什么是Allocation ,Type ,Element ,Android自2.1以后增加了Renderscript以加强图像和3D方面的处理能力和速度。RenderScript简单的讲,可以概括为:什么是RenderScript提供了一套API,封装了着色器语言的使用和配置分为Java,JNI,Native三层Engineopengl操作(设置,创建实际处理器程序并连接)在线程中循环执行main函数Invoke 的使用 Android RenderScript 的使用基础篇2012-03-02 09:55:14 我来说两句 收藏 我要投稿 字体:小 大 准备上4.0项目,最近接触API 的时候看到了RenderScript 。通过运行google 那几个项目发现这个真是一个非常不错的API,但是google 所提供的文档非常少,有助于了解计算机图形计算,虽然我们做应用编程的不一定要涉及这块,但涉猎一下总是不错的。RenderScript 是Android 平台上的一种类C脚本语言。要在我们程序上实现RenderScript 渲染功能,最少需要实现的几个功能如下,以一个Hello Wold 为例:1.helloworld.rs 实现RenderScript 的代码2.RenderScriptRS.java 一个辅助类,简化操作RenderScript (非必要)3.RenderScriptView.java 一个继承于RSSurfaceView的类,用于显示RenderScript 的渲染或者用来处理用户的触摸等视图4.RenderScriptHelloWorldActivity.java 这个不用多说,Android 应用程序的界面类当创建一个RenderScript 的项目的时候,必须在包名下创建一个以rs为后缀的文件(位于我们Activity 同包名下),如本篇文章使用的helloworld.rs文件.#pragma version(1)#pragma rs java_package_name(com.xuzhi.rs.helloworld)#include rs_graphics.rshint gTouchX;int gTouchY;void init() gTouchX=50.0f; gTouchY=50.0f;/application mainint root(void) rsgClearColor(0.0f,1.0f,0.0f,0.0f);/颜色更改为no red,full green,no blue,no opacity ,的RGBA值 rsgFontColor(1.0f,0.0f,1.0f,1.0f);/设置字体颜色 rsgDrawText(my first renderscript application,gTouchX,gTouchY);/根据应用传上来的x,y 将字画在屏幕对应的坐标上 rsDebug(=my renderscript debug=,rsUptimeMillis();/打印日志 return 20;注解:#pragma:简单的可以理解告诉或者通知编译器编译这个文件时需要的参数或者指定编译的版本等,跟编译器有关。void init():这个函数作一些初始化动作int root(viod):程序入口,根据返回值(ms)作刷新。比如上面写的20相当于每20毫秒刷新一次。 root 函数下rsgClearColor,rsgFontColor,rsgDrawText都位于rs_graphics.rsh头文件下。 rsDebug是打印日志函数,位于rs_core.rsh头文件。 在上面的代码中,日志将己每20毫秒打印一次这样的日志:03-01 11:09:18.289: D/RenderScript(1838): =my renderscript debug= 600462 0x9298e rsUptimeMillis则定义在rs_time.rsh头文件中。目前有关于RenderScript调用的函数位于我们SDK目录下(platforms/android-*目前11-15/renderscript/include)目录里面的头文件中。好了,rs文件己经编写完成,接着往下走。下一步,为了方便调用RenderScript 这里创建了一个辅助类,RenderScriptRS.java。/* Render Script help* author terry*/public class RenderScriptRS private RenderScriptGL mRS; private ScriptC_hellowold mScript; public RenderScriptRS(RenderScriptGL rs,Resources resource) / TODO Auto-generated constructor stub mRS=rs; mScript=new ScriptC_helloworld(mRS, resource, R.raw.hellowold); mRS.bindRootScript(mScript); /绑定脚本 /* * 传入坐标 * param x * param y */ public void onActionDown(int x,int y) mScript.set_gTouchX(x); mScript.set_gTouchY(y); 目前我们所做的一切都是要使用到的RenderScriptGL(RenderScript 图形的衍生),实例化RenderScriptGL并绑定脚本。如果你的开发ADT高于或者是1.5的话Eclipse 会根据你的rs文件生成ScriptC_你的rs文件为名的java类。如上面代码的ScriptC_helloworld一样,并且在资源目录res/raw生成一个.bc的文件,在实例化ScriptC_hellowold会需要传进去。下一步,创建RenderScriptView.java,让其可以显示在界面上。import android.content.Context;import android.renderscript.RSSurfaceView;import android.renderscript.RenderScriptGL;import android.renderscript.RenderScriptGL.SurfaceConfig;import android.view.MotionEvent;public class RenderScriptView extends RSSurfaceView private RenderScriptGL mRS; private RenderScriptRS mRender; public RenderScriptView(Context context) super(context); / TODO Auto-generated constructor stub initRenderScript(); /* * 初始化RenderScriptRS */ private void initRenderScript() if (mRS = null) RenderScriptGL.SurfaceConfig config = new SurfaceConfig(); mRS = createRenderScriptGL(config); mRender = new RenderScriptRS(mRS, getResources(); Override protected void onDetachedFromWindow() / Handle the system event and clean up mRender = null; if (mRS != null) mRS = null; destroyRenderScriptGL(); Override protected void onAttachedToWindow() / TODO Auto-generated method stub super.onAttachedToWindow(); initRenderScript(); Override public boolean onTouchEvent(MotionEvent event) / TODO Auto-generated method stub /* * 传入点击坐标 */ if (event.getAction() = MotionEvent.ACTION_DOWN) mRender.onActionDown(int) event.getX(), (int) event.getY(); return true; return false; RSSurfaceView扩展自SurfaceView,用来显示这些需要渲染的图形界面。上述代码的initRenderScript方法,如果RenderScriptGL 未实例化,就需要创建一个SurfaceConfig(这是用来控制深度的颜色,深度缓冲区等等,这里使用默认),并且让它实现自身的onTouchEvent事件,传入x,y坐标轴进入RenderScript,改变文本显示的位置(跟随鼠标的点击点变化)。最后的界面只需要让它显示出来即可:public class RenderScriptHelloWorldActivity extends Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(new RenderScriptView(this); 这一系列的步骤可以用一张图来做说明,详细的规划了RenderScript 的图形概述:这是一个简单的DEMO,介绍了RenderScript 使用的一些基本步骤,详细的使用后面会慢慢提到。最后通过上面的代码可以看到的运行效果如下:另外,后文还会提供一些详细的文档和例子。比如:rs_graphicsrs_corers_mathrs_time上面这四个的头文件的API。代码可以在Android 4.0中找到,RenderScript-Helloworld。注:模拟器无法运行。摘自 Terry_龙 12 / 12文档可自由编辑打印
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!