|
|
memset(&ddsd,0,sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
backsurface-> Lock(NULL,&ddsd,DDLOCK_SURFACEMEMORYPTR ¦DDLOCK_WAIT,NULL);
int mem_pitch=(int)ddsd.lPitch;
UCHAR *VRAM=(UCHAR*)ddsd.lpSurface;
for(int i=0;i <1000;++i)
{
UCHAR color=rand()%256;
int x=rand()%1024;
int y=rand()%768;
VRAM[x+y*mem_pitch]=color;
}
backsurface-> Unlock(NULL);
while(primarysurface-> Flip(NULL, DDFLIP_WAIT)!=DD_OK);
上面这段代码是随机在后备表面上绘制1000个点,再调用Filp()页面切换,可以正常工作。下面我想在backsurface上随机绘制矩形,再调用Flip函数显示:
DDBLTFX ddbltfx;
RECT rect;
ddbltfx.dwFillColor =rand()%256;
rect.left =rand()%1024;
rect.top =rand()%768;
rect.right =rand()%1024;
rect.bottom =rand()%768;
if(FAILED(backsurface-> Blt(&rect,NULL,NULL,DDBLT_COLORFILL &brvbar;DDBLT_WAIT,&ddbltfx)))
{
MessageBox(NULL,"BLT失败","失败提示",MB_OK);
return 1;
}
while(primarysurface-> Flip(NULL, DDFLIP_WAIT)!=DD_OK);
却显示出我的错误提示框,Blt函数调用失败。。。。。。。。。。这是什么原因呢???请高手提示一下?
|
|