C# XNA HLSL纹理遮罩效果在遮罩中不使用alpha

C# XNA HLSL纹理遮罩效果在遮罩中不使用alpha,c#,.net,xna,shader,hlsl,C#,.net,Xna,Shader,Hlsl,我是HLSL的新手,请容忍我 这是效果文件: sampler s0; texture tex; sampler tex_sampler = sampler_state{Texture = tex;}; float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 { float4 color = tex2D(s0, coords); float4 tex_color = tex2D(tex_sampler,

我是HLSL的新手,请容忍我

这是效果文件:

sampler s0;
texture tex;
sampler tex_sampler = sampler_state{Texture = tex;};

float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0  
{  
    float4 color = tex2D(s0, coords);
    float4 tex_color = tex2D(tex_sampler, coords);

    if (tex_color.a) 
    {
        // SOMETHING GOES RIGHT HERE BUT I DON'T KNOW WHAT
        return color;
    }
    return tex_color;
}  

technique Technique1  
{  
    pass Pass1  
    {  
        PixelShader = compile ps_2_0 PixelShaderFunction();  
    }  
} 
tex字段是掩码。 tex_采样器是面具的采样器


结果包含alpha为1或0的像素,但遮罩实际上是模糊的,并且包含不同的alpha值。我应该添加或更改什么以使其符合我的要求?否则,这将非常有效。

我相信您需要在技术中设置渲染状态

    AlphaBlendEnable = true;
    SrcBlend = SrcAlpha;
    DestBlend = InvSrcAlpha;