2011-08-31 44 views
0

我目前正在使用我用C++編寫的自己的遊戲引擎進行遊戲,並使用最新的DirectX SDK。有關C++和DirectX中有趣的粒子效果的想法。請

遊戲是一個自上而下的太空射擊遊戲(帶有一個非常有趣的轉折點),我期待有一種星雲效果,玩家可以飛過。我真的很想嘗試並且認真考慮數百個粒子的良好觸覺,這些粒子會在玩家飛向它們的時候離開玩家的方向。有點像粒子如何在XBLA上的Geomtry Wars中走出玩家的路。

我是一名經驗豐富的程序員,涉及到C++。但我不知道如何開始實施這種效果。有沒有人有我想要看的很酷的創意或設計選擇?隨意回答你喜歡的任何深度。

謝謝, 馬特

+0

可能更適合於[gamedev](http://gamedev.stackexchange.com/)。 –

回答

1

你可以做這樣的事情來表示顆粒,

struct Particle 
{ 
     D3DXVECTOR3 position; 
     float angle; 
}; 

如果然後就更新x和y座標(或X和Z在該平面上你的船移動)從一個速度和計算新的高度與一些基本的公式,而不是物理的一個即,即。有「罪」和「時間」的東西,所以它不會離船舶移動的平面太遠。您可以將它們全部放入動態頂點着色器中,並在一次調用中將它們全部渲染在一起。

支持DirectX 9,你有「點精靈」 http://msdn.microsoft.com/en-us/library/bb147281%28v=vs.85%29.aspx

我認爲你必須做着色器中的工作新版本,但我不知道。這個想法只是將位置和可能需要的某些屬性發送給點,並在着色器中構建粒子圖像(最有可能是具有某種紋理的四邊形)。

您可能會發現此鏈接有用,至少得到一些想法。這是一個有點老,雖然但許多概念仍然適用: http://www.markmark.net/clouds/RTCRPubs.html

也有,你甚至不用修改緩衝區其他方式...你可以計算出給定的起始位置的軌跡的點這是從開始以來所經歷的時間,但是實施由船舶運動引起的力量效應將更加困難。所以你必須找到適合你需求的最佳方法。

編輯:對不起,我的意思是說用於單個呼叫的「動態頂點緩衝器」