利用SDL编程做一个简单的动画;
#include
#include
#include
int main(int argc,char **argv)
{
SDL_Surface*s;
SDL_Surface*i;
SDL_Eventevent;
int bAppRun=1;
//intbTopBottom=1;
intbTopBottom=1;
intbLeftRight=1;
Uint32Tstart,Tstop;
SDL_RectdRect,dScreen;
intret=SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
if(ret<0){printf("Init error\r\n");exit(-1);};
atexit(SDL_Quit);
s=SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
if(s==NULL){printf("cannot init 640*480*8\r\n");exit(-1);};
i=SDL_LoadBMP("./adobe.bmp");
if(i==NULL){printf("cannot load BMP\r\n");exit(-1);};
dRect.x=0;
dRect.y=0;
dRect.w=i->w;
dRect.h=i->h;
SDL_FillRect(s,NULL,SDL_MapRGB(s->format,25,255,255));
ret=SDL_BlitSurface(i,NULL,s,&dRect);
if(ret<0){printf("Bliterror!\r\n");SDL_FreeSurface(i);exit(-1);};
SDL_UpdateRect(s,0,0,i->w,i->h);
Tstart=SDL_GetTicks();
while(bAppRun==1)
{
if(SDL_PollEvent(&event))
{
switch(event.type)
{
caseSDL_KEYDOWN://
bAppRun=0;
break;
}
}
Tstop=SDL_GetTicks();
if((Tstop-Tstart)>15)
{
Tstart=Tstop;
SDL_FillRect(s,&dRect,SDL_MapRGB(s->format,255,255,255));
dRect.y+=3;
dRect.x+=2;
ret=SDL_BlitSurface(i,NULL,s,&dRect);
if(ret<0){printf("Blitsurfaceerror!\r\n");SDL_FreeSurface(i);exit(-1);};
SDL_Flip(s); //清缓冲区
} //end of>15
}//end ofwhile
SDL_FreeSurface(i);//释放图像
//SDL_Delay(2000);
exit(1);
}