Je charge un shader avec ce qui suit :
ID3DXBuffer* errors = 0 ; ID3DXEffect *effect = 0 ;
HR(D3DXCreateEffectFromFile( gd3dDevice, L "Shader.fx", 0, 0, D3DXSHADER_DEBUG|D3DXSHADER_SKIPOPTIMIZATION, 0, &effect, &errors) ) ;
for(int i = 0 ; i < 3 ; i++) { if(errors) { errors->Release() ; if(effect) effect->Release() ;
e HR(D3DXCreat L "Shader.fx", 0, 0, D3DXSHADER_DEBUG, 0, effect, &errors)) ; } else break ; }
Ce dernier essaie de charger un shader et s'il obtient une erreur ou un avertissement, il essaie encore 3 fois avant d'abandonner.
J'ai constaté que lorsque je ferme l'application, D3DX m'envoie le message suivant :
D3DX : FUITES DE MÉMOIRE DÉTECTÉES : 2 allocations non libérées (486 octets)
et cela ne se produit QUE lorsqu'il y a des erreurs (c'est-à-dire qu'il entre dans la boucle). Je ne sais vraiment pas pourquoi cela se produit, des idées ?
OK, j'ai corrigé le problème, c'était juste un problème de logique, 'error' n'a pas eu 'release' appelé sur lui au troisième essai, d'où le problème.