【发布时间】:2012-05-09 14:46:11
【问题描述】:
我正在开发一款适用于 Android 的游戏,我想知道为什么每当我绘制具有透明度的图像时,似乎总是在透明部分添加了一些黑色。这一切都发生了,让我的一些效果看起来很奇怪。
这是一个例子。这两个圆圈只是带有模糊的白色图像,但是当一个与另一个重叠时,您可以看到它有阴影。如果我在 Inkscape 中重叠两个圆圈,我会在它们重叠的地方得到纯白色。
我正在使用
GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
为了我的混合。
知道为什么会发生这种情况以及如何避免它吗?
编辑:我唯一能想到的是这两个图像具有相同的 z,所以它们可能只与背景混合而不是相互混合?
编辑: 我变了
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
到
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_DST_ALPHA);
这是我正在寻找的结果。
现在唯一的问题是,我拥有的透明黑色的透明图像被忽略了,这是有道理的,因为我认为目标 alpha 为 1。为什么一个减号源会添加那个灰色?
【问题讨论】:
-
关于您编辑中的问题,您是不正确的,这是不可能的。
-
就个人而言,我认为阴影看起来很棒。但这只是我。
标签: android opengl-es alpha overlap blending