Problème d'affichage avec DirectX

Résolu
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 15 oct. 2006 à 23:51
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 18 oct. 2006 à 16:46
Bonsoir tout le monde, je fais un jeu en DirectX et j'ai un problème d'affichage : l'image ne s'affiche que partiellement, il y a plein de carrés et de traits noirs par dessus. Je pense que le problème vient du Zbuffer ou du StencilBuffer car quand je désactive "EnableAutoDepthStencil" tout marche correctement... Je vous mets le bout de mon code qui initialise l'affichage :

  D3D = Direct3DCreate9( D3D_SDK_VERSION );

    D3DPRESENT_PARAMETERS d3dpp;
    D3DDISPLAYMODE d3ddm;
    D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.Windowed = true;   
    d3dpp.BackBufferWidth = 1024;
    d3dpp.BackBufferHeight = 768;
    d3dpp.BackBufferFormat = d3ddm.Format;
    d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
    d3dpp.EnableAutoDepthStencil = true;
    d3dpp.AutoDepthStencilFormat = D3DFMT_D24X8;
    d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

    D3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &Device );
    Device->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
    Device->SetRenderState( D3DRS_ZENABLE, true );
    Device->SetRenderState( D3DRS_LIGHTING, true );
    Device->SetRenderState(D3DRS_ALPHATESTENABLE, true);
    Device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
    Device->SetRenderState(D3DRS_ALPHAREF, 0x00);
    Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
    Device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
    Device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
    Device->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);
    Device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
    Device->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);
    Device->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
    Device->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
    Device->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );

Si vous avez une idée...
Merci !

Vince

3 réponses

eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 oct. 2006 à 16:46
Ca y'es j'ai enfin trouvé, c'était tout bête J'avais oublié d'effacer le Z-buffer à chaque frame en utilisant D3DCLEAR_ZBUFFER...

Vince
3
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
16 oct. 2006 à 14:52
Essais de remplacer ca voir :
d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
0
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
16 oct. 2006 à 20:27
Non le problème continue....

Vince
0
Rejoignez-nous