为什么CreateSurface在有点电脑上能成功,有的电脑上不能成功呢? 大家帮忙看看啊!
DDSURFACEDESC ddsd;
LPDIRECTDRAWSURFACE surface;
BOOL bAlloc = TRUE;
memset (&ddsd, 0, sizeof (DDSURFACEDESC));
ddsd.dwSize = sizeof (DDSURFACEDESC);
ddsd.ddpfPixelFormat.dwSize = sizeof (DDPIXELFORMAT);
ddsd.dwFlags = DDSD_HEIGHT | DDSD_WIDTH | DDSD_CAPS;
ddsd.dwHeight = m_Height;
ddsd.dwWidth = m_Width;
ddsd.ddpfPixelFormat.dwFlags = DDPF_FOURCC;
#if USE_YV12
ddsd.ddpfPixelFormat.dwFourCC = FOURCC_YV12;
#else
ddsd.ddpfPixelFormat.dwFourCC = mmioFOURCC('U','Y','V','Y');
#endif
ddsd.dwFlags |= DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY | DDSCAPS_VIDEOMEMORY;
#if USE_OVERLAY_TRIPLE_BUFFERING
ddsd.dwFlags |= DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps |= DDSCAPS_COMPLEX | DDSCAPS_FLIP;
#endif
//ddsd.dwBackBufferCount = 2;
surface = NULL; //// AllocSurface (&ddsd);
if (surface == NULL)
{
#ifdef _DEBUG
OutputDebugString( "Alloc Overlay Surface failed ! " );
#endif //_DEBUG
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH ;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ;
ddsd.dwHeight = m_Height;
ddsd.dwWidth = m_Width;
ddsd.dwFlags |= DDSD_PIXELFORMAT;
ddsd.ddpfPixelFormat.dwSize = sizeof(ddsd.ddpfPixelFormat);
ddsd.ddpfPixelFormat.dwFlags = DDPF_FOURCC ;
ddsd.ddpfPixelFormat.dwFourCC = mmioFOURCC('U','Y','V','Y');
if (DD_OK != m_pDDraw->CreateSurface (pddsd,&surface, NULL))
return NULL;