本文整理汇总了C++中LPDIRECTDRAWSURFACE::QueryInterface方法的典型用法代码示例。如果您正苦于以下问题:C++ LPDIRECTDRAWSURFACE::QueryInterface方法的具体用法?C++ LPDIRECTDRAWSURFACE::QueryInterface怎么用?C++ LPDIRECTDRAWSURFACE::QueryInterface使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LPDIRECTDRAWSURFACE
的用法示例。
在下文中一共展示了LPDIRECTDRAWSURFACE::QueryInterface方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetDisplayMode
//.........这里部分代码省略.........
BLOCK = false;
return false;
}
ZeroMemory (&ddsd, sizeof (ddsd));
ddsd.dwSize = sizeof (ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
if(GUI.BilinearFilter)
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | (GUI.LocalVidMem ? DDSCAPS_LOCALVIDMEM : DDSCAPS_NONLOCALVIDMEM);
}
else
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
}
ddsd.dwWidth = SNES_WIDTH * pScale;
ddsd.dwHeight = SNES_HEIGHT_EXTENDED * pScale;
LPDIRECTDRAWSURFACE lpDDSOffScreen;
if (FAILED(lpDD->CreateSurface (&ddsd, &lpDDSOffScreen, NULL)))
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | (GUI.LocalVidMem ? DDSCAPS_NONLOCALVIDMEM : DDSCAPS_LOCALVIDMEM);
if(!GUI.BilinearFilter || FAILED(lpDD->CreateSurface (&ddsd, &lpDDSOffScreen, NULL)))
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
if(!GUI.BilinearFilter || FAILED(lpDD->CreateSurface (&ddsd, &lpDDSOffScreen, NULL)))
{
BLOCK = false;
return (false);
}
}
}
if (FAILED (lpDDSOffScreen->QueryInterface (IID_IDirectDrawSurface2,
(void **)&lpDDSOffScreen2)))
{
lpDDSOffScreen->Release();
BLOCK = false;
return (false);
}
lpDDSOffScreen2->PageLock(0);
lpDDSOffScreen->Release();
ZeroMemory (&ddsd, sizeof (ddsd));
if (pDoubleBuffered)
{
ddsd.dwSize = sizeof( ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
GUI.NumFlipFrames = 3;
ddsd.dwBackBufferCount = 2;
}
else
{
GUI.NumFlipFrames = 1;
ddsd.dwSize = sizeof (ddsd);
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
}
LPDIRECTDRAWSURFACE lpDDSPrimary;
dErr = lpDD->CreateSurface (&ddsd, &lpDDSPrimary, NULL);
if( FAILED(dErr) )
{
if (pDoubleBuffered)
示例2: GetDXVersion
//-----------------------------------------------------------------------------
// Name: GetDXVersion()
// Desc: This function returns the DirectX version number as follows:
// 0x0000 = No DirectX installed
// 0x0100 = DirectX version 1 installed
// 0x0200 = DirectX 2 installed
// 0x0300 = DirectX 3 installed
// 0x0500 = At least DirectX 5 installed.
// 0x0600 = At least DirectX 6 installed.
// 0x0601 = At least DirectX 6.1 installed.
// 0x0700 = At least DirectX 7 installed.
// 0x0800 = At least DirectX 8 installed.
//
// Please note that this code is intended as a general guideline. Your
// app will probably be able to simply query for functionality (via
// QueryInterface) for one or two components.
//
// Please also note:
// "if( dwDXVersion != 0x500 ) return FALSE;" is VERY BAD.
// "if( dwDXVersion < 0x500 ) return FALSE;" is MUCH BETTER.
// to ensure your app will run on future releases of DirectX.
//-----------------------------------------------------------------------------
DWORD GetDXVersion()
{
DIRECTDRAWCREATE DirectDrawCreate = NULL;
DIRECTDRAWCREATEEX DirectDrawCreateEx = NULL;
DIRECTINPUTCREATE DirectInputCreate = NULL;
HINSTANCE hDDrawDLL = NULL;
HINSTANCE hDInputDLL = NULL;
HINSTANCE hD3D8DLL = NULL;
HINSTANCE hDPNHPASTDLL = NULL;
LPDIRECTDRAW pDDraw = NULL;
LPDIRECTDRAW2 pDDraw2 = NULL;
LPDIRECTDRAWSURFACE pSurf = NULL;
LPDIRECTDRAWSURFACE3 pSurf3 = NULL;
LPDIRECTDRAWSURFACE4 pSurf4 = NULL;
DWORD dwDXVersion = 0;
HRESULT hr;
// First see if DDRAW.DLL even exists.
hDDrawDLL = LoadLibrary(_T("DDRAW.DLL"));
if( hDDrawDLL == NULL )
{
dwDXVersion = 0;
OutputDebugString(_T("Couldn't LoadLibrary DDraw\r\n"));
return dwDXVersion;
}
// See if we can create the DirectDraw object.
DirectDrawCreate = (DIRECTDRAWCREATE)GetProcAddress( hDDrawDLL, "DirectDrawCreate" );
if( DirectDrawCreate == NULL )
{
dwDXVersion = 0;
FreeLibrary( hDDrawDLL );
OutputDebugString(_T("Couldn't GetProcAddress DirectDrawCreate\r\n"));
return dwDXVersion;
}
hr = DirectDrawCreate( NULL, &pDDraw, NULL );
if( FAILED(hr) )
{
dwDXVersion = 0;
FreeLibrary( hDDrawDLL );
OutputDebugString(_T("Couldn't create DDraw\r\n"));
return dwDXVersion;
}
// So DirectDraw exists. We are at least DX1.
dwDXVersion = 0x100;
// Let's see if IID_IDirectDraw2 exists.
hr = pDDraw->QueryInterface( IID_IDirectDraw2, (VOID**)&pDDraw2 );
if( FAILED(hr) )
{
// No IDirectDraw2 exists... must be DX1
pDDraw->Release();
FreeLibrary( hDDrawDLL );
OutputDebugString(_T("Couldn't QI DDraw2\r\n"));
return dwDXVersion;
}
// IDirectDraw2 exists. We must be at least DX2
pDDraw2->Release();
dwDXVersion = 0x200;
//-------------------------------------------------------------------------
// DirectX 3.0 Checks
//-------------------------------------------------------------------------
// DirectInput was added for DX3
hDInputDLL = LoadLibrary(_T("DINPUT.DLL"));
if( hDInputDLL == NULL )
{
// No DInput... must not be DX3
pDDraw->Release();
FreeLibrary( hDDrawDLL );
OutputDebugString(_T("Couldn't LoadLibrary DInput\r\n"));
return dwDXVersion;
}
//.........这里部分代码省略.........
示例3: InitFail
//.........这里部分代码省略.........
} else {
ddsd.ddsCaps.dwCaps =
(/*DDSCAPS_OFFSCREENPLAIN | */DDSCAPS_SYSTEMMEMORY);
}
ddsd.ddpfPixelFormat.dwSize = sizeof(ddsd.ddpfPixelFormat);
ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB;
// if ( surface->format->palette ) {
// ddsd.ddpfPixelFormat.dwFlags |= DDPF_PALETTEINDEXED8;
// }
#if defined(NONAMELESSUNION)
ddsd.ddpfPixelFormat.u1.dwRGBBitCount = surface->format->BitsPerPixel;
ddsd.ddpfPixelFormat.u2.dwRBitMask = surface->format->Rmask;
ddsd.ddpfPixelFormat.u3.dwGBitMask = surface->format->Gmask;
ddsd.ddpfPixelFormat.u4.dwBBitMask = surface->format->Bmask;
#else
ddsd.ddpfPixelFormat.dwRGBBitCount = 16;//surface->format->BitsPerPixel;
ddsd.ddpfPixelFormat.dwRBitMask = 0xF800;//surface->format->Rmask;
ddsd.ddpfPixelFormat.dwGBitMask = 0x07E0;//surface->format->Gmask;
ddsd.ddpfPixelFormat.dwBBitMask = 0x001F;//surface->format->Bmask;
#endif
/* Create the DirectDraw video surface */
//if ( requested != NULL ) {
// g_pDDSOne = requested;
//} else
{
hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSBack, NULL);
#if 0
if ( hRet != DD_OK ) {
SetDDerror("DirectDraw2::CreateSurface", hRet);
goto error_end;
}
hRet = g_pDDSBack->QueryInterface(
&IID_IDirectDrawSurface3, (LPVOID *)&g_pDDSOne);
g_pDDSBack->Release();
if ( hRet != DD_OK ) {
SetDDerror("DirectDrawSurface::QueryInterface", hRet);
goto error_end;
}
#endif
}
#if 0
if ( (flag & SDL_HWSURFACE) == SDL_HWSURFACE ) {
/* Check to see whether the surface actually ended up
in video memory, and fail if not. We expect the
surfaces we create here to actually be in hardware!
*/
hRet = g_pDDSOne->GetCaps(&ddsd.ddsCaps);
if ( hRet != DD_OK ) {
//SetDDerror("DirectDrawSurface3::GetCaps", hRet);
goto error_end;
}
if ( (ddsd.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY) !=
DDSCAPS_VIDEOMEMORY ) {
//SDL_SetError("No room in video memory");
goto error_end;
}
} else {
/* Try to hook our surface memory */
ddsd.dwFlags = DDSD_LPSURFACE;
ddsd.lpSurface = pixelData;//surface->pixels;
hRet = g_pDDSOne->SetSurfaceDesc(
&ddsd, 0);
if ( hRet != DD_OK ) {
//SetDDerror("DirectDraw2::SetSurfaceDesc", hRet);
示例4: GetDXVersion
//.........这里部分代码省略.........
if( DDHinst == 0 )
{
(*pdwDXVersion) = 0;
(*pdwDXPlatform) = 0;
FreeLibrary( DDHinst );
return;
}
// See if we can create the DirectDraw object.
DirectDrawCreate = (DIRECTDRAWCREATE)GetProcAddress( DDHinst, "DirectDrawCreate" );
if( DirectDrawCreate == 0 )
{
(*pdwDXVersion) = 0;
(*pdwDXPlatform) = 0;
FreeLibrary( DDHinst );
OutputDebugString( "Couldn't LoadLibrary DDraw\r\n" );
return;
}
hr = DirectDrawCreate( NULL, &pDDraw, NULL );
if( FAILED(hr) )
{
(*pdwDXVersion) = 0;
(*pdwDXPlatform) = 0;
FreeLibrary( DDHinst );
OutputDebugString( "Couldn't create DDraw\r\n" );
return;
}
// So DirectDraw exists. We are at least DX1.
(*pdwDXVersion) = 0x100;
// Let's see if IID_IDirectDraw2 exists.
hr = pDDraw->QueryInterface( IID_IDirectDraw2, (VOID**)&pDDraw2 );
if( FAILED(hr) )
{
// No IDirectDraw2 exists... must be DX1
pDDraw->Release();
FreeLibrary( DDHinst );
OutputDebugString( "Couldn't QI DDraw2\r\n" );
return;
}
// IDirectDraw2 exists. We must be at least DX2
pDDraw2->Release();
(*pdwDXVersion) = 0x200;
///////////////////////////////////////////////////////////////////////////
// DirectX 3.0 Checks
///////////////////////////////////////////////////////////////////////////
// DirectInput was added for DX3
DIHinst = LoadLibrary( "DINPUT.DLL" );
if( DIHinst == 0 )
{
// No DInput... must not be DX3
OutputDebugString( "Couldn't LoadLibrary DInput\r\n" );
pDDraw->Release();
FreeLibrary( DDHinst );
return;
}
DirectInputCreate = (DIRECTINPUTCREATE)GetProcAddress( DIHinst,
"DirectInputCreateA" );
if( DirectInputCreate == 0 )
示例5: SetDisplayMode
//.........这里部分代码省略.........
BLOCK = false;
return false;
}
ZeroMemory (&ddsd, sizeof (ddsd));
ddsd.dwSize = sizeof (ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
if(GUI.ddrawUseVideoMemory)
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | (GUI.ddrawUseLocalVidMem ? DDSCAPS_LOCALVIDMEM : DDSCAPS_NONLOCALVIDMEM);
}
else
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
}
ddsd.dwWidth = SNES_WIDTH * pScale;
ddsd.dwHeight = SNES_HEIGHT_EXTENDED * pScale;
LPDIRECTDRAWSURFACE lpDDSOffScreen;
if (FAILED(lpDD->CreateSurface (&ddsd, &lpDDSOffScreen, NULL)))
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | (GUI.ddrawUseLocalVidMem ? DDSCAPS_NONLOCALVIDMEM : DDSCAPS_LOCALVIDMEM);
if(!GUI.ddrawUseVideoMemory || FAILED(lpDD->CreateSurface (&ddsd, &lpDDSOffScreen, NULL)))
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
if(!GUI.ddrawUseVideoMemory || FAILED(lpDD->CreateSurface (&ddsd, &lpDDSOffScreen, NULL)))
{
BLOCK = false;
return (false);
}
}
}
if (FAILED (lpDDSOffScreen->QueryInterface (IID_IDirectDrawSurface2,
(void **)&lpDDSOffScreen2)))
{
lpDDSOffScreen->Release();
BLOCK = false;
return (false);
}
lpDDSOffScreen2->PageLock(0);
lpDDSOffScreen->Release();
ZeroMemory (&ddsd, sizeof (ddsd));
if (pDoubleBuffered)
{
ddsd.dwSize = sizeof( ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
GUI.NumFlipFrames = 3;
ddsd.dwBackBufferCount = 2;
}
else
{
GUI.NumFlipFrames = 1;
ddsd.dwSize = sizeof (ddsd);
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
}
LPDIRECTDRAWSURFACE lpDDSPrimary;
dErr = lpDD->CreateSurface (&ddsd, &lpDDSPrimary, NULL);
if( FAILED(dErr) )
{
if (pDoubleBuffered)