최상단 광고

2012년 4월 9일 월요일

Flip


/*************************************************************************/
/* Flip
/*************************************************************************/
LPDIRECTDRAWSURFACE7 m_pDDSPrimary;
LPDIRECTDRAWSURFACE7 m_pDDSBack;
LPDIRECTDRAWSURFACE7 m_pDDSOffScreen;
DDSURFACEDESC2 m_ddsd;
.....

/////////////////////////////////////////////////////////////////////////////////////////////////
//프리아머리 서페이스와, 백 서페이스, 오프 스크린 생성
ZeroMemory( &m_ddsd, sizeof(m_ddsd) );
m_ddsd.dwSize = sizeof(m_ddsd);
m_ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
m_ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
m_ddsd.dwBackBufferCount = 1;

if (FAILED(m_lpdd->CreateSurface(&m_ddsd, &m_pDDSPrimary, NULL)))
{
  MessageBox( NULL, "CreateSurface 실패했습니다.", "에러", MB_OK );
  return FALSE;
}

DDSCAPS2 ddscaps;
ZeroMemory( &ddscaps, sizeof(ddscaps) );
ddscaps.dwCaps = DDSCAPS_BACKBUFFER;

if( FAILED(m_pDDSPrimary->GetAttachedSurface(&ddscaps, &m_pDDSBack)) )
{
    MessageBox( NULL, "GetAttachedSurface 실패했습니다.", "에러", MB_OK );
 
    return FALSE;
}

ZeroMemory( &m_ddsd, sizeof(m_ddsd) );
m_ddsd.dwSize = sizeof(m_ddsd);
m_ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
m_ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
m_ddsd.dwWidth = 640;
m_ddsd.dwHeight = 480;

if (FAILED(m_lpdd->CreateSurface(&m_ddsd, &m_pDDSOffScreen, NULL)))
{
    MessageBox( NULL, "CreateSurface 실패했습니다.", "에러", MB_OK );
    return FALSE;
/////////////////////////////////////////////////////////////////////////////////////////////////
.....

m_pDDSBack->Blt( NULL, g_pGame->m_pDDSOffScreen, NULL, DDBLTFAST_WAIT, NULL );
m_pDDSPrimary->Flip( NULL, DDFLIP_WAIT );

댓글 없음: