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.
faut-il verrouiller la surface avec LockRect() avant l'écriture, puis UnlockRect().
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();
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
merci d'avance
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);
[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]
Partager