我如何在XNA中应用叠加效果?

假设我有一个角色精灵,我想应用一些叠加它的颜色的animation效果,我该怎么做呢? 我所渴望的是这样一些东西:(从最终的幻想手法)

在这里输入图像描述

这是一个精灵灰色的效果和黑色白色的黑色线覆盖。

但是,在XNA中,像素着色器仅支持场景中所有精灵的阴影。 如果我要像素阴影只有特定的精灵我想,我不得不应用模板缓冲区,这使得系统更复杂,当我有每个精灵的多个分离的效果(我必须确定每个效果的模板缓冲区裁剪)。 另一个论坛建议使用单独的sprite批处理绘制每个sprite(调用每个sprite的Begin / End)并创建我自己的sorting例程,但是我发现这种批处理方法会真正消耗GPU性能。

另一方面,如果我有2D纹理填充的预渲染叠加效果,然后将其应用到字符精灵上以获得某种混合效果,则Sprite批处理不会剪切叠加效果并将其限制为字符shapde,而是将其传递到字符shapde上背景也是如此。

因此,有什么建议来解决这个问题?