java LibGDX sprite批处理字体错误比例渲染
我在尝试在游戏项目中使用文本/对话系统时遇到了一个问题。当我创建一个字体,并通过相机更新的spriteBatch调用其上的draw方法时,字体的每个像素都具有与一个sprite相同的尺寸
我得到以下渲染:
你能在图片上看到的是“hello”的“h”的顶部,每个像素都过大了。 相同的摄影机用于渲染瓷砖/精灵
我想要达到的效果与此类似:
以下是代码:
// 15 * 12 tile size
camera = new OrthographicCamera(Const.VIEWPORT_WIDTH, Const.VIEWPORT_HEIGHT);
BitmapFont font = new BitmapFont(Gdx.files.internal("data/fonts/myfont.fnt"));
// ....
// p => player position
camera.position.x = p.getX();
camera.position.y = p.getY();
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
font.draw(batch, "hello", p.getX(), p.getY());
batch.end();
我尝试过使用font.setScale()
但没有成功
有人知道如何做到这一点吗
# 1 楼答案
创建一个具有更大视口的摄像头(例如,测试设备的完美像素)。然后用它来呈现你的字体。也不要每次渲染都创建新字体,在开始时创建并使用它
编辑:
要计算你应该画文本的位置,应该是这样的。假设你的世界相机叫“cam”,文本相机叫“guicam”。还有一个叫做“对象”的游戏对象
# 2 楼答案
你可以试试
Texture.TextureFilter.Linear
的min&;麦克斯过滤器Libgdx AssetManager使用所需的过滤器加载位图字体: