Bonjour à tous!
J'ai un problème qui doit être assez basique, mais que je n'arrive pas à résoudre : je n'arrive pas à afficher des primitives.
L'initialisation de DirectX (9) dans mon programme me semble bonne, de plus, je peux afficher du texte (avec ID3DXFont) et des lignes (avec LPD3DXLINE). Mais les primitives, pas moyen!!
Voici mon code pour afficher un rectangle :
Et la structure de mes vertex :
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 m_pd3dDevice->BeginScene(); DWORD c = D3DCOLOR_ARGB(255,255,0,0); VERTEX p0 = {100.0f,100.0f,1.0f,1.0f,c}; VERTEX p1 = {100.0f,200.0f,1.0f,1.0f,}; VERTEX p2 = {200.0f,200.0f,1.0f,1.0f,c}; VERTEX p3 = {200.0f,100.0f,1.0f,1.0f,c}; HRESULT hr; VERTEX obj[4]={p0,p1,p3,p2}; hr = m_pd3dDevice->CreateVertexBuffer(4*mVSize,0,mVfmt,D3DPOOL_DEFAULT,&mVertexBuffer,NULL); void *ptr; hr = mVertexBuffer->Lock(0,4*mVSize,&ptr,0); memcpy(ptr,obj,4*mVSize); hr = mVertexBuffer->Unlock(); m_pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE); hr = m_pd3dDevice->SetFVF(mVfmt); hr = m_pd3dDevice->SetStreamSource(0,mVertexBuffer,0,mVSize); hr = m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2); if(mVertexBuffer) { hr = mVertexBuffer->Release(); mVertexBuffer=NULL; } m_pd3dDevice->EndScene(); m_pd3dDevice->Present( NULL, NULL, NULL, NULL );
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct { float x, y, z; float rhw; DWORD color; } VERTEX;
J'ai essayé les autres types de primitive, je n'ai pas de résultat non plus.
Pouvez vous me dire si vous voyez un probleme dans mon code?
Sinon, que pourrait il manquer à l'initialisation par exemple, sachant que je peux afficher du texte et des lignes?
Merci d'avance!
Partager