在尝试将文本/对话框系统放入我的游戏项目时,我遇到了一个问题.当我创建一个字体并在其上调用draw方法传递相机更新的spriteBatch时,该字体的每个像素都具有一个sprite的相同维度.
我得到以下渲染:

您可以在图片上看到的是每个像素超大的"你好"的"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();
Run Code Online (Sandbox Code Playgroud)
我尝试过使用但font.setScale()没有成功.
有人知道如何实现这一目标吗?
我在我的LevelScreen渲染方法中使用FBO渲染多遍模糊着色器.我想要实现的是制作一个MenuScreen,在背景上渲染LevelScreen,在其上应用另一个模糊效果.
这是伪代码
protected void render(float delta) {
// render the scene to the FBO
fbo.begin();
levelScreen.render(delta);
fbo.end();
// retrieve texture and flip Y
Sprite background = new Sprite(fbo.getColorBufferTexture());
background.flip(false, true);
// apply the blurX shader and
// render the sprite
batch.setShader(blurH);
batch.begin();
background.draw(batch);
batch.end();
}
Run Code Online (Sandbox Code Playgroud)
问题是该levelScreen.render()函数已经包含a fbo.begin() fbo.end()并且场景直接在屏幕上呈现.
有没有办法处理正确嵌套的fbo?