形状渲染器。为什么圆形的像素点有点晃动?
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/
当我运行这个应用程序时,它有点晃动。我不明白,为什么会这样?圆圈的像素点不抖怎么办?
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/