|
请问高手们:
现在很多例子都是在FullScreen下的。有没有在窗口模式下的??
下面是对于主表面,背面,缓冲面的连接问题。也请高手指点指点小弟呀.
在全屏模式下是不是一般都是先创建主表面然后就是连接后缓冲接口??
代码如下:
LPDIRECTDRAWSURFACE7 lpDDSPrimary; //主表面
LPDIRECTDRAWSURFACE7 lpDDSBack; //背面
LPDIRECTDRAWSURFACE7 lpDDSOther; //缓冲面
DDSURFACEDESC2 ddsd;
DDRAW_INIT_STRUCT(ddsd);
//ddsd.dwFlags = DDSD_CAPS;
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.dwBackBufferCount = 1;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
if (FAILED(lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL)))
{
WriteToLog("创建主表面错误");
return FALSE;
}//end if
//下面将连接后缓冲接口
ddsd.ddsCaps.dwCaps=DDSCAPS_BACKBUFFER;
if(FAILED(lpDDSPrimary->GetAttachedSurface(&ddsd.ddsCaps,&lpDDSBack)))
{
WriteToLog("连接后缓冲接口错误");
return FALSE;
}
这段代码没有错误。
现在我的问题来了。如果是在全屏模式下可以用lpDDSPrimary->GetAttachedSurface(&ddsd.ddsCaps,&lpDDSBack);来连接后缓冲。
那么在窗口模式下是不是就不能连接后缓冲了呢?
我找了很多源码,结果发现里面居然用的是创建后缓冲,然后再Blt后缓冲到主表面去.是不是只能这样呢?为什么不用BltFast呢?还有没有别的方法呢? |
|