我正在尝试为Libgdx绘制一个圆圈,它是从Image not ShapeRenderer创建的。但是当我尝试将图像绘制到SpriteBatch时,它并不能平滑地绘制。
我检查了图像分辨率,图像尺寸为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);
}
答案 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。