[Gallery3D源码分析汇总.docx

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[Gallery3D源码分析汇总

Gallery 3D 分析文章分类:移动开发Gallery 3D 分析?1.Layer 是个抽象类。?有5个变量,分别是mX;mY(位置坐标);mWidth;mHeight(宽与高);mHidden (是否隐藏);?一个抽象方法,非抽象子类都有实现。???Java代码?public?abstract?void?generate(RenderView?view,?RenderView.Lists?lists);??其他的可以在子类中重写???Java代码?//?Returns?true?if?something?is?animating.?????public?boolean?update(RenderView?view,?float?frameInterval)?{?????????return?false;?????}???????public?void?renderOpaque(RenderView?view,?GL11?gl)?{?????}???????public?void?renderBlended(RenderView?view,?GL11?gl)?{?????}???????public?boolean?onTouchEvent(MotionEvent?event)?{?????????return?false;?????}???????//?Allows?subclasses?to?further?constrain?the?hit?test?defined?by?layer?????//?bounds.?????public?boolean?containsPoint(float?x,?float?y)?{?????????return?true;?????}???????protected?void?onSurfaceCreated(RenderView?view,?GL11?gl)?{?????}???????protected?void?onSizeChanged()?{?????}???????protected?void?onHiddenChanged()?{?????}??有好几个类都继承了Layer抽象类:?BackgroundLayer?CanvasLayer?GridLayer?HudLayer?LoadingLayer?RootLayer?其中用到的RenderView类?Java代码?final?class?RenderView?extends?GLSurfaceView?implements?GLSurfaceView.Renderer,?SensorEventListener??里面有个静态 final 类 Lists?里面定义了updateList,opaqueList,blendedList,hitTestList,systemList等以Layer为对象内容的ArrayList;以及一个清空所有ArrayList的方法Clear().Gallery 3D 代码分析之概览文章分类:移动开发Gallery 3D UI 非常炫,如下图所示:?? ? ? ? ???????????????????????????需要明确的几个问题伪 2D 还是 3D:gallery3d 基于 android SDK OpenGL ES 接口开发,使用了 Java API,没有使用 NDK。图片如何显示:在 OpenGL ES 中,要显示图片,需要定义一个四边形,然后把图片当作 texture 贴到四边形上。布局及特效如何实现:这是 gallery3d 的精华所在,需认真分析。大数据量图片/cache 如何实现和管理:gallery3d 有缓冲区的设计,非常不错,需要认真分析。动画引擎:简单的讲,动画引擎对外可表现为一个接口:Java代码?float?animate(float?initVal,?float?*currentVal,?long?timeElapsed,?long?duration)???即,给定初始值(initVal),动画引擎根据逝去的时间(timeElapsed)和动画总时间(duration)计算下一帧对应的值 (currentVal),这个值可能是位置坐标,也可能是一个矩阵 matrix,或者是其它的属性。显示一帧就调用该函数更新actor的属性,各个帧连起来显示就成了动画。3D坐标与2D坐标的转换:这个需要仔细分析。使用缓冲区对象 (GL_OES_vertex_buffer_object)OpenGL ES 中的顶点数组使得几何图元的显示方便了很多,但是如果每次都要向 OPENGL 发送一大块数据,而这数据其实并没有修改过,那么这传输就是冗余的。所以这里添加了缓冲区对象,将顶

文档评论(0)

xudaye + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档