【问题标题】:libgdx spritebatch not rendering textureslibgdx spritebatch 不渲染纹理
【发布时间】:2014-10-28 14:20:20
【问题描述】:

我正在使用 LibGDX 开发一个自上而下的 RPG 游戏,并且正在为我的游戏创建一个 Ortho.. 相机。然而,这样做,现在只有我的瓷砖纹理渲染。这是渲染代码的样子:

相机初始化为new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

(注意camera. 调用实际上是在world.update 方法中,我只是想我会尽量减少此处所需的代码量)

更新/渲染:

camera.position.set(getPlayer().getPosition().x, getPlayer().getPosition().y, 0);
camera.update();
batch.setProjectionMatrix(world.getCamera().combined);
batch.begin();
world.render(batch);
batch.end();

世界的渲染方法最终调用了这个:

public void render(SpriteBatch batch, float x, float y, float w, float h) {
    batch.draw(region, x, y, w, h);
}

其中region 是TextureRegion

没有相机,一切都很好,所以我很困惑为什么纹理现在只能按顺序渲染(我的平铺纹理在实体下方渲染)有人知道为什么会这样吗?如果您想查看更多代码,我的 github 上也有这个:CLICK HERE

【问题讨论】:

  • 您在camera 上调用了几个方法,但随后您将批处理的投影矩阵设置为world.getCamera。这些是同一个相机吗?
  • @Tenfour04 是的,camera. 调用是从 world.update 复制而来的,我只是想我会尽量减少此处所需的代码

标签: java camera libgdx render spritebatch


【解决方案1】:

后来我没有意识到这一点,但是我正在逐行注释掉很多渲染行,看看我是否能找到问题所在,结果证明我制作的调试工具(它使用ShapeRenderer) 搞砸了,因为显然,ShapeRenderer 不能在 batch.begin 和 batch.end 之间使用

我在this badlogicgames forum post 的帮助下解决了这个问题

【讨论】:

  • 很棒的提示。我也使用ShapeRenderer 进行调试,想知道为什么没有一个Sprite 被绘制...
【解决方案2】:

无法从代码中得到太多,但您是否在渲染结构的根部使用它?

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

【讨论】:

  • 是的,当我为每个纹理使用一个 spritebatch 时,一切都很好,但后来我读到这一切都可以用一个来完成,这样我就可以使用相机了,所以我把它切换到只使用一批,它就是这么坏的,如果有帮助的话?
猜你喜欢
  • 2011-11-24
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多