【问题标题】:LibGdx : render Sprite and PolygonSprite on same batch?LibGdx:在同一批次上渲染 Sprite 和 PolygonSprite?
【发布时间】:2021-07-07 18:30:02
【问题描述】:

对于我的应用程序,我需要在同一帧中渲染精灵(或纹理)和多边形精灵(或网格)。 对于精灵,我在 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...

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

非常感谢!

【问题讨论】:

    标签: libgdx sprite spritebatch


    【解决方案1】:

    简答:

    您可以使用PolygonSpriteBatch 来绘制Sprite 以及PolygonSprite,如下所示:

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

    更长的描述:

    绘制SpritePolygonSprite 与您问题中的示例代码有些不同。由于SpriteBatch 没有draw(Sprite) 方法,PolygonSpriteBatch 也没有draw(PolygonSprite) 方法,所以您不能使用spriteBatch.draw(sprite)

    这样做的方法是这样的:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-27
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2013-12-08
      相关资源
      最近更新 更多