首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

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

查询显卡支持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,然后再改标志位看看能行不

热点排行