我正在嘗試修改以下粒子系統。 http://create.msdn.com/en-US/education/catalog/sample/particle_3d使用CPU而不是GPU繪製粒子(XNA)
我有這樣的功能,當我按空格鍵,所有的粒子有自己的位置和速度設置爲0
for (int i = 0; i < particles.GetLength(0); i++)
{
particles[i].Position = Vector3.Zero;
particles[i].Velocity = Vector3.Zero;
}
然而,當我按下空格鍵,顆粒仍在移動。如果我去FireParticleSystem.cs,我可以調整設置。重力爲0,粒子停止移動,但粒子仍然沒有移動到(0,0,0)。
據我所知,問題在於GPU正在處理所有的粒子位置,它正在計算粒子應該基於它們的初始位置,初始速度和乘以其年齡的位置。因此,我所能做的就是改變粒子的初始位置和速度,但是由於GPU處理所有事情,所以我無法實時完成它。
我想讓CPU分別計算粒子的位置。這是因爲我稍後會實施某種風來推動粒子。我如何阻止GPU接管?我認爲這與VertexBuffers和draw函數有關,但我不知道如何修改它以使其工作。
您也可以嘗試gamedev.stackexchange.com。 – Nate 2011-02-01 17:49:31