版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 19 20 課源碼第 19 課 粒子系統(tǒng):你是否希望創(chuàng)建噴射的效果。,噴泉,流星之類的效果。這一課將告訴你如何創(chuàng)建一個(gè)簡(jiǎn)單的例子系統(tǒng),并用它來(lái)創(chuàng)建一種歡迎來(lái)到第十九課.你已經(jīng)學(xué)習(xí)了很多知識(shí),并且現(xiàn)在想自己來(lái)實(shí)踐.我將在這講解一個(gè)新命令. 三角形帶(我的理解就是畫很多三角形來(lái)組要的形狀),它非常容易使用,當(dāng)畫很多三角形的時(shí)候能加快你程序的運(yùn)行速度.在本課中,我將會(huì)教你該如何做一個(gè)半復(fù)雜的微粒程序.一旦您了解微粒程序的原理后,在創(chuàng)建例如:火,煙,噴泉等效果將是很輕松的事情.我必須警告你!直到今天我從未寫一個(gè)真正的粒子程序.寫一個(gè)出名的復(fù)雜的粒子程序.我嘗試過(guò),但在我了解我不能控制所有點(diǎn)變瘋狂之
2、后我放棄了!你也許不相信我要告訴你的,但這個(gè)課程從頭到尾都是的想法.開(kāi)始我沒(méi)有一點(diǎn)想法,并且沒(méi)有任何技術(shù)數(shù)據(jù)放在面前.我開(kāi)始考慮粒子,突然腦袋裝滿想法(腦袋開(kāi)啟了?):給予每個(gè)粒子生命,任意變化顏色,速度,重力影響等等.來(lái)適應(yīng)環(huán)境的變化,把每個(gè)粒子看成單一的從這個(gè)點(diǎn)運(yùn)動(dòng)到另一個(gè)點(diǎn)的顆粒.很快我完成了這個(gè)項(xiàng)目.我看看時(shí)鐘然后有個(gè)想法突然出現(xiàn).四個(gè)小時(shí)過(guò)去了!我偶爾記得已經(jīng)停止喝咖啡,眨眼,但是 4 個(gè)小時(shí).?盡管這個(gè)程序我覺(jué)得很棒,并象的運(yùn)行,但它不可能是最好的粒子引擎,這個(gè)我不關(guān)心,只要他運(yùn)行好就可以.并且我能把它運(yùn)行在象的那么嚴(yán)密項(xiàng)目中.如果你是那種想了解透徹的人,那么你要花費(fèi)很多時(shí)間在網(wǎng)絡(luò)
3、上查找資料并弄明白它.在程序中有很多小的代碼會(huì)看起來(lái)很模糊:)本課(使它更容易了解).所用的部分代碼來(lái)自于Lesson1.但有很多新的代碼,因此我將重寫一些發(fā)生代碼變化的部分下面用到的代碼來(lái)自于Lesson6,我將會(huì)增加5 行新的代碼在程序的前面.第一行stdio.h允許讀文件中的數(shù)據(jù).它和以前用在紋理當(dāng)中是一樣的.第二行定義了一些要在屏幕上顯示的粒子的數(shù)目.告訴程序 MAX_PARTICLES 在這里的數(shù)值為 1000.第三條行將不斷分離的彩色的粒子栓牢在一起,并設(shè)置為默認(rèn)情況.sp 和 rp 用來(lái)確定空格鍵和返回鍵是否有按住.#define MAX_PARTICLES 1000/ 定義最大
4、的粒子數(shù)bool boolboolrainbow=true;/ 是否為彩虹模式空格鍵是否被按下回車鍵是否被按下sp;rp;/下面四行是復(fù)雜的變量.變量 slowdown 控制粒子移動(dòng)的快慢.數(shù)值愈高,移動(dòng)越慢.數(shù)值越底,移動(dòng)越快.如果數(shù)值降低,粒子將快速的移動(dòng)!粒子的速度影響它們?cè)跓善林幸苿?dòng)的距離.記住速度慢的粒子不會(huì)射很遠(yuǎn)的.變量xspeed和 yspeed 控制尾部的方向.xspeed 將會(huì)增加粒子在x 軸上速度.如果 xspeed 是正值粒子將會(huì)向右邊移動(dòng)多.如果 xspeed 負(fù)價(jià)值,粒子將會(huì)向左邊移動(dòng)多.那個(gè)值越高,就向那個(gè)方向移動(dòng)比較多.yspeed 工作相同的方法,但是在y 軸上
5、.因?yàn)橛衅渌挠绊懥W拥倪\(yùn)動(dòng),所以我多.xspeed 和 yspeed 有助于在想要的方向上移動(dòng)粒子.最的圖象,而且當(dāng)接近你時(shí)很后是變量 zoom,酷用該變量移入或移出的屏幕.在粒子引擎里,有時(shí)可看見(jiàn)float float floatfloatslowdown=2.0f; xspeed; yspeed;zoom=-40.0f;/粒子/X 方向的速度/ Y 方向的速度/ 沿Z 軸縮放定義了一個(gè)復(fù)雜的循環(huán)變量叫做Loop.用這變量預(yù)先定義粒子并在屏幕中畫粒子.col 用來(lái)給予粒子不同的顏色.delay 用來(lái)控制在彩虹模式中圓的顏色變化.最后,設(shè)定一個(gè)空間(粒子紋理).我用紋理而不用點(diǎn)的重要原因是,
6、點(diǎn)的速度慢,而且挺麻煩的.其次紋理很酷:)你用一個(gè)正方形的粒子,一張你臉的小片等等.很好控制!,一張星星的圖GLu GLuGLuloop; col;delay;/ 循環(huán)變量/ 當(dāng)前的顏色/ 彩虹效果延遲好!現(xiàn)在是有趣的東西.下描述單一粒子結(jié)構(gòu),這是給予粒子的屬性.用型變量 active 開(kāi)始,如果為 true,的粒子為活躍的.如果為 false 則粒子為死的,此時(shí)就刪除它.在程序中我沒(méi)有使用活躍的,因?yàn)樗芎玫膶?shí)現(xiàn).變量 life 和fade 來(lái)控制粒子顯示多久以及顯示時(shí)候的亮度.隨著 life 數(shù)值的降低fade 的數(shù)值也相應(yīng)降低.這將導(dǎo)致一些粒子比其他粒子燃燒的時(shí)間長(zhǎng).typedef st
7、ructbool active;/ 創(chuàng)建粒子數(shù)據(jù)結(jié)構(gòu)/ 是否激活/ 粒子生命floife;float fade;/ 衰度變量 r,g 和b 用來(lái)表示粒子的紅色強(qiáng)度,綠色強(qiáng)度和藍(lán)色強(qiáng)度.當(dāng)r 的值變成 1.0f 時(shí)粒子將會(huì)很紅,當(dāng)三個(gè)變量全為 1.0f 時(shí)則粒子將變成白色.floatfloat floatr;g;b;/紅色值綠色值藍(lán)色值變量x.y 和z 控制粒子在屏幕上顯示的位置.x 表示粒子在x 軸上的位置.y 表示y 軸上的位置.z 表示粒子z 軸上的位置float floatfloatx;y;z;/X YZ位置位置位置下面三個(gè)變量很重要.這三個(gè)變量控制粒子在每個(gè)軸上移動(dòng)的快慢和方向.如果
8、xi 是負(fù)價(jià)粒子將會(huì)向左移動(dòng),正值將會(huì)向右移動(dòng).如果 yi 是負(fù)值粒子將會(huì)向下移動(dòng),正值將向上.最后,如果 zi 負(fù)值粒子將會(huì)向熒屏移向觀察者.移動(dòng),正植將float floatfloatxi;yi;zi;/X YZ方向方向方向最后,另外 3 個(gè)變量!每一個(gè)變量可被看成加速度.如果 xg 正值時(shí),粒子將會(huì)被拉倒右邊,負(fù)值將拉向左邊.所以如果粒子向左移動(dòng)(負(fù)的)而上.zg 拉進(jìn)或拉出屏幕.給它一個(gè)正的加速度,粒子速度將變慢.最后將向反方向移動(dòng)(高中物理).yg 拉下或拉float floatfloatxg;yg;zg;/X YZ方向重力加速度方向重力加速度方向重力加速度結(jié)構(gòu)的名字為particl
9、es.particles;/ 粒子數(shù)據(jù)結(jié)構(gòu)下面粒子,創(chuàng)建一個(gè)數(shù)組叫 particle.數(shù)組空間為每個(gè)粒子提供相應(yīng)的信息MAX_PARTICLES 個(gè)元素.也就是說(shuō)創(chuàng)建 1000(MAX_PARTICLES)個(gè)particles particleMAX_PARTICLES;/ 保存 1000 個(gè)粒子的數(shù)組在顏色數(shù)組上減少一些代碼來(lái)12 中不同的顏色.對(duì)每一個(gè)顏色從 0 到 11亮紅,亮綠,和亮藍(lán).下面的顏色表里包含 12 個(gè)漸變顏色從紅色到紫羅蘭色sic GLfloat colors123=/ 彩虹顏色1.0f,0.5f,0.5f,1.0f,0.75f,0.5f,1.0f,1.0f,0.5f,0
10、.75f,1.0f,0.5f,0.5f,1.0f,0.5f,0.5f,1.0f,0.75f,0.5f,1.0f,1.0f,0.5f,0.75f,1.0f,0.5f,0.5f,1.0f,0.75f,0.5f,1.0f,1.0f,0.5f,1.0f,1.0f,0.5f,0.75f;這段代碼調(diào)用前面的代碼載入位圖,與前面的代碼相同,只是位圖的名稱不同。載入一符名為Partic位圖mp 的if (TextureImage0=LoadBMP(Data/Particmp) / 載入粒子紋理窗口改變大小的代碼和前面一樣,不需要改變使用光滑的陰影,清除背景為黑色,關(guān)閉深度測(cè)試,綁定并的改變就是禁用深度測(cè)試和初
11、始化粒子紋理.啟用位圖后選擇粒子紋理。唯一glDisable(GL_DEPTH_TEST);/深度測(cè)試下面代碼初始化每個(gè)粒子.從活躍的粒子開(kāi)始.如果粒子不活躍,它在熒屏上將不出現(xiàn),無(wú)論它有多少life.當(dāng)使粒子活躍之後,給它 life.我懷疑給粒子生命和顏色漸變的是否是最好的方法,但當(dāng)它運(yùn)行一次后,效果很好!life 滿值是 1.0f.這也給粒子完整的光亮.for (loop=0;loopMAX_PARTICLES;loop+)/初始化所有的粒子particleloop.active=true;particleloop.life=1.0f;/ 使所有的粒子為激活狀態(tài)/ 所有的粒子生命值為最大通
12、過(guò)給定的值來(lái)設(shè)定粒子退色快慢.每次粒子被拉的時(shí)候 life 隨著 fade 而減小.結(jié)束的數(shù)值將是 099 中的任意一個(gè),然后平分 1000 份來(lái)得到一個(gè)很小的浮點(diǎn)數(shù).最后把結(jié)果加上 0.003f 來(lái)使 fade 速度值不為 0particleloop.fade=float(rand()%100)/1000.0f+0.003f;/ 隨機(jī)生成衰率既然粒子是活躍的,而且又給它生命,下面將給它顏色數(shù)值.一開(kāi)始,就想每個(gè)粒子有不同的顏色.我怎么做才能使每個(gè)粒子與前面顏色箱里的顏色一一對(duì)應(yīng)那?數(shù)學(xué)很簡(jiǎn)單,用 loop 變量乘以箱子中顏色的數(shù)目與粒子最大值(MAX_PARTICLES)的余數(shù).這樣防止最后
13、的顏色數(shù)值大于最大的顏色數(shù)值(12).舉例:900*(12/900)=12.1000*(12/1000)=12,等等particleloop.r=colorsloop*(12/MAX_PARTICLES)0; particleloop.g=colorsloop*(12/MAX_PARTICLES)1;particleloop.b=colorsloop*(12/MAX_PARTICLES)2;/粒子的紅色顏色粒子的綠色顏色粒子的藍(lán)色顏色現(xiàn)在設(shè)定每個(gè)粒子移動(dòng)的方向和速度.通過(guò)將結(jié)果乘于 10.0f 來(lái)創(chuàng)造開(kāi)始時(shí)的效果.會(huì)以任意一個(gè)正或負(fù)值結(jié)束.這個(gè)數(shù)值將以任意速度,任意方向移動(dòng)粒子.particl
14、eloop.xi=float(rand()%50)-26.0f)*10.0f;particleloop.yi=float(rand()%50)-25.0f)*10.0f; particleloop.zi=float(rand()%50)-25.0f)*10.0f;/隨機(jī)生成X 軸方向速度隨機(jī)生成Y 軸方向速度隨機(jī)生成Z 軸方向速度最后,設(shè)定加速度的數(shù)值.不像一般的加速度僅僅把事物拉下,的加速度能拉出,拉下,拉左,拉右,拉前和xg 設(shè)為 0.0f.在 x 方向沒(méi)有拉力.設(shè) yg拉后粒子.開(kāi)始需要強(qiáng)大的向下加速度.為了達(dá)到這樣的效果為-0.8f 來(lái)產(chǎn)生一個(gè)向下的拉力.如果值為正則拉向上.不希望粒子
15、拉近或遠(yuǎn)離,所以將 zg 設(shè)為 0.0fparticleloop.xg=0.0f;particleloop.yg=-0.8f; particleloop.zg=0.0f;/ 設(shè)置 X 軸方向加速度為 0/設(shè)置Y 軸方向加速度為-0.8設(shè)置Z 軸方向加速度為 0現(xiàn)在為有趣的部分.下面的部分是從哪里拉粒子,檢查加速度等等.你要明白它是怎么實(shí)現(xiàn)的,因此仔細(xì)的看:)重置Mview 巨陣.在畫粒子位置的時(shí)候用 glVertex3f()命令來(lái)代替 tranlations,這樣在view 巨陣畫粒子的時(shí)候不會(huì)改變mDrawGLScene(GLvoid)/ 繪制粒子glClear(GL_COLOR_BUFFE
16、R_BITglLoadIdentity();| GL_DEPTH_BUFFER_BIT);/ 重置模型變換矩陣/ 以黑色背景清楚開(kāi)始創(chuàng)建一個(gè)循環(huán)loop.這個(gè)環(huán)將會(huì)更新每一個(gè)粒子.for (loop=0;loopMAX_PARTICLES;loop+)/ 循環(huán)所有的粒子首先做的事物是檢查粒子是否活躍.如果不活躍,則不被更新.在這個(gè)程序中,它們始終活躍.但是在你自己的程序中,你可能想要使某粒子不活躍if (particleloop.active)/ 如果粒子為激活的下面三個(gè)變量是確定 x,y 和z 位置的暫時(shí)變量.注意:在 z 的位置上加上 zoom 以便的場(chǎng)景在以前的基礎(chǔ)上再移入zoom 個(gè)位
17、置.particleloop.x 告訴要畫的x 的位置.particleloop.y 告訴要畫的y 的位置.particleloop.z 告訴要畫的z 的位置float floatfloatx=particleloop.x; y=particleloop.y;z=particleloop.z+zoom;/ 返回X 軸的位置/ 返回Y 軸的位置/ 返回 Z 軸的位置既然知道粒子位置,就能給粒子上色.particleloop.r 保存粒子的亮紅,particleloop.g 保存粒子的亮綠,particleloop.b 保存粒子的亮藍(lán).注意我用 alpha 為粒子生命.當(dāng)粒子要燃盡時(shí),它會(huì)越來(lái)越透
18、明直到它最后.這就是為什么粒子的生命不應(yīng)該超過(guò) 1.0f.如果你想粒子燃燒時(shí)間長(zhǎng),可降低 fade 減小的速度/ 設(shè)置粒子顏色glColor4f(particleloop.r,particleloop.g,particleloop.b,particleloop.life);有粒子的位置,并設(shè)置顏色了.所以現(xiàn)在來(lái)畫的粒子.用一個(gè)三角形帶來(lái)代替一個(gè)四邊形這樣使程序運(yùn)行快一點(diǎn).很多 3D card 畫三角形帶比畫四邊形要快的多.有些 3D card 將四邊形分成兩個(gè)三角形,而有些不.所以按照自己的想法來(lái),所以來(lái)畫一個(gè)生動(dòng)的三角形帶glBegin(GL_TRIANGLE_STRIP);/ 繪制三角形帶
19、從紅寶書引述:三角形帶就是畫一連續(xù)的三角形(三個(gè)邊的多角形)使用vertiV0,V1,V2,然后 V2,V1,V3(注意順序),然后 V2,V3,V4 等等.畫三角形的順序一樣才能保證三角形帶為相同的表面.要求方向是很重要的,例如:剔除,最少用三點(diǎn)來(lái)畫當(dāng)?shù)谝粋€(gè)三角形使用 verti0,1 和 2 被畫.如果你看你將會(huì)理解用頂點(diǎn) 0,1 和 2 構(gòu)造第一個(gè)三角形(頂端右邊,頂端左邊,底部的右邊).第二個(gè)三角形用點(diǎn) verti2,1 和 3 構(gòu)造.再一次,如果你注意,點(diǎn)verti2,1 和3 構(gòu)造第二個(gè)三角形(底部右邊,頂端左邊,底部左邊).注意:兩個(gè)三角形畫點(diǎn)順序相同.我看到很多的要求第二個(gè)三角
20、形反方向畫.這是不對(duì)的.Opengl 從新整理頂點(diǎn)來(lái)保證所有的三角形為同一方向!注意:你在屏幕上看見(jiàn)的三角形個(gè)數(shù)是你敘述的頂點(diǎn)的個(gè)數(shù)減 2.在程序中在有 4 個(gè)頂點(diǎn),所以看見(jiàn)二個(gè)三角形glTexCoord2d(1,1); glTexCoord2d(0,1); glTexCoord2d(1,0);glTexCoord2d(0,0);glVertex3f(x+0.5f,y+0.5f,z); glVertex3f(x-0.5f,y+0.5f,z); glVertex3f(x+0.5f,y-0.5f,z);glVertex3f(x-0.5f,y-0.5f,z);最后告訴Opengl畫完三角形帶glEn
21、d();現(xiàn)在能移動(dòng)粒子.下面公式可能看起來(lái)很奇怪,其實(shí)很簡(jiǎn)單.首先取得當(dāng)前粒子的x 位置.然后把 x 運(yùn)動(dòng)速度加上粒子被1000 倍后的值.所以如果粒子在x 軸(0)上屏幕中心的位置,運(yùn)動(dòng)值(xi)為 x 軸方向+10(移動(dòng)為右),而 slowdown 等于 1,移向右邊以 10/(1*1000)或 0.01f 速度.如果增加 slowdown 值到 2只移動(dòng) 0.005f.希望能幫助你了解 slowdown 如何工作.那也是為什么用 10.0f 乘開(kāi)始值來(lái)叫象素移動(dòng)快速,創(chuàng)造一個(gè)爆發(fā)效果.y 和z 軸用相同的公式來(lái)計(jì)算附近移動(dòng)粒子particleloop.x+=particleloop.xi
22、/(slowdown*1000); particleloop.y+=particleloop.yi/(slowdown*1000);particleloop.z+=particleloop.zi/(slowdown*1000);/更新X 坐標(biāo)的位置更新Y 坐標(biāo)的位置更新Z 坐標(biāo)的位置在計(jì)算出下一步粒子移到那里,開(kāi)始考慮重力和阻力.在下面的第一行,將阻力(xg)和移動(dòng)速度(xi)相們的移動(dòng)速度是 10 和阻力是 1.每時(shí)每刻粒子都在抵抗阻力.第二次畫粒子時(shí),阻力開(kāi)始作用,移動(dòng)速度將會(huì)從 10 掉到 9.第三次畫粒子時(shí),阻力再一次作用,移動(dòng)速度降低到 8.如果粒子燃燒為超過(guò) 10 次重畫,它將會(huì)最
23、后結(jié)束,并向相反方向移動(dòng).因?yàn)橐苿?dòng)速度會(huì)變成負(fù)值.阻力同樣使用于y 和z 移動(dòng)速度particleloop.xi+=particleloop.xg; particleloop.yi+=particleloop.yg;particleloop.zi+=particleloop.zg;/更新X 軸方向速度大小更新Y 軸方向速度大小更新Z 軸方向速度大小下行將粒子的生命減少.如果不這么做,粒子無(wú)法燒盡.用粒子當(dāng)前的 life 減去當(dāng)前的 fade 值.每粒子都有不同的 fade 值,因此他們?nèi)繉?huì)以不同的速度燒盡particleloop.life-=particleloop.fade;/ 減少粒子
24、的生命值現(xiàn)在檢查當(dāng)生命為零的話粒子是否活著if (particleloop.life0.0f)/ 如果粒子生命值小于 0如果粒子是小時(shí)(燒盡),會(huì)使它復(fù)原.給它全值生命和新的衰弱速度.particleloop.life=1.0f;/ 產(chǎn)生一個(gè)新的粒子particleloop.fade=float(rand()%100)/1000.0f+0.003f; / 隨機(jī)生成衰率也重新設(shè)定粒子在屏幕中心放置.重新設(shè)定粒子的x,y 和z 位置為零particleloop.x=0.0f;particleloop.y=0.0f;/ 新粒子出現(xiàn)在屏幕的particleloop.z=0.0f;在粒子從新設(shè)置之后,將
25、給它新的移動(dòng)速度/方向.注意:我增加最大和最小值,粒子移動(dòng)速度為從 50 到 60 的任意值,但是這次沒(méi)將移動(dòng)速度乘 10.這次不想要一個(gè)爆發(fā)的效果,而要比較慢地移動(dòng)粒子.也注意我把xspeed和x 軸移動(dòng)速度相加,y 軸移動(dòng)速度和 yspeed 相加.這個(gè)控制粒子的移動(dòng)方向.particleloop.xi=xspeed+float(rand()%60)-32.0f); / 隨機(jī)生成粒子速度particleloop.yi=yspeed+float(rand()%60)-30.0f); particleloop.zi=float(rand()%60)-30.0f);最后分配粒子一種新的顏色.變量
26、 col 保存一個(gè)數(shù)字從 1 到 11(12 種顏色),用這個(gè)變量去找紅,綠,度在顏色箱里面.下面第一行表示紅色的強(qiáng)度,數(shù)值保存在 colorscol0.所以如果 col 是 0,紅色的亮度就是 1.0f.綠色的和藍(lán)色的值用相同的方法.如果你不了解為什么紅色亮度為 1.0f 那 col 就為 0.我將一點(diǎn)點(diǎn)的解釋.看著程序的最前面.找到那行:sic GLfloat colors123.注意:12 行3 列.三個(gè)數(shù)字的第一行是紅色強(qiáng)度.第二行是綠色強(qiáng)度而且第三行是藍(lán)色強(qiáng)度.0,1和2下面描述的 1st,2nd 和 3rd 就是我剛提及的.如果 col 等于 0,要看第一個(gè)組.11 是最後一個(gè)組(
27、第 12 種顏色).particleloop.r=colorscol0;particleloop.g=colorscol1; particleloop.b=colorscol2;/ 設(shè)置粒子顏色下行描述加速度的數(shù)值是多少.通過(guò)小鍵盤 8 號(hào)鍵,增加 yg(y 地心引力)值.這引起向上的力.如果這個(gè)程序在循環(huán)外面,那么須生成另一個(gè)循環(huán)做相同的工作,因此最好放在這里/ 如果小鍵盤 8 被按住,增加Y 軸方向的加速度if (keysVK_NUMPAD8 & (particleloop.yg-1.5f) particleloop.yg-=0.01f;現(xiàn)在更改向右的拉力.如果按下 6 號(hào)鍵時(shí)增加向右的拉
28、力./ 如果小鍵盤 6 被按住,增加X(jué) 軸方向的加速度if (keysVK_NUMPAD6 & (particleloop.xg-1.5f) particleloop.xg-=0.01f;我僅僅為樂(lè)趣增加了一些代碼.兄弟產(chǎn)生很棒的效果:)通過(guò)按住 tab 鍵所有粒子都回到屏幕中心.所有的粒子在從新開(kāi)始運(yùn)動(dòng),再產(chǎn)生一個(gè)大的爆發(fā).在粒子變?nèi)踔?你最初的效果會(huì)再一次出現(xiàn)if (keysVK_TAB)particleloop.x=0.0f; particleloop.y=0.0f; particleloop.z=0.0f;/ 按 Tab 鍵,使粒子回到原點(diǎn)particleloop.xi=float(
29、rand()%50)-26.0f)*10.0f; / 隨機(jī)生成速度particleloop.yi=float(rand()%50)-25.0f)*10.0f; particleloop.zi=float(rand()%50)-25.0f)*10.0f;return TRUE;/ 繪制完畢成功返回代碼KillGLWindow(),CreateGLWindow()和 WndProc()中沒(méi)有改變,所以碼直接跳到Wain().我將重寫代我喜歡簡(jiǎn)單的代碼.在一行上不想包含很多東西,所以使代碼象一個(gè)清潔工:)下面的代碼檢查+是否被按下.如果它和slowdown 一起實(shí)現(xiàn)則 slowdown 減少 0.01f.粒子就可以較快速地移動(dòng).if (keysVK_ADD & (slowdown1.0f) slowdown-=0.01f;/ 按+號(hào),加速粒子下面的代碼檢查-是否被按下.如果它和slowdown 一起實(shí)現(xiàn)則 slowdown 增加 0.01f.粒子就可以較慢速地移動(dòng).我實(shí)質(zhì)的極限是 4.0f,我不想它太慢的運(yùn)動(dòng),你可以隨你的要求改變最大最小值if (keysVK_SUBTRACT & (slowdown25) / 空格鍵,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)液化氣輸送泵項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國(guó)洗潔精行業(yè)發(fā)展趨勢(shì)及營(yíng)銷策略分析報(bào)告
- 2024-2030年中國(guó)汽車車身及掛車制造行業(yè)規(guī)模發(fā)展分析及未來(lái)投資策略研究報(bào)告
- 2024-2030年中國(guó)永磁低速同步電動(dòng)機(jī)產(chǎn)業(yè)未來(lái)發(fā)展趨勢(shì)及投資策略分析報(bào)告
- 2024年人體器件復(fù)合材料項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 2022年大學(xué)心理學(xué)專業(yè)大學(xué)物理下冊(cè)月考試題C卷-附答案
- 商業(yè)展會(huì)家具布置方案
- 花崗巖墓碑?dāng)?shù)字化管理與服務(wù)方案
- 潔凈室風(fēng)管安裝方案設(shè)計(jì)
- 2022年大學(xué)化學(xué)專業(yè)大學(xué)物理下冊(cè)模擬考試試題C卷-附解析
- 心理健康擁抱幸福人生
- 煤礦行業(yè)安全用電培訓(xùn)課件
- 游泳館安全培訓(xùn)課件
- 知識(shí)產(chǎn)權(quán)結(jié)構(gòu)化面試問(wèn)題
- 《春夏秋冬》教學(xué)設(shè)計(jì)與指導(dǎo)課件(第一課時(shí))
- 《小學(xué)教育概統(tǒng)》課件
- 市場(chǎng)工作研討會(huì)接待方案
- 2024版職業(yè)發(fā)展規(guī)劃醫(yī)療人員的成長(zhǎng)路徑和晉升機(jī)會(huì)培訓(xùn)課件
- GH/T 1420-2023野生食用菌保育促繁技術(shù)規(guī)程松茸
- 工程造價(jià)審計(jì)投標(biāo)方案(技術(shù)標(biāo))
- PaaS開(kāi)發(fā)運(yùn)營(yíng)三級(jí)理論考試題庫(kù)(匯總)
評(píng)論
0/150
提交評(píng)論