Libgdx是一款支持2D 与3D 游戏开发的游戏类库,兼容大多数微机平台(标准JavaSE 实现,能运行在Mac、Linux、Windows 等系统)与Android 平台(Android1.5 以上即可使用,Android2.1 以上可满功率发挥), Libgdx由 audio、files、graphics、math、physics、scenes、utils 这些主要类库所组成,它们分别对应了 Libgdx中的音频操作,文件读取,2D/3D 渲染,Libgdx绘图相关运算,Box2D封装,2D/3D 游戏组件(3D 部分目前无组件),以及 Libgdx内置工具类。 Libgdx主要构成如下所示(Libgdx作者 wiki 提供): 下面开始,我将就 Libgdx的具体实现,开始讲解如何正确使用 Libgdx类库。 不过在正式开始之前,我们首先还得讲讲 Gdx类。 关于 Libgdx 中的Gdx 类: 单从表面上看,Gdx类占用空间不足 2KB,甚至不具备一行可以被直接执行的函数,并没什么重要好说。 然而,真实的Gdx却是Libgdx类库运行的核心所在,没有它你将寸步难行,不单运行Graphics、Input、Files、Audio、AndroidApplication 等 Libgdx关键部分所必需的实例会在Libgdx初始化时注入 Gdx中对应的graphics、input、files、audio、app 等静态变量里面,就连 Libgdx对 OpenGL 接口(或 OpenGLES,视 Libgdx运行平台而定,以下统称 OpenGL)的GL10、GL11、GL20、GLCommon 等封装类也会在Graphics 实例化时分别注入到 gl10、gl11、gl20、gl 这四个同样位于 Gdx的静态变量当中(在Graphics 中也会继续保留它们的引用,因此无论你执行Gdx.graphics.getGL10 还是Gdx.gl10,其实都在调用同一个静态变量)。事实上,如果你想不使用 Gdx而正常运行Libgdx,那么除了重构源码,就再没有任何办法可想了。 PS:如果你不清楚自己究竟在什么环境使用 Libgdx,其实也不必强分 gl10 或 gl11,大可以通过 Gdx.gl 方式调用 Libgdx中对于 OpenGL 接口的默认封装(执行某些非多版本共有接口时,依旧需要使用对应版本专属 gl)。 想要使用 Libgdx,却不明白 Gdx是干什么用的,那么一切就都是空谈。 下面开始,我将具体讲解 Libgdx 中的图像处理与游戏组件部分: 关于 Libgdx 的图像处理部分: Mesh: 本质上讲,Libgdx中所有可见的3D 物体首先都是一个 Mesh(网格,或者说三维网格形式的高级图元)。Mesh 是如何生成的呢?众所周知,数学上讲的立体几何由点、线、面三部分组成,无论多么复杂的图像也可以分解为无数细小的这三部分,或者说...