hge:关于HTARGET及粒子系统
实现一个粒子系统:
初始化:par = GameEngine::rm()->GetParticleSystem("par"); //使用hgeResourceManager
par->Fire();
更新:par->info.nEmission=(int)(dx*dx+dy*dy)*20; //粒子数目,2的倍数。
par->MoveTo(x,y); //这是的(x,y)相对主窗口的左上角
par->Update(dt);
绘制:par->Render();
以上代码即可实现很煊的粒子系统。
HTARGET为一个渲染目标,前几天一直为其坐标迷茫中。现理解如下:
初始化:
hge->Target_Create( 400 ,600,false); \\渲染面为400*600大小。
tarSprite=new hgeSprite(hge->Target_GetTexture(target),0.0f,0.0f,400.0f ,600.0f ); \\取全部渲染面
绘制:
hge->Gfx_BeginScene(target); \\设置渲染面为当前绘制目标
hge->Gfx_BeginScene(target)与hge->Gfx_EndScene()之间实现对渲染面的绘制,如用par->Render();则在渲染面上渲染粒子系统。
接着,在hge->Gfx_BeginScene(0)与hge->Gfx_EndScene()之间实现对tarSprite的绘制。这里tarSprite可以绘制很多次,来实现多粒子。
需要注意的是,这里tarSprite->Render(x,y)的坐标相对主窗口左上角(0,0)。而因为是在hge->Gfx_BeginScene(target)与hge->Gfx_EndScene()之间实现的粒子绘制,所以这里的par->MoveTo(x,y)的(x,y)是相对HTARGET的左上角的。