11

我是 Android 游戏开发的新手,在我开始使用 libgdx ShapeRenderer 并进行了更多搜索后,如果我从右脚开始,我会感到困惑。

所以,我真正想知道的是何时应该使用 ShapeRenderer、Mesh + SpriteBatch、Box2D 和 Scene2D。

4

1 回答 1

26

LibGDX 有很多(大部分是正交的)用于渲染的 API。我仍在学习其中的许多方法,但我可以概述不同的部分。

ShapeRenderer让您快速轻松地在屏幕上放置基本的纯色多边形和线条。它不是特别有效(它在每次渲染时上传大量顶点数据)。但它可以很快开始。它强烈地面向屏幕(它默认为全屏上的正交项目,其单位通常是像素)。

该类Mesh使您可以更直接地控制几何图形,但您会接触到更多细节(例如将颜色编码为浮点数并将顶点数据、颜色数据和纹理数据都存储在同一个浮点数组中,以及索引数组)。

SpriteBatch围绕“精灵”(通常是其中带有纹理的矩形区域)定向。这隐藏了网格纹理的一些复杂性(和灵活性)。

Box2D 用于物理建模,与您提到的任何其他 API 部分不同(主要与渲染有关)。

最后,Scene2D主要是关于创建动画用户界面元素,如按钮、列表和滑块。但它足够强大(并且对动画和交互事件有足够简洁和灵活的支持),您也可以在其中实现相当多的“游戏”。

您也可以使用原始的“OpenGL”命令(请参阅 参考资料GL20)。

您可以完全混合和匹配这些不同的原语(一个警告是,在开始不同的风格之前,您通常必须“刷新”和“结束”任何//渲染)ShapeRenderer。因此,例如,您可以将 Scene2D 用于您的“主菜单”和游戏中的一些元操作,a来渲染游戏的核心,并使用 a来生成调试覆盖(考虑可视化边界框等)。SpriteBatchMeshSpriteBatchShapeRenderer

另请注意,大多数 libGDX 都面向 2D。RawOpenGLMeshAPI 也可用于构建 3D 对象。

查看gdx-invaders 示例,了解它如何使用.OpenGLMeshSpriteBatch. (我认为这个例子早于 Scene2d,所以没有那个......)。查看这些类的实现以了解它们在幕后所做的工作也是值得的。

于 2013-02-21T02:39:41.587 回答