|
我最近在做一个下雨的模拟程序。。。里面遇到这样的问题。。
我试图用开在内存中的页面lpa 把后备缓冲中的图像拷贝到lpa中
程序如下:
static long old_clock, new_clock; //延时变量
new_clock=GetTickCount();
if( new_clock > old_clock + 35 )
{
old_clock=new_clock;
lpDDSBack->BltFast( 0, 0, lpBack , &rect, DDBLTFAST_NOCOLORKEY); //画背景到后备缓冲中
//==============================画雨点到后备缓冲里====================================
if ( Rain.IsRain() )
{
for (int i=0;i<Rain.C_Rain;i++)
{
Rain.Rain();
if (Rain.R_drop.IsRand)
{
rect1=GetRect(Rain.R_drop.state*54,0,Rain.R_drop.state*54+54,50);
lpDDSBack->BltFast( Rain.R_drop.x, Rain.R_drop.y, lpRain , &rect1, DDBLTFAST_SRCCOLORKEY);
}
}
}
//===========此时后备缓冲中有背景画面和雨点的共同组合====================================
lpsrc->BltFast( 0, 0, lpDDSBack , &rect, DDBLTFAST_NOCOLORKEY); //把后备画面拷贝到里面
lpalpha=MixTwoFace(lpsrc,lpdest,30); //混合后备画面内容+dest内容 到lpaphla
lpDDSBack->BltFast( 0, 0, lpalpha, &rect, DDBLTFAST_NOCOLORKEY);//把混合后的结果方回后备缓冲
lpDDSPrimary->Flip( NULL, 0 );
}
但结果不尽人意。。。。。。谁知道为什么啊??我知道原因肯定出在lpsrc->BltFast( 0, 0, lpDDSBack , &rect, DDBLTFAST_NOCOLORKEY);
。。。。到底为什么。。。
|
|