Java 成型机。为什么是圆';有点摇晃吗?

Java 成型机。为什么是圆';有点摇晃吗?,java,libgdx,Java,Libgdx,当我运行这个应用程序时,它有点摇晃。我不明白,为什么会这样?我应该怎么做才能使圆圈的像素不抖动 public class Main extends ApplicationAdapter { ShapeRenderer shapeRenderer; float x,y; @Override public void create() { shapeRenderer = new ShapeRenderer(); x = Gdx.g

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

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,使用delta调用render方法,即自上次渲染以来的时间,但是,您使用的是ApplicationAdapter。 您可以通过自己获取增量时间并更改增量来进行补偿

shapeRenderer.circle(x++, y, 100);

根据您喜欢的速度调整浮动增量常量

阅读这篇关于调整游戏中不规则时间步长的优秀文章。

详细说明“摇晃”。您正在不断增加
x
,因此您已经在不断移动圆。如果我在render中添加此代码:Gdx.gl.glClearColor(0,0,0,1);Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);圆圈移动时没有任何像素抖动(像素抖动)。但当我删除这两行时,圆圈的过去帧在抖动(圆圈的像素在抖动)。没有屏幕截图或GIF很难分辨。但是,如果您不清除屏幕,并且不断增加
x
,那么它可能会慢慢地在
x
上画出越来越多的圆圈。非常感谢!!!
x=x+ (Gdx.graphics.getDeltaTime()* incrementConstant);