Bonjour,
J'ai réussi à créer un programme qui a pour but de créer une fenetre windows dans laquelle je crée 16 fenetres filles.
Puis, je tente de faire un rendu très basique (afficher tout bleu) de directX dans chacune de ses fenetres filles.
J'ai créer une structure qui contient des informations sur chaque fille :
1 2 3 4 5 6 7 8
|
struct MyChildWnd
{
int index;
HWND hWnd;
LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 d3ddev;
}; |
Ensuite, je stocke chacune des structures dans une liste:
list<MyChildWnd*> listChild;
Dans la boucle infinie, je tente de faire le rendu et lorsque je ferme la fenetre, j'ai un problème d'accés (violation). Qu'en pensez vous?
1 2 3 4 5 6
|
list<MyChildWnd*>::iterator it;
for (it = listChild.begin(); it != listChild.end(); it++)
{
render_frame((*it)->d3ddev);
} |
Et voici ma fonction render_frame () :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
void render_frame(LPDIRECT3DDEVICE9 d3ddev)
{
// clear the window to a deep blue
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 40, 100), 1.0f, 0);
d3ddev->BeginScene(); // begins the 3D scene
// do 3D rendering on the back buffer here
d3ddev->EndScene(); // ends the 3D scene
d3ddev->Present(NULL, NULL, NULL, NULL); // displays the created frame
return;
} |
à savoir, mes fenetres s'affichent bien... quand je passe au débugger , il y a un problème lorsque je ferme ma fenetre...
Le but de ce programme est de déterminer combien de rendu, il est possible de réaliser avec DirectX... Mais je ne comprends pas pourquoi il y a un accés violation...?
Partager