gpt4 book ai didi

opengl - LibGDX 帧缓冲区混合

转载 作者:行者123 更新时间:2023-12-02 05:49:32 27 4
gpt4 key购买 nike

这里有一些简单的背景知识,我刚刚开始使用 LibGDX 框架进行 Android 游戏开发的第一次尝试。我正在尝试通过放置 Sprite 来使用他们的 FrameBuffer 类构建纹理,并且我想使用该纹理作为一种逐级动态/随机背景。

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

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

经过几个小时的实验和搜索,我感到不知所措。感谢您的宝贵时间!

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

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

    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();

最佳答案

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

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

batch.enableBlending();

应该可以解决问题。

关于opengl - LibGDX 帧缓冲区混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11962262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com