【问题标题】:LibGDX Sprite Rendering issuesLibGDX Sprite 渲染问题
【发布时间】:2016-02-27 17:10:00
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: java libgdx sprite render


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢!我花了 5 个小时才把它修好,真是你的救命稻草!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2021-07-07
    相关资源
    最近更新 更多