2014-03-13 30 views
0

这是一个未解决的问题,但我会尽量做到尽可能具体。LibGDX正确处理点精灵进行群集?

我已经在Android Studio中编写了一些东西,现在使用Eclipse + LibGDX来查看游戏。这是一个相当高/中等水平的API,因此我们无法再深入到绘制图形的较低层次。但是,我们知道它使用四重渲染方法。现在

,这种方法适用于大多数类型的游戏,但如果我想看看成颗粒的群聚算法(比如,1000点),以前我用点精灵渲染。看来libgdx不使用这种方法。

问题:你知道libgdx是否支持Point Sprites(1000+)在屏幕上独立移动(基于我自己的公式)。 Quad渲染将随着要使用的精灵数量而变得非常缓慢。例如,1000个球在盒子周围弹跳。

注 - 我没有看到粒子系统,因为它们似乎只是发射器,并且定义了粒子如何从该源发出(例如烟花爆炸)。目标:我计划让许多对象在远处观看时使用Point Sprite方法呈现(对于绝对数量的对象快得多),然后在放大时恢复为Quad Rendering (关于图中的细节)。这仅用于优化目的。

这是Libgdx允许的吗?

非常感谢您提供的任何帮助。

亲切的问候, Ĵ

+0

@ Gabriel.Massana尽管我们欢迎您提高质量问题的努力,但编辑问候通常不被视为编辑的理由。尝试尽可能地编辑_substantial_。 –

回答

0

LibGDX充分暴露了OpenGL ES的功能,因此,如果一些比较高层次的库函数不适合你,那么你可以自由地挖成GL_POINTS自己。但我建议你先尝试没有积分,然后看看你是否需要优化它。

+0

好吧,那么试试10个球弹跳,100,1000,10000等性能测试,直到我得到明显的滞后?那么是否有一种标准的方式来显示不同的精灵,如果缩小,以帮助这种表现?再次,只是在缩小时考虑放大的细节级别在缩小时是不确定的。 – Jammo

+0

我能想到的唯一标准是根据屏幕像素大小上的精灵来自动显示不同的纹理,这将是mipmapping。您只需更改纹理过滤器设置,并在运行时生成较小的纹理副本并使用,从而减少OpenGL的纹理工作。见http://www.badlogicgames.com/wordpress/?p=1403 – Chase

+0

好的,我有两种方法的工作。 OLD方法,render()方法,batch.begin,“每个球,game.batch.draw(ballImage,ball.x,ball.y)”,batch.end。 - NEW方法:使用stage和actors,在render()stage.act和stage.draw中。然而,stage.draw导致FPS下降到8或9FPS,只有1000个舞台上的演员对象。不知道是什么原因造成了巨大的下降 – Jammo