Colors XNA在重叠时添加颜色

Colors XNA在重叠时添加颜色,colors,xna,collision,Colors,Xna,Collision,我有一些精灵,当它们重叠时,我希望它们“添加”它们的颜色rgb值(可能)变为白色,精灵也有changin alpha值,应该保持不变。我已经尝试过使用所有spritebatch选项alphablend、Additional等 这是通过spritebatch实现的还是我需要一个着色器 谢谢, Paul。使用XNA 4中的预乘Alpha方案,可以通过将纹理绘制为0 Alpha来进行添加混合。因为这意味着纹理有0个块,然后RGB被添加到它后面的像素中,所以可以得到相加混合 只需使用spritebatc

我有一些精灵,当它们重叠时,我希望它们“添加”它们的颜色rgb值(可能)变为白色,精灵也有changin alpha值,应该保持不变。我已经尝试过使用所有spritebatch选项alphablend、Additional等

这是通过spritebatch实现的还是我需要一个着色器

谢谢,
Paul。

使用XNA 4中的预乘Alpha方案,可以通过将纹理绘制为0 Alpha来进行添加混合。因为这意味着纹理有0个块,然后RGB被添加到它后面的像素中,所以可以得到相加混合

只需使用spritebatch模式“Alphablend”以0 alpha绘制纹理。要降低可加性,请增加alpha。要降低其可视性,请降低RGB


我强烈建议,如果您使用此选项,请确保内容中的任何纹理的属性中都勾选了“预乘Alpha”选项。

加法没有给您所需的效果?不,它不是加法,它只是通过组合Alpha,将颜色加在一起-因此绿色对绿色产生更强的绿色调,rahter比组合颜色更好。谢谢,虽然我不是在单独的通道中寻找添加剂-RGB,所以在上面的例子中,绿色对绿色产生更强的绿色调,但我想要的是当颜色重叠时,它变成白色,无论是相同的颜色还是其他颜色。如果你做得对的话,这正是它的作用。如果你只有绿色,增加更多的绿色会让你。。。明亮的绿色。在那里投一点红色/蓝色,你就会得到你的结果。我知道它会这样做,但这不是我想要的-我在绿色上寻找绿色(即相同的颜色以及交替的颜色)来产生白色。我将研究hlsl作为一个选项。如果您正在寻找这种类型的东西,您可能希望编写一个使用HSV(色调、饱和度、值)的着色器。将每个像素的值加在一起,平均色调和饱和度,就得到了效果。