1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
int DirectX::init(HWND hWnd)
{
D3DDISPLAYMODE d3ddm;
D3DDEVTYPE devtype;
D3DCAPS9 caps;
d3d=Direct3DCreate9(D3D_SDK_VERSION);
if(!d3d)
return 0;
if(d3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)<0)
return 0;
ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed=TRUE;
d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
d3dpp.EnableAutoDepthStencil=TRUE;
d3dpp.AutoDepthStencilFormat=D3DFMT_D16;
d3dpp.BackBufferFormat=d3ddm.Format;
if(d3d->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&caps)<0)
{
MessageBox(hWnd,"Pas de device HAL, le programme fonctionnnera,
mais lentement","Attention",MB_OK|MB_ICONWARNING|MB_SETFOREGROUND);
devtype=D3DDEVTYPE_REF;
}
else
{
devtype=D3DDEVTYPE_HAL;
}
if (d3d->CreateDevice(D3DADAPTER_DEFAULT,devtype,hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dpp,&device)<0)
return 0;
return 1;
}
void DirectX::adjust(int largeur, int hauteur)
{
D3DXMATRIX proj;
d3dpp.BackBufferWidth=largeur;
d3dpp.BackBufferHeight=hauteur;
device->Reset(&d3dpp);
device->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
device->SetRenderState(D3DRS_AMBIENT,0xffffff);
D3DXMatrixPerspectiveFovLH(&proj,D3DX_PI/4,((float largeur)/hauteur,1.0f,500.0f);
device->SetTransform(D3DTS_PROJECTION,&proj);
} |
Partager