LibGDX Sprite渲染问题

时间:2015-11-25 02:33:03

标签: java libgdx sprite render

我使用LibGDX并且在渲染Sprites时出现问题,我现在已经工作了6个小时,现在我差不多想要撕掉自己的头发了。

如果我只是绘制精灵,那么精灵会这样绘制(小绿色的东西:https://gyazo.com/6a70bb710fdd6bb9d372cef050cb6c4e

如果我之后绘制了任何内容,请说出我的rayHandler,精灵不会绘制:https://gyazo.com/432d7cbd19f55b6be7252537b14cd35b

这是我的渲染方法:

    @Override
public void render(float delta) {

    /**
     * Clear screen.
     */
    Gdx.gl.glClearColor(0, 0, 0, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    continuousInput(delta);
    update(delta);

    /**
     * Start 'spriteBatch'.
     */
    spriteBatch.begin();
    spriteBatch.setProjectionMatrix(cameraHandler.orthographicCamera.combined);
    spriteBatch.disableBlending();

    /**
     * Render our handlers
     */
    spriteBatch.draw(texture, 100, 1);
    //mapHandler.render(delta);
  //  lightHandler.render(delta);
 //   playerHandler.render(delta, spriteBatch);
    spriteBatch.draw(texture, 100, 1);
    spriteBatch.draw(texture, 1, 1);

    /**
     * End 'spriteBatch'.
     */
    spriteBatch.end();
}

我的项目相当大,所以我不会包含任何特定的课程,但如果你们知道这是一个常见问题,那么解决方案将非常有用。 这是我整个项目的代码,最后它变得凌乱,因为我非常集体。

注意:地图和所有内容都很好,我认为这是spriteBatch的一个问题,但我无法弄清楚。

消息来源:http://www.filedropper.com/resident

再一次,谢谢!任何回应表示赞赏。 - 杰克

1 个答案:

答案 0 :(得分:2)

最明显的问题是你在spriteBatch.begin()end()之间绘制非SpriteBatch内容。当您调用spriteBatch.begin()时,它会设置其着色器及其参数,混合参数等,并且在调用end()之前不会指望其他对象更改它们。

我假设您的lightHandler.render()正在调用box2dlights中的某些内容来将光渲染到场景中,因此该对象将修改当前活动的着色器,并且混合参数和精灵批次将不知道发生了什么,无法做出反应。

所以在绘制未使用精灵批处理绘制的任何内容之前调用spriteBatch.end()。如果你需要在非SpriteBatch之上绘制精灵,你可以再次调用begin()