LibGDX Big FreeType MipMapped字体看起来像素化

时间:2015-07-08 10:30:39

标签: java android fonts libgdx mipmaps

我已经在LibGDX上开发了一款Android游戏,而我刚刚发现了一个以前没人见过的问题。我搜索了如何平滑文本的答案,他们说了两件事:

  1. 使用FreeType字体。
  2. 使用MipMap纹理过滤器。
  3. 所以,我使用FreeType字体,并应用了mipmap,我非常确定过滤器正在缩小字体(因此,使用mipmap),因为字体大小为200,真正的屏幕是绝对不是那么大。

    我不知道我是否犯了某种愚蠢的错误或其他什么,但我无法弄清楚为什么会发生这种情况,因为我所做的似乎解决了这个问题其他人的问题。

    所以,这就是我所做的:

    我有一个包含我要加载的东西的资产类,(忘记精灵)看起来像这样:

    public static BitmapFont font;
    
    public static void load(){
        FreeTypeFontGenerator fontGen = new FreeTypeFontGenerator(Gdx.files.internal("vaques/OpenSans-Bold.ttf")); //free font from fontsquirrel.com
        FreeTypeFontParameter fontPar = new FreeTypeFontParameter();
    
        fontPar.size = 200;
        fontPar.color = Color.valueOf("ffffff");
        fontPar.genMipMaps = true;
    
        font = fontGen.generateFont(fontPar);
        font.getRegion().getTexture().setFilter(TextureFilter.MipMapLinearNearest, TextureFilter.Linear);
    
        fontGen.dispose();
    
    }
    

    然后,我在主类的create()方法上加载字体,然后在Screen.java文件上绘制它们。获得它看起来像这样的短信:

    //Outside the constructor (variable declaration part):
    OrthographicCamera textCam;
    ViewPort textPort;
    SpriteBatch textBatch;
    
    //...
    
    //Inside the constructor:
    textBatch = new SpriteBatch();
    textCam = new OrthographicCamera();
    textPort = new ExtendViewport(1600,0,textCam);
    textPort.apply(false);
    
    //...
    
    //On the Render() method:
    Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    
    textCam.update();
    textBatch.setProjectionMatrix(textCam.combined);
    
    textBatch.begin();
        Assets.font.setColor(Color.valueOf("821201")); //whatever the color
        Assets.font.draw(textBatch,Integer.toString((int) (1/delta)), 80, 2400-40);
    textBatch.end(); 
    
    //I draw more text, but it looks the same as this one, just in other colors.
    

    这里是该文字的截图: It seems I can't post images directly, so here's the link

    该图像显示了一个圆圈的一部分,从1024x1024 png缩小到通过mipmapping。当我通过ShapeRenderer绘制它们时,它们看起来与文本完全相同,但现在看起来很好。

    知道为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

您的MAC是否支持使用MipMap纹理过滤器的 FreeType字体 。我对此有点怀疑。确认。

答案 1 :(得分:0)

我终于找到了自己的答案。看起来愚蠢的字体大小导致了清晰度,而不是帮助使文本流畅。

我缩小了用于写入文本的视口的大小以及字体大小(除以2),现在文本很流畅。