免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
用粒子系統(tǒng)模擬煙花效果
//定義粒子系統(tǒng)狀態(tài)#define PARTICLE_STATE_DEAD 0#define PARTICLE_STATE_ALIVE 1//定義粒子的類型#define PARTICLE_TYPE_FLICKER 0#define PARTICLE_TYPE_FADE 1//定義粒子顏色#define PARTICLE_COLOR_RED 0#define PARTICLE_COLOR_GREEN 1#define PARTICLE_COLOR_BLUE 2#define PARTICLE_COLOR_WHITE 3//定義粒子數(shù)#define MAX_PARTICLES 512//顏色調色板索引范圍#define COLOR_RED_START 32#define COLOR_RED_END 47#define COLOR_GREEN_START 96#define COLOR_GREEN_END 111#define COLOR_BLUE_START 144#define COLOR_BLUE_END 159#define COLOR_WHITE_START 16#define COLOR_WHITE_END 31//風力與重力影響x軸和y軸上速度大小const float particle_wind = 0.0f;const float particle_gravity = 0.0f;typedef struct tagPARTCLE { int state; //粒子狀態(tài) int type; //粒子效果類型 int x,y; //位置 int xv,yv; //粒子速度 int curr_color; //當前顏色 int start_color; //開始顏色調色板索引 int end_color; //結束顏色調色板索引 int counter; //生命周期,幀數(shù) int max_count; //最大生命周數(shù)}PARTICLE, *PARTICLE_PTR;class Particle {public: PARTICLE particles[MAX_PARTICLES]; Particle() { Init_Reset_Particles(); }public: void Init_Reset_Particles(void); void Start_Particle(int type, int color, int count, float x, float y, float xv, float yv); void Process_Particles(void); void Draw_Particles(void); //模擬粒子爆炸效果 void Start_Particle_Explosion(int type, int color, int count, int x, int y, int xv, int yv, int num_particles); void Start_Particle_Ring(int type, int color, int count, int x, int y, int xv, int yv, int num_particles);};


#include 'particle.h'void Particle::Init_Reset_Particles(void){ for (int index=0; index< max_particles;="" index++)="" {="" if="" (particles[index].state="=" particle_state_dead)="" {="" set="" index="" pindex="index;" break;="" }="" end="" if="" }="" did="" we="" find="" one="" if="" (pindex="=-1)" return;="" set="" general="" state="" info="" particles[pindex].state="PARTICLE_STATE_ALIVE;" particles[pindex].type="type;" particles[pindex].x="x;" particles[pindex].y="y;" particles[pindex].xv="xv;" particles[pindex].yv="yv;" particles[pindex].counter="0;" particles[pindex].max_count="count;" set="" color="" ranges,="" always="" the="" same="" switch(color)="" {="" case="" particle_color_red:="" {="" particles[pindex].start_color="COLOR_RED_START;" particles[pindex].end_color="COLOR_RED_END;" }="" break;="" case="" particle_color_green:="" {="" particles[pindex].start_color="COLOR_GREEN_START;" particles[pindex].end_color="COLOR_GREEN_END;" }="" break;="" case="" particle_color_blue:="" {="" particles[pindex].start_color="COLOR_BLUE_START;" particles[pindex].end_color="COLOR_BLUE_END;" }="" break;="" case="" particle_color_white:="" {="" particles[pindex].start_color="COLOR_WHITE_START;" particles[pindex].end_color="COLOR_WHITE_END;" }="" break;="" break;="" }="" end="" switch="" what="" type="" of="" particle="" is="" being="" requested="" if="" (type="=" particle_type_flicker)="" {="" set="" current="" color="" particles[pindex].curr_color="RAND_RANGE(particles[pindex].start_color," particles[pindex].end_color);="" }="" end="" if="" else="" {="" particle="" is="" fade="" type="" set="" current="" color="" particles[pindex].curr_color="particles[pindex].start_color;" }="" end="" if="" }void="" particle::process_particles(void){="" for="" (int="" index="0;">= particles[index].max_count) { particles[index].state = PARTICLE_STATE_DEAD; } } else { if (++particles[index].counter >= particles[index].max_count) { particles[index].counter = 0; if (++particles[index].curr_color>particles[index].end_color) { particles[index].state = PARTICLE_STATE_DEAD; } } } //屏幕邊界測試 if (particles[index].x>SCREEN_WIDTH || particles[index].x<0 ||="" particles[index].y="">SCREEN_HEIGHT|| particles[index].y<0) {="" particles[index].state="PARTICLE_STATE_DEAD;" }="" }="" }}void="" particle::draw_particles(void){="" ddraw_lock_back_surface();="" for="" (int="" index="0;">=SCREEN_WIDTH || x<0 ||="" y="">=SCREEN_HEIGHT || y<0) continue;="" draw_pixel(x,y,particles[index].curr_color,back_buffer,="" back_lpitch);="" }="" }="" ddraw_unlock_back_surface();}void="" particle::start_particle_explosion(int="" type,="" int="" color,="" int="" count,="" int="" x,="" int="" y,="" int="" xv,="" int="" yv,="" int="" num_particles){="" while(--num_particles="">=0) { int ang=rand()%360; float vel = 2+rand()%4; Start_Particle(type, color, count, x+RAND_RANGE(-50,50), y+RAND_RANGE(-50,50), xv+cos_look[ang]*vel, yv+sin_look[ang]*vel); }}void Particle::Start_Particle_Ring(int type, int color, int count, int x, int y, int xv, int yv, int num_particles){ // this function starts a particle explosion at the given position and velocity // note the use of look up tables for sin,cos // compute random velocity on outside of loop float vel = 200+rand()%4; while(--num_particles >=0) { // compute random trajectory angle int ang = rand()%360; // start the particle Start_Particle(type,color,count, x,y, xv+cos_look[ang]*vel, yv+sin_look[ang]*vel); } // end while}


本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用Javascript打造粒子引擎(第一部分)
houdini 官方2小時超詳細逼真瀑布流體制作教程(解算篇)
ZedGraph怎樣在生成曲線時隨機生成不一樣的顏色
NeHe OpenGL第十九課:粒子系統(tǒng)
粒子群算法
歸并排序,快速排序,堆排序,冒泡排序 c語言源代碼
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服