形状渲染器。为什么圆形的像素点有点晃动?

ShapeRenderer. Why are circle's pixels a little bit shaking?

当我运行这个应用程序时,它有点晃动。我不明白,为什么会这样?圆圈的像素点不抖怎么办?

public class Main extends ApplicationAdapter {

    ShapeRenderer shapeRenderer;

    float x,y;

    @Override
    public void create() {

        shapeRenderer = new ShapeRenderer();
        x = Gdx.graphics.getWidth() / 2;
        y = Gdx.graphics.getHeight() / 2;
    }

    @Override
    public void render() {
        //Gdx.gl.glClearColor(0, 0, 0, 1);
        //Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        shapeRenderer.setColor(1, 0, 0, 1);
        shapeRenderer.circle(x++, y, 100);
        shapeRenderer.end();
    }

    @Override
    public void dispose() {
        shapeRenderer.dispose();
    }
}

您的渲染未在帧之间以相同的增量(时间间隔)调用,导致感知速度抖动。通常使用 LibGDX 时,使用增量调用渲染方法,即自上次渲染以来的时间,但是,您使用的是 ApplicationAdapter。 您可以通过自己获取增量时间并从

更改增量来进行补偿
shapeRenderer.circle(x++, y, 100);

x=x+ (Gdx.graphics.getDeltaTime()* incrementConstant);

根据需要调整 float incrementConstant 以获得速度。

阅读这篇关于调整游戏中不规则时间步长的优秀文章。 https://gafferongames.com/post/fix_your_timestep/