我目前正在为我的 XNA 游戏的效果文件学习语言“HLSL”。然而; 我遇到了将效果应用于我的 SpriteBatch 的问题。
我的效果文件看起来像这样,并使渲染的纹理变为白色。:]
float4 PSFunction(float2 coord : TEXCOORD0) : COLOR0
{
return float4(0, 0, 0, 1); // Return a white pixel
}
technique Sample
{
pass pass0
{
PixelShader = compile ps_2_0 PSFunction();
}
}
当我使用以下参数开始我的 SpriteBatch 时,它正在正常工作:
SpriteBatch.Begin(0, null, null, null, null, SampleEffect);
然而; SpriteBatch.Begin 方法不接受多重效果。因此我试图做
SampleEffect.CurrentTechnique.Passes[0].Apply();
打电话之前
SpriteBatch.Begin();
但是什么也没发生,因此我尝试了几种不同的方法。如
SampleEffect.CurrentTechnique.Passes["pass0"].Apply();
但它仍然没有工作。因此,我使用 object.ReferenceEquals 函数验证了效果已附加到正确的 GraphicsDevice,但它等于正确的 graphicsDevice。我究竟做错了什么?如何将多个效果附加到我的 SpriteBatch?
在此先感谢,拉斯穆斯:]