我对着色器非常陌生,并且对整个事情感到非常困惑,即使在学习了几个教程之后(实际上这是我今天关于着色器的第二个问题)。
我正在尝试用两个通道制作一个着色器:
technique Technique1
{
pass Pass1
{
PixelShader = compile ps_2_0 HorizontalBlur();
}
pass Pass2
{
PixelShader = compile ps_2_0 VerticalBlur();
}
}
但是,这只适用于 VerticalBlur()。如果我删除 Pass2,它会退回到 Pass1 中的 HorizontalBlur()。我错过了什么吗?也许它只是没有将第一遍的结果传递给第二遍,在这种情况下我该怎么做?
此外,在我读过的大多数教程中,我都被告知effect.CurrentTechnique.Passes[0].Apply();
在我开始使用效果的 spritebatch 之后放置。但是,这似乎并没有改变任何东西。我可以将它设置为 Passes[1] 甚至完全删除它,但我仍然只得到 Pass2。(但是,当我尝试将其设置为 Passes[2] 时,我确实遇到了错误。)那条线有什么用呢?在最近的版本中是否已经删除了对它的需求?
非常感谢!