小编Ale*_*DET的帖子

LibGDX精灵批量字体坏刻度渲染

在尝试将文本/对话框系统放入我的游戏项目时,我遇到了一个问题.当我创建一个字体并在其上调用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()没有成功.

有人知道如何实现这一目标吗?

java fonts scale libgdx spritebatch

6
推荐指数
1
解决办法
2672
查看次数

libgdx嵌套了FrameBuffer

我在我的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?

framebuffer glsl game-engine libgdx

2
推荐指数
1
解决办法
569
查看次数

标签 统计

libgdx ×2

fonts ×1

framebuffer ×1

game-engine ×1

glsl ×1

java ×1

scale ×1

spritebatch ×1