【问题标题】:Using Color specified in SpriteBatch.Draw with Custom shader将 SpriteBatch.Draw 中指定的颜色与自定义着色器一起使用
【发布时间】:2013-01-02 18:13:13
【问题描述】:

通常当您执行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();
    }
}

【问题讨论】:

    标签: c# xna shader spritebatch


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的建议,但我已经清楚地知道了......正如我在问题中描述的那样,我想做的是使用 SpriteBatch.Draw(); 传递的颜色;而不是自己再次传递。
      猜你喜欢
      • 2012-04-23
      • 1970-01-01
      • 2012-09-28
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 2020-06-09
      • 2018-07-20
      相关资源
      最近更新 更多