d3dinit.cpp
来自「用directx实现的天空盒 使用纹理贴图」· C++ 代码 · 共 125 行
CPP
125 行
#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);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?