bonjour tout le monde,
j'ai repris le code des point sprites fourni dans le sdk et j'ai voulu l'implémenter dans mon petit moteur 3d.... problème : je n'arrive pas à afficher ces fameux point sprites !!!
impossible de trouver d'ou vient l'erreur mais je verrais bien un flag mal initialisé...
j'initialise mes p-sprites
je créé le v-buffer de cette manière :
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 HRESULT InitParticules() { m_pParticleSystem = new CParticleSystem( 512, 2048, 0.03f ); m_pParticleTexture = NULL; m_dwNumParticlesToEmit = 1; m_dwParticleColor = COLOR_WHITE; D3DXCreateTextureFromFileExA(g_pd3dDevice, //device "particule.bmp", //file name D3DX_DEFAULT, //width D3DX_DEFAULT, //height 0, //mip levels NULL, //usage D3DFMT_UNKNOWN, //texture color format D3DPOOL_MANAGED, //memory class D3DX_FILTER_BOX, //filter D3DX_FILTER_BOX, //mip filter 0, //color key NULL, //source info NULL, //pallette &m_pParticleTexture); //texture object return S_OK; }
j'affiche mes p-sprites de la manière suivante ( la fonction render est issue de la classe fournie dans le sdk, tout comme la fonction update )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if(FAILED(hr = pd3dDevice->CreateVertexBuffer( m_dwDiscard * sizeof(POINTVERTEX), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY | D3DUSAGE_POINTS, D3DFVF_POINTVERTEX, D3DPOOL_DEFAULT, &m_pVB ))) { return E_FAIL; } return S_OK;
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 // particules D3DXVECTOR3 vEmitterPostion( 0.0f, 0.0f, 0.0f ); // Update particle system m_pParticleSystem->Update( ElapsedTime, m_dwNumParticlesToEmit, g_clrColor[m_dwParticleColor], g_clrColorFade[m_dwParticleColor], 8.0f, vEmitterPostion ); // Draw particles g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE ); g_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE ); g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE ); g_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE ); //g_pd3dDevice->SetTexture(0, m_pParticleTexture ); m_pParticleSystem->Render( g_pd3dDevice );*/ // on restaure les paramètres standards g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,FALSE); g_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE ); //g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
voilà, je sais c très long mais j'ai mis tout ce que je pouvais... franchement ça fait des nuits que je suis là dessus et vraiment je craque !!!
si quelqu'un peut m'aider.....
Partager