我很困惑于 libgdx 中的 FreeTypeFontGenerator。
下面是我的代码:
public class FontTestScreen extends ScreenAdapter {
private static final float WORLD_HEIGHT = 100;
private static final int FONT_SIZE = (int) (WORLD_HEIGHT/10);
private Viewport viewport;
private SpriteBatch batch;
private FreeTypeFontGenerator fontGenerator;
private BitmapFont font;
public FontTestScreen() {
fontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("calibri.ttf"));
batch = new SpriteBatch();
/* Setting the viewport */
viewport = new ExtendViewport(0, WORLD_HEIGHT);
/* BitmapFont */
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = FONT_SIZE;
parameter.color = Color.BLACK;
font = fontGenerator.generateFont(parameter);
}
@Override
public void resize(int width, int height) {
viewport.update(width, height, true);
batch.setProjectionMatrix(viewport.getCamera().combined);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
font.draw(batch, "Hello", WORLD_HEIGHT/2, WORLD_HEIGHT/2);
batch.end();
}
}
我的问题如下: 如果我正确理解了视口的原理,那么我应该摆脱像素的概念。如果我的世界以米为单位,那么我应该使用视口来设置我的世界坐标,而不是用像素思考。在我的例子中,我的世界高度为100米。我想打印一个大小为10米的文本。问题是文本非常模糊,无法阅读。如果将我的“world_height”更改为1000,而不是10,并尝试使用大小为100而不是10的文本进行打印,则文本不再模糊。 但对纹理没有这种情况!为什么只有比例很重要时,我必须与此斗争?
我发现的更合乎逻辑的答案是我做错了。请帮助我理解处理字体的正确方式。