首页 > 解决方案 > LibGdx:在同一批次上渲染 Sprite 和 PolygonSprite?

问题描述

对于我的应用程序,我需要在同一帧中渲染精灵(或纹理)和多边形精灵(或网格)。对于精灵,我在 Spritebatch 上渲染它们,对于 PolygoneSprites,我应该在 PolygonSpritebatch 上渲染它们。但我真的不能这样做:

spriteBatch.begin()
spritebatch.draw(sprite)
...
spriteBatch.end()

polygonSpritebatch.begin()
polygonSpritebatch.draw(polygonSprite)
...
polygonSpritebatch.end()

spriteBatch.begin()
spritebatch.draw(sprite)
...
spriteBatch.end()

etc...

那么,有没有办法?附上图片,看看我想要什么。

精灵和多边形精灵

非常感谢 !

标签: libgdxspritespritebatch

解决方案


简短的回答:

您可以使用 aPolygonSpriteBatch来绘制 aSprite以及 aPolygonSprite像这样:

polygonSpriteBatch.begin();

sprite.draw(polygonSpriteBatch);
polygonSprite.draw(polygonSpriteBatch);

更长的描述:

绘制 aSprite或 aPolygonSprite与您问题中的示例代码有些不同。因为既没有SpriteBatch方法draw(Sprite)也没有PolygonSpriteBatch方法draw(PolygonSprite),你做不到spriteBatch.draw(sprite)

这样做的方法是这样的:

spriteBatch.begin();
sprite.draw(spriteBatch);

polygonSpriteBatch.begin();
polygonSprite.draw(polygonSpriteBatch);

现在,由于PolygonSprite.draw将 aPolygonSpriteBatch作为参数,您将无法将 a 传递SpriteBatch给此方法。

但是由于Sprite.drawBatch对象作为参数,您可以将 aSpriteBatch或 aPolygonSpriteBatch作为参数传递(因为这两个类都实现了Batch接口)。


推荐阅读