LibGDX FrameBuffer混合

时间:2012-08-14 23:24:18

标签: opengl libgdx blend framebuffer fbo

这里有一些快速背景,我刚开始使用LibGDX框架进行Android游戏开发的第一次尝试。我试图通过放置精灵来使用他们的FrameBuffer类来构建纹理,并且我想将此纹理用作一种逐级动态/随机背景。

不幸的是,似乎当精灵被添加到FrameBuffer时,它们将完全覆盖它们下面的任何东西。一般来说这很好,但是我将使用的许多精灵都有半透明像素,并且因为这些透明像素会覆盖它们下面的任何实心像素,它会显示出基本的背景颜色并产生非常不愉快的效果

换句话说,从多个精灵中创建一个实体纹理的最佳方法是什么,并将它们叠加在一起而不完全去除下部像素(至少如果顶部像素是半透明的) ?

经过多年的实验和搜索,我感到很茫然。谢谢你的时间!

-----编辑-----

以下是用于将精灵添加到FBO的代码。它非常缺乏,因为现在,我只是在随机位置添加一个精灵用于测试目的。我很乐意根据要求发布任何代码,但现在整个设置非常简约,以解决这个问题。

    m_fbo.begin();
    batch.begin();
    batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
    sprite.draw(batch);
    batch.end();
    m_fbo.end();

1 个答案:

答案 0 :(得分:0)

老问题,但是你可以粘贴FBO初始化代码吗?你需要在FBO中拥有一个alpha通道。另一件事是FBO是GLES 2.0的功能,所以你可能想要使用自己的着色器,因为alpha测试必须在GLES 2.0上手动完成。

最后,您是否在批处理上启用了混合?

batch.enableBlending();

应该这样做。