В настоящее время я изучаю язык «HLSL» для файлов эффектов для своей игры XNA. Однако; Я столкнулся с проблемой применения эффектов к моему SpriteBatch.
Мой файл эффекта выглядит так, и делает визуализированную текстуру белой. :]2D Passes.apply() XNA 4.0
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();
Но ничего не случилось, поэтому я попробовал несколько методов diffrend. Такие как
SampleEffect.CurrentTechnique.Passes["pass0"].Apply();
Но это все еще не сработало. Итак, я проверил, что эффект был привязан к правильной GraphicsDevice, используя функцию object.ReferenceEquals, но он был равен правильной графике. Что я делаю неправильно? Как я могу приложить несколько эффектов к моему SpriteBatch?
Спасибо заранее, Rasmus:]
Я хотел бы добавить, что этот метод называется [многопроходной молнией] (https://www.google.com/search?q=multipass%20vs%20deferred%20lighting). – AgentFire