1

我正在使用 LibGDX 开发一个简单的绘画应用程序,但我无法使用我正在使用的设置正确“绘画”它。我尝试这样做的方法是使用精灵进行绘制,并在适当的时候使用 LibGDX 的 FBO 命令将这些单独的精灵添加到背景纹理中。

我遇到的问题与混合有关,因为当精灵被添加到我正在构建的这个纹理中时,精灵的任何透明像素都将显着变亮,这些像素位于先前绘制的像素之上,这显然看起来不太好。以下是结果的样子,使用绿色>红色渐变的圆圈作为“画笔”。顶行现在是背景纹理的一部分,而底行仍然是纯精灵绘制的形式。

http://i238.photobucket.com/albums/ff307/Muriako/hmm.png

基本上,每个精灵的透明区域都会照亮它们下面的任何东西,我需要让它们完全透明。我弄乱了许多不同的混合模式组合,但找不到更好的组合。例如 GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA 没有这个问题,但是每个精灵的透明像素似乎在 alpha 中降低了,甚至从下面的图层中获取了一些颜色,这看起来更烦人。

我很乐意根据要求发布任何代码片段,但是自从我开始尝试解决这些问题以来,我的代码变得有些混乱,所以我宁愿只在必要时提供必要的部分。

4

1 回答 1

1

你画精灵的顺序是什么?Alpha 混合仅适用于目标中已经存在的像素,因此您必须在 Z 中绘制所有包含 Alpha 的事物(以及它们“背后”的所有事物)以获得正确的结果。我在用着.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

于 2012-07-31T18:05:44.227 回答