是的,你清除屏幕並重新繪製每一樣東西。這就是多少個遊戲引擎的工作原理。
但是我也需要顯示點的數量龐大,其繼續積累作爲moves.I已經使用
你可能會設法吸引太多的顆粒清晰的屏幕試過了飛機。 100個粒子(或幾百個,但不到一千個)應該足以繪製彗星蹤跡。只有200顆(BIG)顆粒,您可以創建非常令人信服的雲。
此外,你不需要點繪製彗星蹤跡。使用alpha混合,您可以使用三角形輕鬆繪製半透明的光劍狀線。
光軍刀狀,等離子等,火焰般應該使用的白色小色調任何顏色(RGB 255,10,10,例如),以及使用glBlendFunc(GL_SRC_ALPHA, GL_ONE)
以下是傳統上繪製幾個例子。示例顯示您應該使用的三角形網格。數字表示阿爾法。 0 - 完全透明,1 - 完全不透明。必要時,斜線表示三角測量。「|」和 「 - 」 表示面邊:
泛着線
0--0--0--0
| \| | /|
0--1--1--0
| /| | \|
0--0--0--0
repeat
0--0
| |
1--1
| |
0--0
to add more segments
厚灼熱線
0--0--0--0
| \| | /|
0--1--1--0
| | | |
0--1--1--0
| /| | \|
0--0--0--0
repeat
0--0
| |
1--1
| |
1--1
| |
0--0
to add more segments.
您可以使用類似的東西對彗星的蹤跡。並添加一些小顆粒火花什麼的。 也別忘了紋理。使用紋理,您可以輕鬆添加更多細節,而不是使用無紋理幾何繪製所有內容。
- 編輯 -
飛機的白色痕跡
要實現任何形式的煙霧......
- 你需要使用用「煙燻非常大的紋理顆粒「/」多雲「紋理。如果你谷歌的「煙霧粒子紋理」谷歌圖像,你會看到我在說什麼。
- 那些「大」顆粒不能使用點精靈(因爲它可以比屏幕在近距離更大),並要求「廣告牌」正常繪製。廣告牌是一個總是面向相機的廣場。
- 理想情況下,煙霧紋理的顏色通道應該是完全白色的(因此您可以使用頂點顏色對單個粒子進行着色),並且應在alpha上繪製「煙霧」。
- 當您繪製煙粒子時,應該按照深度對煙粒進行排序,並且應該從最遠到最近(從相機)進行渲染。插入排序算法適用於「部分排序」的數據。
- 煙霧顆粒應禁用深度寫入來呈現(
glDepthMask(0)
,如果我記錯)
- 煙霧顆粒應該使用
glBlendFunc(GL_SRC_ALPHA, GL_INV_SRC_ALPHA)
共混。
- 但是,如果煙霧中有火焰,火焰應該使用
glBlendFunc(GL_SRC_ALPHA, GL_ONE)
。火焰粒子應該混合(即隨着深度分類),或者在煙霧之後抽取(如果它使用單獨的粒子系統)。
- 爲了讓煙霧變得逼真,將小的初始速度分配給所有的粒子,隨着時間的推移慢慢增加它們的大小,並使它們變得更加透明。當顆粒完全透明時,將它們從顆粒系統中移出。
- 繪製半透明alpha混合曲面時,啓用alpha測試並切斷alpha == 0的像素。這將加速渲染。 (重要,因爲你可以甚至不俗的硬件太多的煙霧粒子殺死幀率)採用了許多廣告牌煙霧粒子可以是昂貴的,特別是如果他們是非常密切的,所以如果你想以填補大面積的這種煙霧和顆粒
- 會變得很大並浮在眼睛的水平面上,多次覆蓋整個屏幕區域,並且可能需要研究一些其他體積霧技術。
- 請勿使用矩陣移動單個粒子。每次調用不要繪製一個粒子。一口氣繪製它們,這將會更快。
謝謝你的回答。你的想法非常好,但是我意識到,如果我沒有弄錯,你只是想表現出彗星的短尾。我想要的東西就像飛機的白色線索一直保持着永恆。我可以給的另一個例子是繪畫應用程序。在畫圖時,我應該能夠顯示移動的畫筆以及油漆痕跡。希望你明白我想傳達的東西。我非常感謝你的努力和詳細的答案。我相信它將在未來幫助我! –
完美!謝謝... –