Salut !
J'essai d'afficher un écran bleu en plein écran mais le programme plante en me disant : "Unhandled exception at 0x0040126e in loader3ds DX 9.0c.exe: 0xC0000005: Access violation reading location 0x00000000."
j'ai lancé le debugger et la variable IDirect3DDevice9 *myIDirect3DDevice9 a une valeur nulle. Le compilateur s'arrete sur la méthode clear de la méthode de rendu. Cette méthode de rendu une fois mise en commentaire permet au programme de ne pas planter. Que puis je faire ?
voici un peu de code (a la fin le winMain) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class direct3dApp { private : //manageWindow myWindow ; IDirect3D9 *D3dDevice ;//cré un device IDirect3DDevice9 *myIDirect3DDevice9 ; public: direct3dApp(); void deviceCreation(); void rendering(); void freeD3d();//mettre un destructeur a la place };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 hResult=D3dDevice->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &presentParameters, &myIDirect3DDevice9);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void direct3dApp::rendering() { myIDirect3DDevice9->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_STENCIL|D3DCLEAR_ZBUFFER, r 0x000000EE, //Colour to clear to (AARRGGBB) 1.0f, 0 ); myIDirect3DDevice9->BeginScene() ; myIDirect3DDevice9->EndScene() ; myIDirect3DDevice9->Present(NULL, NULL, NULL, NULL); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { myWindow = new manageWindow() ; direct3dApp *myDirect3dApp = new direct3dApp() ; myWindow->createWindow(hInstance); ShowCursor(FALSE); myDirect3dApp->deviceCreation(); MSG msg; while(1) { if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } myDirect3dApp->rendering(); if( myWindow->getCloseWindow() ) return 0; } }
Partager