何时在Libgdx中使用ShapeRenderer,Mesh + SpriteBatch,Box2D和Scene2D?

Cri*_*tos 11 android box2d libgdx scene2d

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

所以,我真正想知道的是什么时候应该使用ShapeRenderer,Mesh + SpriteBatch,Box2D和Scene2D.

P.T*_*.T. 25

LibGDX有很多(大多数是正交的)API用于渲染.我仍然在学习他们中的许多人,但我可以概述不同的部分.

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

Mesh班为您提供了几何更直接的控制,但你接触到了更多的详细信息(如相同的浮动阵列中的所有颜色编码的花车和存储顶点数据,颜色数据和纹理数据和概念索引数组).

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

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

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

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

你可以完全混合和匹配这些不同的原语(一个警告是你通常必须"刷新"和"结束"任何ShapeRenderer/ SpriteBatch/ Mesh渲染之前开始一个不同的味道).因此,例如,您可以将Scene2D用于游戏中的"主菜单"和一些元操作,a SpriteBatch用于渲染游戏的核心,并使用a ShapeRenderer生成调试叠加(想想可视化边界框等).

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

检查gdx-invaders示例以查看它的使用方法Mesh,OpenGL和SpriteBatch.(我认为这个例子早于Scene2d,所以没有...).同样值得查看这些类的实现,看看它们在封面下做了什么.