次のパーティクルシステムに変更を加えようとしています。 http://create.msdn.com/en-US/education/catalog/sample/particle_3dGPU(XNA)の代わりにCPUを使用してパーティクルを描画する
は私がスペースを押したときに、粒子がまだ動いている、私はスペースキーを押したときに、すべての粒子がその位置と速度が0しかし
for (int i = 0; i < particles.GetLength(0); i++)
{
particles[i].Position = Vector3.Zero;
particles[i].Velocity = Vector3.Zero;
}
に設定されていることの機能は、持っています。私がFireParticleSystem.csに行くと、私はsettings.Gravityを0にすることができ、パーティクルは移動を停止しますが、パーティクルは(0,0,0)にシフトされていません。
私が理解しているように、問題はGPUがすべてのパーティクルの位置を処理していることにあります。パーティクルの初期位置、初期速度、したがって、私ができることは粒子の初期位置と速度を変えることだけですが、GPUがすべてを処理しているので、その場で行うことはできません。
私はCPUに粒子の位置を個別に計算させたいと思っています。これは後で、粒子を押しつぶすために何らかの風を実装するためです。 GPUの引き継ぎをどうやって止めるのですか?私はそれがVertexBuffersとdraw関数と関係があると思っていますが、動作させるためにそれを変更する方法はわかりません。
gamedev.stackexchange.comもお試しください。 – Nate