IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

[Direct3D] Problème de restauration après perte de focus


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut [Direct3D] Problème de restauration après perte de focus
    Salut,

    J'ai le problème décrit ici :
    http://jeux.developpez.com/faq/direc...ES_perte_focus

    Je vois bien DEVICELOST j'attends comme indiqué d'avoir DEVICENOT_RESET avant d'appeler ma fonction reset. Ca marche mais le problème c'est qu'une fois avoir fait le reset mon appel à "BeginScene" sur le device 3D (fait dans le Render()) renvoie une erreur.

    D'où ça peut venir ?

    Voici mon code :

    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
     
    			HRESULT hr;
    			hr=pD3DDevice9->TestCooperativeLevel();
     
    			if (SUCCEEDED(hr)) hr = Render();
     
    			while (D3DERR_DEVICELOST == hr)
    			{
    				do
    				{
    					Sleep(1000);
    					hr = pD3DDevice9->TestCooperativeLevel();
    				}
    				while (hr != D3DERR_DEVICENOTRESET);
     
    				if (FAILED(pD3DDevice9->Reset(&d3dpp)))
    				{
    					hr = D3DERR_DEVICELOST;
    				}
    			}

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Toutes les ressources mentionnées dans la Q/R de la FAQ que tu cites doivent être libérées avant de pouvoir faire un Reset sur le device. Visiblement tu ne le fais pas.

    Tu devrais aussi vérifier les retours de tes fonctions, et utiliser le debug DirectX (voir FAQ un peu plus haut).

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Citation Envoyé par Laurent Gomila
    Toutes les ressources mentionnées dans la Q/R de la FAQ que tu cites doivent être libérées avant de pouvoir faire un Reset sur le device. Visiblement tu ne le fais pas.

    Tu devrais aussi vérifier les retours de tes fonctions, et utiliser le debug DirectX (voir FAQ un peu plus haut).
    Merci pour ce début de piste, effectivement je n'avais pas lu suffisamment attentivement. Je n'utilise aucune ressource des types mentionnés, enfin je pense. J'utilisais une D3DDXFONT, mais j'ai supprimé sa création. Hélas ça ne change rien, je précise que le reset marche bien mais c'est le BeginScene() qui suit qui ne marche pas.

    Peux-tu jeter un oeil à mon code de test ci-joint ? Ma façon de perdre le focus c'est d'appuyer sur Ctrl+Alt+Suppr.
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    je précise que le reset marche bien mais c'est le BeginScene() qui suit qui ne marche pas
    Il renvoie quoi ? Que dit le debug DirectX ?

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    J'ai fait la manip pour debugger (debug version + output level au max dans le control panel), et le dbmon ne m'envoie rien du tout...

    Par contre quand je fais du pas à pas dans le code qui s'exécute après la perte de focus je vois que le reset marche bien et qu'ensuite dans le Render j'ai la fonction DrawPrimitiveUP qui me renvoie -2005530516 (bref un truc pas bien) puis dans les autres appels de Render c'est BeginScene qui me renvoie la même chose.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    J'ai fait la manip pour debugger (debug version + output level au max dans le control panel), et le dbmon ne m'envoie rien du tout...
    Le debug DirectX renvoie toujours quelque chose. Tu voulais dire qu'il ne renvoie aucun avertissement ? Ou bien tu l'as loupé ?

    -2005530516
    DirectX utilities -> DirectX error lookup

    HRESULT: 0x8876086c (2289436780)
    Name: D3DERR_INVALIDCALL
    Description: Invalid call
    Severity code: Failed
    Facility Code: FACILITY_D3D (2166)
    Error Code: 0x086c (2156)
    Ensuite, voir la doc sur pourquoi telle fonction peut renvoyer ce code.

Discussions similaires

  1. Perte de focus d'une JFrame après un toFront()
    Par MonsieurSmith dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 16/01/2009, 10h38
  2. datagrid case a cocher validation apres perte de focus
    Par Julien666 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/01/2008, 21h03
  3. Réponses: 4
    Dernier message: 05/10/2006, 13h10
  4. Problème de perte de focus
    Par capitaine dans le forum IHM
    Réponses: 4
    Dernier message: 09/06/2006, 16h48
  5. Réponses: 9
    Dernier message: 02/02/2006, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo