2017-10-21 437 views
2

我想绘制一个圆形到从Image not ShapeRenderer创建的Libgdx。但是,当我尝试将图像绘制到SpriteBatch时,它不会顺利绘制。
This is the Image that I am using如何在Libgdx中绘制光滑的圆圈

This is the Image that drawing

我检查了图像分辨率和图像尺寸是1673x1673和雪碧尺寸是80×80。

//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); 
} 

回答

1

2个提示: 1.提高了采样 2.使用libgdx纹理贴图为你的纹理

我建议使用:过滤器1 :MipMapLinear最近的,最近的或过滤器2:线性的,线性的

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

更多信息阅读this


过滤

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

+0

谢谢你的回答。我使用MipMapLinearNearest,Nearest过滤器解决了我的问题。 –

1

在纹理中使用过滤器。

例如,

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

有关筛选的详细信息,请参阅本博客:http://www.badlogicgames.com/wordpress/?p=1403

+0

TextureFilter.Nearest在Texture类中是标准的。不像他改变它。 – icarumbas

+0

它不会改变任何东西 –

+0

你尝试过滤器MipMapLinearNearest? –