problème avec les point sprites
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
Code:
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;
} |
je créé le v-buffer de cette manière :
Code:
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; |
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:
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..... :?