使用SpriteBatch.Draw中指定的Color和自定义着色器

时间:2013-01-02 18:13:13

标签: c# xna shader spritebatch

通常,当您执行SpriteBatch.Draw时,您可以指定颜色。但这是问题所在。如果我使用自定义着色器,则会忽略SpriteBatch.Draw ...

传递的颜色

如何将其考虑在内?我的意思是SpriteBatch.Draw如何通过颜色?如果我知道它,我可以在我的着色器中使用它。

到目前为止我所拥有的(相关部分):

float4 NoEffects(float2 coords: TEXCOORD0) : COLOR0
{
    return tex2D(s0, coords);
}

technique Default
{
    pass Pass1
    {
        PixelShader = compile ps_2_0 NoEffects();
    }
}

2 个答案:

答案 0 :(得分:4)

您需要检索通过顶点着色器的颜色,并在计算最终输出时使用它:

float4 NoEffects(float4 color : COLOR0, float2 coords : TEXCOORD0) : COLOR0
{
    return tex2D(s0, coords) * color;
}

答案 1 :(得分:0)

您可以使用EffectParameter将值传递给效果。

http://msdn.microsoft.com/en-us/library/bb976060.aspx