이장에서 다이렉스X의 가장 기본적인 초기화를 다룰 것이다. 다이렉트 X 디바이스를 초기화 하고 
RenderScreen에서 백그라운드 칼라를 시간에 따라 랜덤하게 변경시킨다.

먼저 다이렉트 X의 함수를 사용 하기 위해서는 인터페이스와 디바이스를 선언한후, InitD3D()에서 
초기화 한다.

LPDIRECT3D8             g_d3d        = NULL; // our main d3d8 interface
LPDIRECT3DDEVICE8       g_d3d_Device = NULL; // our d3d8 device


HRESULT InitD3D(HWND hWnd)
{
	g_d3d = Direct3DCreate8 (D3D_SDK_VERSION);
	
	D3DDISPLAYMODE d3ddm;
    g_d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm );

	D3DPRESENT_PARAMETERS d3dpp; 
    ZeroMemory (&d3dpp, sizeof(d3dpp));
    d3dpp.Windowed = true;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = d3ddm.Format;

    g_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, 
						D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_d3d_Device);

	return S_OK;
}


- D3D8 인터페이스를 만들어 디바이스에 만든다.
- 현재 스크린(D3DDISPLAYMODE)의 해상도와 각종 정보를 그대로 유지한다.
  D3D 디바이스를 만들기 전에 두번째 버퍼를 surface를 알필요가 있다.
  D3D 디바이스를 만들때 D3DDEVTYPE_HAL를 이용하기 위해서는 첫 번째 파라미터에 D3DADAPTER_DEFAULT를 넘겨줘야 한다.

D3D 디바이스를 만들게 되면 RenderLoop()에서 그리게 된다.

HRESULT RenderLoop ()
{
	static int c=0;
    g_d3d_Device->Clear (0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB (0, 0, c++), 1.0f, 0);
    g_d3d_Device->BeginScene ();
    g_d3d_Device->EndScene ();
    g_d3d_Device->Present (NULL, NULL, NULL, NULL);
	return S_OK;
}

Clear 함수에서 c++ 값을 변화시켜 검은색에서 파란색으로 화면의 색깔을 바꿀수 있다.
Present 함수를 호출 함으로써 Back Buffer를 보낸다.

프로그램을 종료 할때 시스템에서 가져온 리소스를 해제시킨다.
즉 디바이스를 해제 시켜야 한다...   

void DestroyDirect3D8 (void)
{
    _RELEASE_ (g_d3d_Device);
    _RELEASE_ (g_d3d);
}