这里有一些快速背景,我刚开始使用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();
答案 0 :(得分:0)
老问题,但是你可以粘贴FBO初始化代码吗?你需要在FBO中拥有一个alpha通道。另一件事是FBO是GLES 2.0的功能,所以你可能想要使用自己的着色器,因为alpha测试必须在GLES 2.0上手动完成。
最后,您是否在批处理上启用了混合?
batch.enableBlending();
应该这样做。