您好 我有一个背景和两个png精灵 我想使用提供的背景和使用XNA 3.1的sprite制作this effect 我做错了,因为我只得到this你注意到它不是我想做的效果 使用XNA 3.1中的alpha混合可以使用几行代码来实现此效果吗?一个实际的例子真的很棒!
答案 0 :(得分:1)
首先,渲染包含您想要对纹理A透明的形状的纹理。 包含形状的纹理应该在透明背景上包含黑色形状 - 可以使用Photoshop等图像编辑软件轻松构建。
然后使用纹理A并使用效果(HLSL着色器)将其绘制到场景顶部:
output = float4(0, 0, 0, A.r);
在A较暗的情况下有效地使输出图像的alpha值降低。
图像将有清晰的部分,你在A上绘制形状,在其他地方都是黑色。
以下是着色器代码的详细信息:
sampler TextureSampler : register(s0);
float4 PS(float4 color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0
{
float4 Color = tex2D(TextureSampler, texCoord);
Color = float4(0, 0, 0, Color.r);
return Color;
}
technique Vicky
{
pass P0
{
PixelShader = compile ps_2_0 PS();
}
}
答案 1 :(得分:0)
如果你想要一个没有着色器的解决方案。
首先需要将战争纹理的雾化为黑色,透明部分为白色。