2017-10-21 24 views
2

J'essaye de dessiner un cercle à Libgdx qui est créé à partir de Image pas ShapeRenderer. Mais quand j'essaye de dessiner l'image sur SpriteBatch, ça ne dessine pas bien.
This is the Image that I am usingComment dessiner un cercle lisse dans Libgdx

This is the Image that drawing

J'ai vérifié la résolution de l'image et la dimension d'image est 1673x1673 et taille Sprite est 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(); 
    } 

Mon constructeur de cercle et le code de rendu sont indiqués ci-dessous.

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

Répondre

1

2 conseils: 1. Suscite échantillonnage 2. Utilisez libgdx mipmap pour votre texture

Je recommande d'utiliser: filtre 1 : MipMapLinearNearest, à proximité ou un filtre 2: linéaire, linéaire

filtre 1 est rapide, le filtre 2 est de haute qualité

pour plus d'informations lire this


Filtrage

Les filtres minification/grossissement définissent la façon dont l'image est traitée sur l'échelle. Pour les jeux de style "pixel-art", Filter.Nearest convient généralement car il conduit à une mise à l'échelle hard-edge sans flou. La spécification de Filter.Linear utilisera la mise à l'échelle bilinéaire pour obtenir des résultats plus fluides, ce qui est généralement efficace pour les jeux 3D (par exemple une texture de roche ou de pelouse de 1024 x 1024), mais pas toujours pour un jeu 2D. En OpenGL, les termes utilisés sont GL_NEAREST et GL_LINEAR, respectivement. TextureFilter.Nearest est standard dans la classe Texture.

+0

Merci de votre réponse. J'ai résolu mon problème en utilisant MipMapLinearNearest, le filtre le plus proche. –

1

Utilisez un filtre dans votre texture.

Par exemple.

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

Pour plus d'informations sur les filtres, reportez-vous ce blog: http://www.badlogicgames.com/wordpress/?p=1403

+0

Ne pas avoir l'air comme il l'a changé. – icarumbas

+0

Il n'a rien changé –

+0

Avez-vous essayé le filtre MipMapLinearNearest? –