Bonjour à tous.
D'abord je me présente je suis tout nouveau et voici mon premier poste.
Et merci pour ce future accueil chaleureux ^^

Voici mon problème : je possède une classe D3D9RenderSystem dans laquelle ce trouve cette propriété privée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
IDirect3D9* mD3D9Object;
et une méthode SetupRenderSystem donc voici le code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
bool D3D9RenderSystem::SetupRenderSystem(HWND Hwnd)
{
 
	HRESULT hr = 0;
 
	// Etape 1 : Création de l'objet IDirect3D9
    mD3D9Object = Direct3DCreate9(D3D_SDK_VERSION);
    if(mD3D9Object == NULL)
    {
         ::MessageBox(Hwnd, "Direct3DCreate9 - Failed", "FAILED", MB_OK);
         return false;
    }
 
	// Etape 2: Teste si la carte graphique supporte vertex processing
	D3DCAPS9 caps;
 
	// [para] D3DADAPTER_DEFAULT : physical display adapter
	// [para] D3DDEVTYPE_HAL : type du device (D3DDEVTYPE_HAL -> hardware (cg) / D3DDEVTYPE_REF -> software (proc))
	// [para] caps : structure D3DCAPS9
	mD3D9Object->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
 
	int vp = 0;
	if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
		vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
	else
		vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
 
	// Etape 3 : On récupère de la taille de la fenêtre
    RECT Rect;
    GetClientRect(Hwnd, &Rect);
 
	// Etape 4: On renseigne la structure D3DPRESENT_PARAMETERS qui permet d'initialiser les paramètres du device 
	D3DPRESENT_PARAMETERS d3dpp;
	d3dpp.BackBufferWidth            = Rect.right - Rect.left;			// Largeur du back buffe en pixel
	d3dpp.BackBufferHeight           = Rect.bottom - Rect.top;			// Hauter du back buffer en pixel
	d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;					// Format de pixel du back buffer
	d3dpp.BackBufferCount            = 1;								// Nombre de back buffer
	d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;				// Type de l'échantillon
	d3dpp.MultiSampleQuality         = 0;								// Qualité de l'échantillon
	d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD;			// Mode d'échange avec le back buffer
	d3dpp.hDeviceWindow              = Hwnd;							// Handle de la fenêtre associé avec le device (_d3d9)
	d3dpp.Windowed                   = true;							// Fenêtré ou plein écran ?
	d3dpp.EnableAutoDepthStencil     = true;							// Activation du stencil buffer et du depth buffer
	d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;					// Format du depth/stencil buffer
	d3dpp.Flags                      = 0;								// Flag additionnels concerant les buffers
	d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;			// Taux de rafraichissement
	d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;	//
 
	// Etape 5: Création du device.
	hr = mD3D9Object->CreateDevice(
		D3DADAPTER_DEFAULT,					// Physical display adapter
		D3DDEVTYPE_HAL,						// Type du device
		Hwnd,								// Fenêtre associé au device
		vp,									// vertex processing
	    &d3dpp,								// Present parameters structure
	    &mDevice);							// Retourne le device crée
 
	if(FAILED(hr))
	{
		// On réessaie en réglant le buffer de profondeur sur 16 bits
		d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
 
		hr = mD3D9Object->CreateDevice(
			D3DADAPTER_DEFAULT,
			D3DDEVTYPE_HAL,
			Hwnd,
			vp,
			&d3dpp,
			&mDevice);
 
		// Si la création échoue une nouvelle fois on supprime le device et l'application stoppe
		if(FAILED(hr))
		{
			mD3D9Object->Release(); 
			::MessageBox(0, L"CreateDevice() - FAILED", L"Failed", MB_OK);
			return false;
		}
	}
        return true;
}
Maintenant j'utilise la librarie boost donc mon objet Direct3D devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
shared_ptr<IDirect3D9> mD3D9Object;
L'initialisation devient donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mD3D9Object.reset(Direct3DCreate9(D3D_SDK_VERSION));
Seulement quand je lance mon application tous va bien, mais à la sortie le compilateur me lève une exception de type Assert

Je pense que ca vient de l'initialisation de mon object Direct3D mais je ne vois pas comment le faire correctement et impossible avec un new.

Can you help me ??