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