Я нашел этот замечательный урок по созданию системы частиц в XNA:
http://www.catalinzima.com/tutorials/4-uses-of-vtf/particle-systems/
Проблема в том, что он написан для более старых версий xna и xna 4.0.
В методе DoPhysicsPass я получаю это исключение:
Профиль XNA Framework HiDef не поддерживает альфа-смешение или ColorWriteChannels при использовании формата rendertarget Vector4.
Вот метод взрыва
private void doPhysicsPass(string technique, RenderTarget2D resultTarget)
{
GraphicsDevice.SetRenderTarget(temporaryRT);
GraphicsDevice.Clear(Color.White);
spriteBatch.Begin();
physicsEffect.CurrentTechnique = physicsEffect.Techniques[technique];
if (isPhysicsReset)
{
physicsEffect.Parameters["positionMap"].SetValue(positionRT);
physicsEffect.Parameters["velocityMap"].SetValue(velocityRT);
}
physicsEffect.CurrentTechnique.Passes[0].Apply();
spriteBatch.Draw(randomTexture, new Rectangle(0, 0, particleCount, particleCount), Color.White);
spriteBatch.End(); //<----- Exception thrown here
GraphicsDevice.SetRenderTarget(resultTarget);
spriteBatch.Begin();
physicsEffect.CurrentTechnique = physicsEffect.Techniques["CopyTexture"];
physicsEffect.CurrentTechnique.Passes[0].Apply();
spriteBatch.Draw(temporaryRT, new Rectangle(0, 0, particleCount, particleCount), Color.White);
spriteBatch.End();
}
Вот инициализация randomTexture:
velocityRT = new RenderTarget2D(GraphicsDevice, particleCount, particleCount, false,
SurfaceFormat.Vector4, DepthFormat.None);
Может кто-нибудь предложить несколько советов, как это исправить?