Problème d'inclusion de directx
Bonjour
J'aurais voulu inclure directx dans un programme utilisant les MFC. J'ai récuperé le code d'une application Win32 fonctionnelle avec une classe DirectX:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
class DirectX
{
public:
DirectX();
~DirectX();
LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 device;
D3DPRESENT_PARAMETERS d3dpp;
int init(HWND hWnd);
void adjust(int largeur, int hauteur);
}; |
voila les fonctions:
Code:
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);
} |
Seulement mystère une erreur se génère au niveau de la fonction adjust:
Code:
device->Reset(&d3dpp);
Pourquoi? Init est bien appelé et largeur et hauteur ne sont pas nulles.
Quelqu'un saurait-il comment m'aider?
raphchar