美文网首页LibGDX
LibGDX 模块概述

LibGDX 模块概述

作者: 天神Deity | 来源:发表于2017-08-16 21:49 被阅读15次

本文为 Modules overview 的译文

介绍

LibGDX 由多个模块构成,它为架构的游戏的每一步提供服务。
Input :为所有的平台提供统一的输入模型和处理程序,支持键盘,触摸屏,加速度计和鼠标。
Graphics:使用OpenGL ES提供硬件支持,可以将图像绘制到屏幕上。
Files:提供方便的读/写方法,在所有的平台上进行文件访问。
Audio:便于在所有平台上进行录音和播放.
Networking: 提供执行网络操作的方法,例如简单的HTTP获取和发布请求以及TCP服务器/客户端套接字通信。

简单的游戏架构模块

以下部分简要介绍了为每个模块提供最常见的用例

模块

Input

输入模块可以在每个平台上轮询不同的输入状态。 它允许轮询每个键,触摸屏和加速度计的状态。 在桌面上,当加速度计不可用时,触摸屏被鼠标所取代。
它还提供了注册输入处理器以实现基于事件的输入模型的方法.
以下的代码展示了 触摸(或者桌面应用鼠标正在移动),那么它或获取到当前的坐标

if (Gdx.input.isTouched()) {
  System.out.println("Input occurred at x=" + 
      Gdx.input.getX() + ", y=" + Gdx.input.getY()); 
}

类似的,所有支持的输入设备都可以被轮询和处理。

Graphics

Graphics 模块抽象了与GPU通信并提供了获取OpenGL ES工具类简便的方法,它着重于OpenGL ES的底层抽象代码,针对不同的平台,有不同的实现策略。

依据不同的底层硬件,Graphics 的工具类 有可能不可用。
Graphics模块还提供了生成Pixmap和Texture的方法。
比如,获取OpenGL 2.0的API实例,可以使用以下代码:

gl.glClearColor(1f, 0.0f, 0.0f, 1);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

以上代码总是返回针对不同平台的具体实现(lwjgl, jogl or android),而主应用无需关心具体内容,如果支持,它将在平台范围内正常工作.

目前支持的Graphics API版本

GL Version 获取方法
2.0 Gdx.graphics.getGL20();
3.0 Gdx.graphics.getGL30();

如果想了解更多关于Graphics的知识,请点击这里

Files

跨平台的文件模块访问文件的通用方式,它是文件读写变得更容易,由于平台安全性限制,文件写入存在一定的限制.
文件模块最常用的场景是将游戏资源(纹理、声音文件)从同一个应用程序的子目录加载到所有平台,当然也适用于保存游戏状态或者写入游戏分数的场景。

以下示例从$APP_DIR/assets/textures 目录创建一个纹理:

Texture myTexture = new Texture(Gdx.files.internal("assets/texture/brick.png"));

这是一个非常强大的抽象层,因为在各个平台上它都可以运行。

Audio

音频模块使音频文件的创建和播放非常简单。 它还可以直接访问声音硬件。
音频模块支持两种类型的音频文件,Music & Sound,不管是哪种类型,都支持WAV, MP3 , OGG 格式的文件.

声音文件被加载到内存中,随时可以被播放,例如爆炸声或者枪声。音乐实例是来自磁盘或者SD卡上的文件的流,每次播放声音文件时,都会将文件传输到音频设备上。

以下代码片段从磁盘重复播放声音文件myMusicFile.mp3:

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", 
FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);

Networking

网络模块提供对游戏网络有用的功能,可用于添加多人游戏,将玩家发送到您的网站或执行其他网络任务。 这些功能可在多个平台中使用,但某些平台可能需要额外的注意事项或缺少某些功能。

网络模块包括可配置的TCP客户端和服务器套接字,其设置针对低延迟进行优化。

还有用于进行HTTP请求的方法和实用程序。 一个这样的实用程序是Request Builder,它使用方法链来轻松创建HTTP请求。

Request Builder可用于使用以下代码片段创建HTTP请求:

HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
HttpRequest httpRequest = requestBuilder.newRequest()
   .method(HttpMethods.GET)
   .url("http://www.google.de")
   .build();
Gdx.net.sendHttpRequest(httpRequest, httpResponseListener);

它也可以用于使用以下代码段创建带有参数的HTTP请求:

HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
HttpRequest httpRequest = requestBuilder.newRequest()
   .method(HttpMethods.GET)
   .url("http://www.google.de")
   .content("q=libgdx&example=example")
   .build();
Gdx.net.sendHttpRequest(httpRequest, httpResponseListener);

相关文章

  • LibGDX 模块概述

    本文为 Modules overview 的译文 介绍 LibGDX 由多个模块构成,它为架构的游戏的每一步提供服...

  • LibGDX音频模块之播放pcm音频

    LibGDX的音频模块可以让您直接访问音频硬件并直接将PCM样本写入音频硬件中。在LibGDX中,AudioDev...

  • LibGDX图形模块开篇

    此页面需要重写。 介绍 图形模块提供有关当前设备显示和应用程序窗口的信息,以及有关当前OpenGL上下文的信息和访...

  • LibGDX音频模块开篇

    Libgdx提供播放音效(sound,短小精悍的音频文件)以及音乐片段(文件较大,一般在10秒以上)的方法,它还为...

  • LibGDX图形模块之剖析

    本文介绍的实用工具可能会派上用场,以防遇到性能问题,并需要开始分析你的游戏。 FPSLogger FPSLogge...

  • LibGDX图形模块之Ninepatches

    本文介绍了NinePatch图像,如何创建它们以及如何在Libgdx上下文中使用它们。 在你开始之前 本指南适用于...

  • LibGDX图形模块之清屏

    要清除Libgdx中的屏幕与在常规OpenGL应用程序中清除屏幕是不同的。 唯一的区别在于如何访问OpenGL上下...

  • LibGDX图形模块之网格

    网格是一组顶点(和可选的索引)的组合,它们描述了用于渲染的几何图形。 顶点以顶点缓冲对象(VBOs)的形式保存在V...

  • LibGDX输入模块之罗盘

    一些Android设备和iOS设备有一个集成的磁场传感器,提供有关器件获取北极方向的信息。 注意:目前在iOS设备...

  • LibGDX输入模块之轮询

    轮询是指检查输入设备的当前状态,例如特定的键被按下,屏幕上的第一个手指在何处等等。这是一种处理用户输入的快速简便的...

网友评论

    本文标题:LibGDX 模块概述

    本文链接:https://www.haomeiwen.com/subject/ydswrxtx.html