3

通常,当您这样做时,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();
    }
}
4

2 回答 2

4

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

float4 NoEffects(float4 color : COLOR0, float2 coords : TEXCOORD0) : COLOR0
{
    return tex2D(s0, coords) * color;
}
于 2013-01-02T18:46:37.177 回答
0

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

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

于 2013-01-02T18:34:31.237 回答