使用SpriteBatch中指定的颜色.使用自定义着色器绘制

本文关键字:自定义 绘制 颜色 SpriteBatch 使用 | 更新日期: 2023-09-27 17:50:38

通常当你做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();
    }
}

使用SpriteBatch中指定的颜色.使用自定义着色器绘制

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

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

你可以使用一个EffectParameter来传递一个值给你的效果。

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