Je souhaite utliser des fonctions du GDI ( FrameRect(),FillRect()) sur une surface , j'utilise les fonctions GetDC') et ReleaseDC(), qui me renvoie un hdc valide, mais lorsque je transfère cette surface vers mon backbuffer, je n'ai pas d'affichage, alors que les fonctions utilisées ne renvoient pas de message d'erreur.
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
lpD3DDevice // pointeur device
lpD3DBackBuffer // backbuffer écran
 
 
//création de la surface
 
D3DFORMAT d3dformat=D3DFMT_X8R8G8B8;	lpD3DDevice->CreateOffscreenPlainSurface(Largeur,Hauteur,d3dformat,
                                           D3DPOOL_DEFAULT,&lpMapSurface,NULL);//
 
 
// affichage
	int L_mini=128;// largeur affichage 
	int H_mini=128;// hauteur affichage 
 
        hr=lpD3DDevice->BeginScene();
 
	hr=lpMapSurface->GetDC(&hdc);
 
	GetWindowRect(&rc_wnd);
 
	SetRect(	&rc_map,
				rc_wnd.right-L_mini,		// x
				rc_wnd.bottom-H_mini,		// y
				rc_wnd.right,
				rc_wnd.bottom
			);
 
	int test=FillRect(hdc,&rc_map,hbr_vert);	
	test=FrameRect(hdc,&rc_map,hbr_blanc);
 
	hr=lpMapSurface->ReleaseDC(hdc);
 
// transfert vers backbuffer
	hr=D3DXLoadSurfaceFromSurface(	lpD3DBackBuffer,NULL,				
							   &rc_map,			
							   lpMapSurface,	
							   NULL,	
                                                           NULL,	
                                                           D3DX_DEFAULT ,
							   0); 
 
	hr=lpD3DDevice->EndScene();
faut-il verrouiller la surface avec LockRect() avant l'écriture, puis UnlockRect().

Y a t-il des spécificités à avoir au moment de la création du backbuffer ou de la surface à utiliser avec le GDI ?

J'ai utilisé D3DXLoadSurfaceFromFile pour valider le format de ma surface qui m'affiche alors le fichier bmp chargé.

De plus je n'arrive pas à obtenir de hdc de mon backbuffer

dont voici l'initialisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
	// création backbuffer au format écran
	d3dformat=D3DFMT_X8R8G8B8 ;
	lpD3DBackBuffer=CreateSurface(LE,HE,d3dformat);
merci d'avance


[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]