交叉区域颜色

时间:2010-07-16 18:42:34

标签: xna transparency alphablending

我画了两个相互交叉的半透明圆圈。我发现交叉区域的颜色比其他区域更深。有没有办法让整个形状成为一个半透明的颜色(颜色不应该在一个区域比其他区域更深)?

是否可以向我发送任何示例代码来解决问题?

现在在draw方法中,我使用以下代码:

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(textureCircle1, spritePositionCircle1, new Color(255, 255, 255, (int)(150)));
spriteBatch.Draw(textureCircle2, spritePositionCircle2, new Color(255, 255, 255, (int)(150)));
spriteBatch.End();

base.Draw(gameTime);

2 个答案:

答案 0 :(得分:0)

我不是XNA的人,所以你可能需要做一些翻译。

你是否可以在黑色单色上将它们作为白色在屏幕上渲染,并拍摄得到的图像,使白色成为您想要的透明色,黑色是否完全透明?

我不确定你是如何编码的,但那是我研究的方法。

答案 1 :(得分:0)

检查你认为不太透明的像素的alpha值(你将它们绘制到它们自己的表面上,而不是直接绘制到后备缓冲区,对吗?)。它们可能似乎透明度较低,因为它们的组合颜色较暗。

如果它们真的不太透明,请将曲面上每个像素的透明度更改为相同的值(我担心我不知道如何在XNA中执行此操作)。

如果它们似乎透明度较低,请尝试将精灵完全不透明地绘制到曲面上(这样会完全覆盖另一个),然后再次更改曲面的透明度。