Libgdx 1.8.0 发布,跨平台游戏开发框架
Libgdx是一个跨平台的开发框架。它目前支持的平台有Windows,Mac OS X,Android,IOS和HTML5。
Libgdx允许你可以将代码不经任何修改的部署到多个平台。而不是修改你的代码适应不同的平台或者直接编译到HTML5。你可以在一个桌面开发环境中迅速部署你的代码。你可以使用所有的Java生态系统中的开发工具。
Libgdx可以在底层进行操作。可以让你直接访问文件系统,输入设备,输出设备,音频设备和通过统一的OpenGL ES接口访问OpenGL。
基于这些底层的操作,Libgdx建立了强大的API帮助你完成常见的开发任务。比如渲染精灵,绘制文本,构建用户界面,播放声音效果和音乐流,线性代数和三角计算,解析JSON和XML数据等。
在必要时,Libgdx可以通过本地代码追求更好的性能。所有这些功能隐藏在Java API函数中,所以你不用为为不同平台交叉编译本地代码而担心。Libgdx的很多部分可以运行在已知的平台中,所以你不用担心。
Libgdx旨在成为一个框架而不是一个引擎,世上没有一劳永逸的事。相反,Libgdx强大的抽象可以让你编写出你想要的游戏或者应用。
Libgdx是一个Java框架,它为编写游戏和实时应用提供了一个跨平台的API。Libgdx提供了以下的功能:
常规:
1、 支持Windows、Linux、OSX、IOS、Android和HTML5的跨平台的开发环境。(支持64位)
2、 基于JOGL、LWJGL、Angle,Android API函数、iOS API函数 andWebGL/HTML5 API函数的后端。
3、 在桌面编写和测试应用,无缝的部署在Android,IOS,JavaScript,Applet,Webstart或普通桌面。
图形:
1、 通过OpenGL ES进行渲染。
2、 支持JNI绑定。
3、 底层:
1) 顶点数组
2) 顶点缓冲区对象
3) 纹理
4) 纹理地图集
5) 易于使用、灵活的网格类
6) 帧缓冲对象
7) 着色器
8) 立即模式渲染器类(用于测试)
9) 自动处理OpenGL环境损失(纹理等)
4、2D:
1)批处理和精灵渲染
2)点阵字体
3)粒子系统
4)TMX地图渲染
5)操作位图的自定义2D图形库
6)成熟的具有补间动画的二维场景图
5、3D:
1)高级三维
2)OBJ和MD5模型加载器
3)关键帧和骨骼动画
4)投影和透视
音频:
1、 流媒体和音效播放(WAV、MP3、OGG)
2、 通过一个JNI桥到KissFFT的快速傅里叶变换
3、 音频解码
4、 对于简单回放和录制的直接接口
文件I/O:
1、 抽象层
2、 易于存储小数据
输入:
1、 基于事件的访问触摸屏、鼠标和键盘
2、 访问罗盘和加速度计
3、 Vibrator的支持
物理:
1、 box2d
数学:
1、 向量和矩阵
2、 四元数
3、 边界形状
4、 交叉和重叠测试
5、 Catmull-Rom插值
公用:
1、 自定义集合
2、 排序
3、 JSON
Libgdx是什么:
一个作为引擎和游戏基础的高性能,跨平台的游戏开发框架。这个框架允许我们我们专注于基础而不是游戏引擎的新的特性。它具有很棒的灵活性。
Libgdx 1.8.0 发布,此版本更新内容如下:
-
API Change: Rewrote FreeType shadow rendering (much better).
-
Added spaceX/Y to FreeType fonts.
-
Higher quality FreeType font rendering.
-
Hiero updated to v5, now with FreeType support and other new features!
-
GlyphLayout now allocates much, much less memory when processing long text that wraps.
-
Added LWJGL 3 backend, see https://github.com/libgdx/libgdx/issues/3673 for more info.
-
Added Graphics#getFramebufferWidth and Graphics#getFramebufferHeight for HDPI handling
-
API Change: Added HdpiUtils. Instead of calling GL20#glViewport and GL20#glScissor yourself
please use HdpiUtils instead. It will ensure that you handle HDPI monitors correctly when
using those OpenGL functions. On HDPI monitors, the size reported by Gdx.graphics
getWidth/getHeight is in logical coordinates as dictated by the operating system, usually half
the HDPI resolution. The OpenGL drawing surface works in backbuffer coordinates at the full
HDPI resolution. If you pass logical coordinates to glViewport and glScissor, you only
affect a quarter of the real backbuffer size. Use HdpiUtils instead, it will do the right thing, while letting you continue to work in logical (aka returned by Gdx.graphics.getWidth/getHeight) coordinates. -
API Change: Graphis#getDesktopDisplayMode() has been renamed to Graphics#getDisplayMode() and
returns the current display mode of the monitor the window is shown on (primary monitor on
all backends except LWJGL3, which supports real multi-monitor setups). -
API Change: Graphics#getDisplayModes() return the display modes of the monitor the monitor
the window is shown on (primary monitor on all backends except LWJGL3 which supports real
multi-monitor setups). -
API Change: Graphics#setDisplayMode(DisplayMode) has been renamed to
Graphics#setFullscreenMode(). If the window is in windowed mode, it will be switched
to fullscreen mode on the monitor from which the DisplayMode stems from. -
API Change: Graphics#setDisplayMode(int, int, boolean) has been renamed to
Graphics#setWindowedMode(int, int). This will NOT allow you to switch to fullscreen anymore,
use Graphics#setFullscreenMode() instead. If the window is in fullscreen mode, it will be
switched to windowed mode on the monitor the window was in fullscreen mode on. -
API Addition: Graphics#Monitor, represents a monitor connected to the machine the app is
running on. A monitor is defined by a name and it's position relative to other connected
monitors. All backends except the LWJGL3 backend will report only the primary monitor -
API Addition: Graphics#getPrimaryMonitor() returns the primary monitor you usually want
to work with. -
API Addition: Graphics#getMonitor() returns the monitor your app's window is shown on,
which may not be the primary monitor in >= 2 monitor systems. All backends except the
LWJGL3 backend will report only the primary monitor. -
API Addition: Graphics#getMonitors() returns all monitors connected to the system. All
backends except the LWJGL3 backend will only report the primary monitor. -
API Addition: Graphics#getDisplayMode(Monitor) returns the display mode of the monitor
the app's window is shown on. All backends except the LWJGL3 backend will report the
primary monitor display mode instead of the actual monitor's display mode. Not a problem
as all other backends run on systems with only a single monitor so far (primary monitor). -
Added option to include credentials on cross-origin http requests (used only for GWT backend).
-
Added option to specify crossorigin attribute when loading images with AssetDownloader (GWT), see #3216.
-
API Change: removed Sound#setPriority, this was only implemented for the Android backend. However, Android itself never honoured priority settings.
-
API Change: cursor API has been cleaned up. To create a custom cursor, call Graphics#newCursor(), to set the custom cursor call Graphics#setCursor(), to set a system cursor call Graphics#setSystemCursor(). The Cursor#setSystemCursor method has been removed as that was not the
right place. Note that cursors only work on the LWJGL, LWJGL3 and GWT backends. Note that system cursors only fully work on LWJGL3 as the other two backends lack a means to set a specific system cursor. These backends fall back to displaying an arrow cursor when setting any system cursor. -
API Addition: Added Lwjgl3WindowListener, allows you to hook into per-window iconficiation, focus and close events. Also allows you to prevent closing the window when a close event arrives.