첫 번째 D3D 프로그램

#include <d3d8.h>

LPDIRECT3D8             g_pD3D       = NULL; //     D3D  
LPDIRECT3DDEVICE8       g_pd3dDevice = NULL; // D3D  

//    D3D
HRESULT InitD3D( HWND hWnd )
{
	//   D3D  
	if( NULL == ( g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ) ) )
		return E_FAIL;

	//          
	D3DDISPLAYMODE d3ddm;
	if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
		return E_FAIL;

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

	//   D3D  
	//      :          
	//      :         (HAL)
	//      :    
	//      :        
	//      :     
	//      :   D3D    
	if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, 
					  D3DDEVTYPE_HAL, 
					  hWnd,
					  D3DCREATE_SOFTWARE_VERTEXPROCESSING,
					  &d3dpp, 
					  &g_pd3dDevice ) ) )
	{
		return E_FAIL;
	}

	return S_OK;
}

//   D3D
VOID Cleanup()
{
	if( g_pd3dDevice != NULL) 
		g_pd3dDevice->Release();

	if( g_pD3D != NULL)
		g_pD3D->Release();
}

//   
VOID Render()
{
	if( NULL == g_pd3dDevice )
		return;

	//        
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );

	//       
	g_pd3dDevice->BeginScene();

	//           

	//       
	g_pd3dDevice->EndScene();

	//       
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}


//     
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch( msg )
	{
		case WM_DESTROY:	//     
			PostQuitMessage( 0 );
			return 0;

		case WM_PAINT:		//   
			Render();
			ValidateRect( hWnd, NULL );
			return 0;
	}

	return DefWindowProc( hWnd, msg, wParam, lParam );
}

// WinMain    
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
	//      
	WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
			  GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
			  "D3D Tutorial", NULL };
	RegisterClassEx( &wc );

	//     
	HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 01: CreateDevice", 
				  WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
				  GetDesktopWindow(), NULL, wc.hInstance, NULL );

	//    D3D
	if( SUCCEEDED( InitD3D( hWnd ) ) )
	{ 
		//     
		ShowWindow( hWnd, SW_SHOWDEFAULT );
		UpdateWindow( hWnd );

		//     
		MSG msg; 
		while( GetMessage( &msg, NULL, 0, 0 ) )
		{
			TranslateMessage( &msg );
			DispatchMessage( &msg );
		}
	}

	//     
	Cleanup();
	UnregisterClass( "D3D Tutorial", wc.hInstance );
	return 0;
}

OK!아주 간단합니다. 사실 이것은 DX8SDK의 예 프로그램입니다. 위의 프로그램을 프로젝트에 넣고 컴파일하고 실행하면 이런 창을 볼 수 있습니다.
 
지금, 당신의 첫 번째 D3D 프로그램이 완성되었습니다. 비록 지금은 어떤 실제 작업도 하지 않았지만, 그것은 확실히 D3D 프로그램입니다!

좋은 웹페이지 즐겨찾기