- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
libgdx总结
Libgdx学习记录
Libgdx学习总结
1.libgdx画图都是使用OpenGL,所以效率较高,屏蔽了View这一层,根据用户选择使用的OpenGl版本不同,自动生成View,分别为支持OpenGL 1.0 和OpenGl 2.0,其中OpenGL 1.0使用的View为surfaceView 。OpenGL2.0使用的View为GLSurfaceView。
2.关于View,surfaceView,GLSurfaceView的区别:
首先继承关系: surfaceView extends View
GLSurfaceView extends surfaceView
View画图在UI线程中使用onDraw()绘制,并且,上层规定刷新频率。surfaceView 画图不在调用onDraw(),必须程序猿另起一个线程(注意:不再是在UI线程中绘制了,自己控制刷新频率)。所以,他们只是绘制机制不同,并不能说使用哪个的绘制效率会更高。
View如果在onDraw中进行了数据操作,可能就会出现卡的情况。
PS:在QQWaveActivity中,进入APP时候在UI线程读取应用列表较耗时,导致开始画图时会卡一下。优化方法:另开线程读取应用列表以及图标,缓存数据。
至于GLSurfaceView,我认为与前者的不同,应该是很在应用场合上,适用于绘制三维图形,适合使用OpenGL 2.0,使用场合总结为;
View: 不复杂的二维图形;
surfaceView: 动态的二维的页面,有较多动画效果,配合OpenGL1.0;
GLSurfaceView:三维立体图形,配合OpenGL2.0。
3.由于Libgdx较为详细的文档比较少,可以参考的资料是在官网:
/p/libgdx/
以及一些博文中。
个人学习的方法是通过官方的测试DEMO,不懂的地方查看资料,然后直接看内部源码,认为看源码也是最直接的方法。
4.Libgdx其实很多东西都是我们可以自己实现的,但是由于对OpenGL不熟,有一定困难,但是不应该对它产生畏惧心理,我认为它真正最有价值的部分是在Box2d中。
一、说明
本文档主要记录本人的一些学习过程,以及个人的一些看法,不会详细记录每个类的用法以及API,只会列出大概的写法。目的是在与分享学习的一些经验,而不是通过这个文档学会libgdx。
在分享的同时,会附上相应的DEMO效果。DEMO的源码是在gdx-test,支持在PC上直接运行。以Java Application的方式运行com.badlogic.gdx.helloworld.MyTestDeskTop.java文件,就能运行相应的DEMO,在PC上查看其效果。MyTestDeskTop.java如下:
修改红框框住的部分,改成我们想要执行的DEMO文件,就能运行不同的DEMO。
二、Libgdx框架介绍
1、特点
兼容性良好:在终端与PC上都能运行;
效率高: 底层画图全部使用OpenGL 实现;
模块化: 有audio、files、graphics、math、physics、scenes、utils模块,封装了Box2d;
丰富的工具: Particle editor[5](粒子编辑器),Hiero bitmap font generator[6](文字生成工具),Texture packer[7](图片合并工具),TWL布局编辑器;
图像资源问题: 只支持png、jpg、bmp,对图片分辨率有限制。
2、架构
首先,是Libgdx的架构图:
从图中可以发现,libgdx起到了一个类似于中间件一样的功能,它屏蔽了JVM与Android系统之间的差异,开发出来的程序能同时在PC端以及Android系统上运行。最重要的是:它封装了绘图、音频等模块。
附上说明文档中的程序安装方法:
/p/libgdx/wiki/ProjectSetup
说明文档中推荐的工程创建方法是,两个工程,一个Java project,一个Android project,这两个工程,通过使用不同方法调用同一个类,实现在PC上与Android系统上运行我们的代码,demo中分别是使用HelloWorldDesktop.java 调用 HelloWorld 实现PC端运行,HelloWorldAndroid 调用HelloWorld在Android系统上运行。如图:
现在,我只创建一个Android Project,在不创建Java Project的情况下想要使用libgdx,我是这样做的,如图:
这样,同样能运行。
说这个,是想说明我对libgdx的认识:
Libgdx不是什么系统框架,而是一些已经封装好的工具类,同时因为它是开源的,因此我们可以在它的基础上做
您可能关注的文档
- 2014山东事业单位面试备考:考前实战演练及解析七十1.doc
- 2014山东事业单位面试备考:考前实战演练及解析七十.doc
- 2014山东事业单位面试备考:考前实战演练及解析七十5.doc
- 2014山东事业单位面试备考:考前实战演练及解析七十6.doc
- 半导体制程技术.doc
- 2014山东事业单位面试备考:考前实战演练及解析七十2.doc
- 2014山东事业单位面试备考:考前实战演练及解析七十8.doc
- 2014山东事业单位面试备考:考前实战演练及解析六十七.doc
- 2014山东事业单位面试备考:考前实战演练及解析六十七4.doc
- 2014山东事业单位面试备考:考前实战演练及解析六十七1.doc
文档评论(0)