读书人

查询显卡支持RGB但是创办surface失败

发布时间: 2013-03-12 11:19:35 作者: rapoo

查询显卡支持RGB,但是创建surface失败?
经过如下代码后,或者显卡支持的pixelformat类型。

DDPIXELFORMAT       ddpf;
ddpf.dwSize = sizeof( ddpf );
if ( FAILED( lpDDSPrimary_CG_DaHeng->GetPixelFormat( &ddpf ) ) )
{
return Fail( "Couldn't get pixel format.\n" );
}

获知:
ddpf.flags == 0x00000040; //DDPF_RGB 也是0x00000040
ddpf.dwRGBBitCount == 32;

但是,在执行如下代码时,失败了,
    DDSURFACEDESC       ddsd;
IDirectDrawSurface *pdds;
//
// create a DirectDrawSurface for this bitmap
//
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ;
ddsd.dwWidth = wid;
ddsd.dwHeight = hei;

ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB ;
ddsd.ddpfPixelFormat.dwRGBBitCount = 32;


HRESULT hr = pdd->CreateSurface(&ddsd, &pdds, NULL);
if ( hr != DD_OK)
{
const TCHAR *pSz = DXGetErrorDescription9(hr);

return NULL;
}


这是为啥, 求指点。


[解决办法]
引用:
引用:C/C++ code?12345678910111213141516171819DDSURFACEDESC ddsd; IDirectDrawSurface *pdds; // // create a DirectDrawSurface for this bitmap // ZeroMemo……

你直接调用GetPixelFormat来填充下pixelformat,然后再改标志位看看能行不

读书人网 >VC/MFC

热点推荐