LibGDX-绘制到FrameBuffer无效

强约书亚

因此,我正在尝试制作自定义按钮,为此我需要结合按钮背景的不同部分。为此,我认为使用FrameBuffer是可以的,但是并没有给出可行的结果。因此,我试图通过编写一个简单的测试方法来测试我的FrameBuffer绘制方法,该方法将在每个render()调用中返回绘制到显示的纹理。此方法在此处(请注意,这是一种测试方法,因此可能在优化上有些欠佳):

    private Texture test()
{
    BitmapFont f = ReverseBlade.fontTitle;
    f.setColor(Color.LIGHT_GRAY);

    FrameBuffer fbo = new FrameBuffer(Format.RGBA8888, (int)f.getBounds("Hi").width, (int)f.getBounds("Hi").height, false);
    Batch b = ReverseBlade.batch;
    OrthographicCamera c = new OrthographicCamera(fbo.getWidth(), fbo.getHeight());

    c.setToOrtho(false);
    c.update();
    b.setProjectionMatrix(c.combined);

    fbo.begin();
    b.begin();

    f.draw(b, "Hi", 0, 0);

    b.end();
    fbo.end();

    Texture t = fbo.getColorBufferTexture();

    fbo.dispose();

    b.setProjectionMatrix(ReverseBlade.camera.combined);

    return t;
}

但是,什么也不显示。屏幕很暗...我尝试过没有相机和其他我不记得的其他变化。我究竟做错了什么?

半解决方案我最终要做的是像这样为FrameBuffer创建一个新的Matrix4对象:

Matrix4 m = new Matrix4();
m.setToOrtho2D(0, 0, fbo.getWidth(), fbo.getHeight());
batch.setProjectionMatrix(m);

但是,这会使绘制的所有内容都颠倒过来,如下所示: 上下翻转

强约书亚

因此,按照我在Half Solution中添加的内容,我要做的就是用FBo中的纹理创建一个新的Sprite对象,然后调用flip(false,true)!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章