XNA でのパーティクル システムの作成に関する素晴らしいチュートリアルを見つけました: http://www.catalinzima.com/tutorials/4-uses-of-vtf/particle-systems/
問題は、xna と xna 4.0 の古いバージョン用に書かれていることです。
DoPhysicsPass メソッドでは、次の例外が発生します。
XNA Framework HiDef プロファイルは、rendertarget 形式 Vector4 を使用する場合、アルファ ブレンディングまたは ColorWriteChannels をサポートしません。
これが爆発している方法です
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);
誰でもこれを修正する方法を提案できますか?