如何在Libgdx中绘制平滑圆

时间:2017-10-21 00:20:09

标签: android opengl-es libgdx

我正在尝试为Libgdx绘制一个圆圈,它是从Image not ShapeRenderer创建的。但是当我尝试将图像绘制到SpriteBatch时,它并不能平滑地绘制。
This is the Image that I am using

This is the Image that drawing

我检查了图像分辨率,图像尺寸为1673x1673,精灵尺寸为80x80。

  //This is my GameState code
  @Override
    public void render(float delta) {
        update(delta);
        SpriteBatch sb = game.batch;
        Color bg = ThemeFactory.getInstance().getTheme().backgroundColor;
        Gdx.gl.glClearColor(bg.r, bg.g, bg.b, bg.a);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        sb.setProjectionMatrix(camera.combined);
        sb.begin();
        for(int i =0;i<elements.size();i++){
            if(!(elements.get(i) instanceof Arrow)){
                elements.get(i).render(sb);//HERE IS DRAWING HAPPENING
            }
        }
        sb.end();
        barriers.render(sb);
        renderHud();
    }

我的圈子构造函数和渲染代码如下。

public Circle(Texture texture, Size size, Vector3 position){
        mSprite = new Sprite(texture);
        mSprite.setSize(size.width, size.height);//80x80
        mSprite.setPosition(position.x, position.y);
        mSprite.setOriginCenter();
    }
@Override
public void render(SpriteBatch sb) {
    mSprite.draw(sb);
}

2 个答案:

答案 0 :(得分:1)

在纹理中使用滤镜。

例如

texture.setFilter (TextureFilter.Nearest, TextureFilter.Nearest );

有关过滤器的详细信息,请参阅此博客:http://www.badlogicgames.com/wordpress/?p=1403

答案 1 :(得分:1)

2个提示: 1.提高抽样 2.使用libgdx mipmap作为纹理

我建议使用:filter 1:MipMapLinearNearest,Nearest或filter 2:Linear,Linear

过滤器1快,过滤器2高质量

了解更多信息,请阅读this

过滤

缩小/放大滤镜定义缩放时图像的处理方式。对于&#34;像素艺术&#34;风格游戏,通常是Filter.Nearest是合适的,因为它导致硬边缩放而不模糊。指定Filter.Linear将使用双线性缩放以获得更平滑的结果,这通常对3D游戏(例如1024x1024摇滚或草纹理)有效,但对于2D游戏并非总是如此。在OpenGL中,使用的术语分别是GL_NEAREST和GL_LINEAR。