www.pudn.com > SkyBox.rar > D3DInit.cpp


#include "D3DInit.h" 
 
 
CD3DInit::CD3DInit() 
{ 
	g_pD3D			= NULL; 
	g_pd3dDevice	= NULL;	 
} 
 
 
CD3DInit::~CD3DInit() 
{ 
	REL(g_pD3D); 
	REL(g_pd3dDevice); 
} 
 
HRESULT CD3DInit::InitD3D(HWND hWnd) 
{ 
	if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) 
	{ 
		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			= FALSE; 
	d3dpp.SwapEffect		= D3DSWAPEFFECT_DISCARD; 
	d3dpp.BackBufferFormat	= d3ddm.Format; 
	d3dpp.BackBufferWidth	= d3ddm.Width; 
	d3dpp.BackBufferHeight	= d3ddm.Height; 
 
	d3dpp.FullScreen_RefreshRateInHz	= D3DPRESENT_RATE_DEFAULT; 
	d3dpp.PresentationInterval			= D3DPRESENT_INTERVAL_ONE; 
 
	d3dpp.AutoDepthStencilFormat	= D3DFMT_D16; 
	d3dpp.EnableAutoDepthStencil	= true; 
	 
	// 
	D3DCAPS9 caps; 
	g_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps); 
	int vp = 0; 
	if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) 
		vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; 
	else 
		vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; 
	// 
 
	if (FAILED( g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, 
									 D3DDEVTYPE_HAL, 
									 hWnd, 
									 vp, 
									 &d3dpp, 
									 &g_pd3dDevice))) 
	{ 
		return E_FAIL; 
	} 
 
 
	return S_OK; 
} 
 
 
void CD3DInit::Render() 
{ 
	if (g_pd3dDevice == NULL) 
		return; 
 
	g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 
								 D3DCOLOR_XRGB(0,0,0),1.0f,0); 
	 
	g_pd3dDevice->BeginScene(); 
	 
 
	g_Camera.ProcInput(); 
	this->SetCamera(); 
	g_pSkyBox->Render(); 
 
	g_pd3dDevice->EndScene(); 
	g_pd3dDevice->Present(NULL, NULL, NULL, NULL); 
 
} 
 
BOOL CD3DInit::GameInit(HWND hWnd) 
{ 
	if (SUCCEEDED(this->InitD3D(hWnd))) 
	{ 
		g_pSkyBox = new CSkyBox(g_pd3dDevice); 
		g_pSkyBox->InitVB(); 
		g_pSkyBox->SetTexture("Image/Dawn_F.jpg",0); 
		g_pSkyBox->SetTexture("Image/Dawn_B.jpg",1); 
		g_pSkyBox->SetTexture("Image/Dawn_U.jpg",2); 
		g_pSkyBox->SetTexture("Image/Dawn_D.jpg",3); 
		g_pSkyBox->SetTexture("Image/Dawn_L.jpg",4); 
		g_pSkyBox->SetTexture("Image/Dawn_R.jpg",5); 
		g_pSkyBox->SetTexture("Image/Cloud.tga",6); 
 
 
		return true; 
	} 
	else 
	{ 
		return false; 
	} 
	return true; 
 
} 
 
 
void CD3DInit::SetCamera() 
{ 
	D3DXMATRIX matView; 
	g_Camera.getViewMatrix(&matView); 
	g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView); 
 
	D3DXMATRIX matProj; 
	D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 1000.0f); 
	g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj); 
}