在这里,我刚刚开始使用LibGDX框架,这是我第一次尝试开发安卓游戏。我试图使用他们的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();发布于 2013-03-12 10:53:53
老问题,但你能粘贴FBO初始化代码吗?你需要在FBO中有一个alpha通道。另一件事是,FBO是GLE2.0特性,所以您可能需要使用自己的着色器,因为alpha测试必须在GLE2.0上手动完成。
最后,你是否允许在批次上混合?
batch.enableBlending();
应该能起作用。
https://stackoverflow.com/questions/11962262
复制相似问题